どうも、Catoクラウドを担当している佐々木です。
今回は Catoクラウドの「Header Injection」 について紹介します。
最近、Microsoft365やGoogleアカウントについて、許可していないアカウントを利用させないようにしたい、といった
いわゆる「テナント制御」に関する問い合わせを多くいただきます。
Catoクラウド経由でテナント制御する際に利用する機能の一つ、それが「Header Injection」です。
テナント制御とは
テナント制限とは、会社や管理者が許可したアカウントのみWEBサービスを利用できるようにすることです。
※MicrosoftやGoogleで、会社のアカウントによるアクセスはOKだけど、個人アカウントでのアクセスはNG、を実現する機能です。
どうやってやってるの?
クライアントとインターネットの間にあるプロキシなどで、通信ヘッダーや認証プロセスを操作することで実現しています。
クライアント端末からAzure ADに対する認証の通信をプロキシ経由させます。
そのプロキシから送信されるパケットに許可対象の Azure AD テナントの情報を付与します(HTTPヘッダーとして付与)。
Microsoft365側での上記で挿入したヘッダーの値を参照することで、許可したテナントへのアクセスのみ許可され、
それ以外はブロックされるといった動作をします。
※Catoクラウド利用者は、上記のプロキシ=Catoクラウドと置き換えてください。
※Microsoftの仕様については、以下の公式サイトを参照ください。
つまり、プロキシ(=Catoクラウド)で実施しているのは、ヘッダーを挿入することです。
ブロックする/しないなどの「アクセス制御」は、Microsoft365などWEBサービスがやっています。
Catoクラウドでの実現方法
Catoクラウドを経由してテナント制御する場合、以下の機能を利用します。
Header Injection機能
設定した条件(アプリケーションやアカウント等)にマッチする通信が発生した際、パケットのヘッダーに任意の文字列を挿入します。
アクセス先のWEBサービス側で、任意の文字列がヘッダーに含まれるパケットのみ許可し、それ以外をブロックするなど、
といった制御をさせることで、テナント制御を実現します。
TLSインスペクション
トラフィックを検査するためTLSインスペクションを有効にする必要があります。
その他
過去のブログ記事「Catoクラウドでアプリケーションを制御するには」でも紹介があった通り、
Catoクラウドの「Application Control」機能でもテナント制御は可能です。
気になる方は上記記事をご確認ください。
動作イメージ
例えば、Microsoft365へのテナント制御を実施する場合、以下のような動作をします。
① ユーザーがMicrosoft365にアクセスし、サインインを試みます。
② トラフィックは「Catoクラウド」に送られ、CMAで設定したヘッダー(Microsoft 365が指定したもの)を挿入します
⇒これがHeader Injectionの機能です。
③ Catoクラウド経由でトラフィックをMicrosoft365に転送します。
④ Microsoft365で、ヘッダー値を検索します。
⑤ 正しいヘッダー値を持っている場合、アクセスが許可され、正しくない場合、アクセスに失敗します。
Microsoft365へのテナント制御をやってみた
今回は、問い合わせが多い「Microsoft365へのテナント制御」をテストしてみました。
注意事項
ここから読み始めた方もいるかもしれないので再掲します。
Catoクラウドで実施しているのは、ヘッダーを挿入することです。
ブロックする/しないなどの「アクセス制御」は、Microsoft365などWEBサービスがやっています。
テスト条件
- テスト内容:Microsoft365について、アカウントAのアクセスはOKで、アカウントA以外はアクセスさせない
- 端末:Windows 11
- Catoクライアント:5.10.34.2284
Catoの設定
CMAで「Security」>「Application Control」>「Header Injection」から以下のように設定します。
- ログインを許可したいアカウントを定義しています
- アプリケーションは「Azure Active Directory」を選択してください
- 「Injected Headers」で以下の設定をしてください
Header Name:Restrict-Access-To-Tenants / Header Value:Microsoftアカウントのprimary domainを入力
Header Name:Restrict-Access-Context / Header Value:Microsoftアカウントのテナント IDを入力
- コンシューマー向けのアカウントをブロックするための設定です。
- アプリケーションは「Microsoft Live」を選択してください
- 「Injected Headers」で以下の設定をしてください
Header Name:sec-Restrict-Tenant-Access-Policy / Header Value:restrict-msa
テスト結果
まとめ
意外と簡単な設定でテナント制御ができました。
挿入するヘッダー値は変わりますが、GoogleやSlackなど他のアプリケーションでも同じように設定することで制御可能です。
・Microsoft365、Gmail、Slcakなど多くのアプリケーションに対応
・Catoクラウドではヘッダーを挿入しているだけで「実際の振る舞い」はWEBサービス側に依存
・Header Injectionだけではなく、TLSインスペクションも有効しないとダメ
上記以外の情報についても弊社の「Catoに関するFAQサイト」に多数情報ございますのでご参考にください。
最後に、SCSKではPoCから導入、運用まで幅広くCatoに関する支援を行っております。
本番構成への移行を見据えたPoC構成や、PoCでつまづきやすい点のサポートなど、豊富な導入実績を基にご支援いたします。
ぜひお声がけください!