目次

Microsoft365のテナント制御で、会社以外のテナントへのアクセスを制御



Microsoft 365 (旧Office365) とは


オフィスからアクセスできるテナントを制御する方法

Micosoft365へのアクセスができる環境ですと、個人のOutlookなどにもアクセスできてしまいます。
それではよくないので、会社で利用しているテナントのみが利用できるうにします。

テナントアクセス制御の仕組み

  1. SSL(TLS) インターセプト(クライアントからの HTTPS 通信をプロキシで一度複合化する)
  2. プロキシ サーバーで、アクセスできるテナント名を記載したHTTPヘッダーを追加する
  3. Microsoft側で、ヘッダーに記載のあったテナントへのアクセスを拒否する


追加するヘッダー情報

プロキシ サーバーで以下の 2 つの HTTP ヘッダーを挿入します。

Restrict-Access-To-Tenants
#Contoso テナントと Fabrikam テナントのみアクセスを許可したい場合
Restrict-Access-To-Tenants: contoso.onmicrosoft.com,fabrikam.onmicrosoft.com


Restrict-Access-Context
テナント制限ログの出力先に Contoso テナントを指定する場合
Restrict-Access-Context: 456ff232-35l2-5h23-b3b3-3236w0826f3d


ヘッダー追加が必要なURL

ヘッダー追加が必要なURLは以下の3つになります。

login.microsoftonline.com
login.windows.net
login.microsoft.com


注意事項

httpプロトコルを使わないで認証を行うOutlookやSkypeのレガシー認証は、テナント制御の管理外となってしまいます
これらの製品を制御するためには、Modern Authentication (先進認証/ADAL) に対応したOffice製品が必要です。


Squidで実現する方法

SSL 証明書の作成
# openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
# openssl x509 -in squidCA.pem -outform DER -out squidCA.der
# cp squidCA.pem /usr/lib64/squid/


# /usr/lib64/squid/ssl_crtd -c -s /var/db/ssl_db  # ssl_db の初期化
# chown -R /var/db/ssl_db
/etc/squid/squid.conf
# Add HTTP Header
request_header_add Restrict-Access-To-Tenants example.onmicrosoft.com
request_header_add Restrict-Access-Context ba1539e0-eb37-4575-8c83-4b4b4bacea6e

# SSL BUMP Settings
http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/lib64/squid/squidCA.pem
ssl_bump bump all
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/db/ssl_db -M 4MB

squidCA.der をダブルクリックし、以下の信頼済みルート証明機関にインストール


参考