Catoでやる「Microsoft 365」のテナント制御~「Header Injection」機能の紹介~

どうも、Catoクラウドを担当している佐々木です。

今回は Catoクラウドの「Header Injection」 について紹介します。

 

最近、Microsoft365やGoogleアカウントについて、許可していないアカウントを利用させないようにしたい、といった

いわゆる「テナント制御」に関する問い合わせを多くいただきます。

Catoクラウド経由でテナント制御する際に利用する機能の一つ、それが「Header Injection」です。

 

画⾯は2024年7⽉時点のものです。
機能アップデート等で変わる場合がありますので、あらかじめご了承ください。
「Header Injection」を利用するためには、セキュリティオプションのCASBが必須になります。
 

テナント制御とは

テナント制限とは、会社や管理者が許可したアカウントのみWEBサービスを利用できるようにすることです。

※MicrosoftやGoogleで、会社のアカウントによるアクセスはOKだけど、個人アカウントでのアクセスはNG、を実現する機能です。

 

どうやってやってるの?

クライアントとインターネットの間にあるプロキシなどで、通信ヘッダーや認証プロセスを操作することで実現しています。

例:Microsoft365の場合
クライアント端末からAzure ADに対する認証の通信をプロキシ経由させます。
そのプロキシから送信されるパケットに許可対象の Azure AD テナントの情報を付与します(HTTPヘッダーとして付与)。
Microsoft365側での上記で挿入したヘッダーの値を参照することで、許可したテナントへのアクセスのみ許可され、
それ以外はブロックされるといった動作をします。     

※Catoクラウド利用者は、上記のプロキシ=Catoクラウドと置き換えてください。
※Microsoftの仕様については、以下の公式サイトを参照ください。

 

 

つまり、プロキシ(=Catoクラウド)で実施しているのは、ヘッダーを挿入することです。

ブロックする/しないなどの「アクセス制御」は、Microsoft365などWEBサービスがやっています。

Catoクラウドがブロックしている、と誤解される方が多いのですが、
Header Injection機能では一切アクセス制御はしていません!!!

 

Catoクラウドでの実現方法

Catoクラウドを経由してテナント制御する場合、以下の機能を利用します。

 

Header Injection機能

設定した条件(アプリケーションやアカウント等)にマッチする通信が発生した際、パケットのヘッダーに任意の文字列を挿入します。

アクセス先のWEBサービス側で、任意の文字列がヘッダーに含まれるパケットのみ許可し、それ以外をブロックするなど、

といった制御をさせることで、テナント制御を実現します。

 

TLSインスペクション

トラフィックを検査するためTLSインスペクションを有効にする必要があります。

TLSインスペクションが有効でも、Bypassしている通信に対して「Header Injection機能」は動作しません。

 

その他

過去のブログ記事「Catoクラウドでアプリケーションを制御するには」でも紹介があった通り、

Catoクラウドの「Application Control」機能でもテナント制御は可能です。

気になる方は上記記事をご確認ください。

 

動作イメージ

例えば、Microsoft365へのテナント制御を実施する場合、以下のような動作をします。

テナント制御1

① ユーザーがMicrosoft365にアクセスし、サインインを試みます。

② トラフィックは「Catoクラウド」に送られ、CMAで設定したヘッダー(Microsoft 365が指定したもの)を挿入します

⇒これがHeader Injectionの機能です。

③ Catoクラウド経由でトラフィックをMicrosoft365に転送します。

④ Microsoft365で、ヘッダー値を検索します。

⑤ 正しいヘッダー値を持っている場合、アクセスが許可され、正しくない場合、アクセスに失敗します。

 

Microsoft365へのテナント制御をやってみた

今回は、問い合わせが多い「Microsoft365へのテナント制御」をテストしてみました。

 

注意事項

ここから読み始めた方もいるかもしれないので再掲します。

Catoクラウドで実施しているのは、ヘッダーを挿入することです。

ブロックする/しないなどの「アクセス制御」は、Microsoft365などWEBサービスがやっています。

Catoクラウドがブロックしている、と誤解される方が多いのですが、
Header Injection機能では一切アクセス制御はしていません!!!

 

テスト条件
  • テスト内容:Microsoft365について、アカウントAのアクセスはOKで、アカウントA以外はアクセスさせない
  • 端末:Windows 11
  • Catoクライアント:5.10.34.2284

 

Catoの設定

CMAで「Security」>「Application Control」>「Header Injection」から以下のように設定します。

CMA設定
▼「Header Injections」の有効化
左上のHeader Injections Enabledをクリックして、バーが緑色になるようにしてください。
 
▼ルール1(Microsoft365_テナント制御1)
  • ログインを許可したいアカウントを定義しています
  • アプリケーションは「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アカウントのテナントIDなどがわからない方は、以下を参考に調べてみてください。
※管理者権限がないと確認できません。
Microsoft 365 テナント ID を見つける

 

▼ルール2(Microsoft365_テナント制御2_コンシューマーアカウントをブロックする設定)
  • コンシューマー向けのアカウントをブロックするための設定です。
  • アプリケーションは「Microsoft Live」を選択してください
  • 「Injected Headers」で以下の設定をしてください

Header Name:sec-Restrict-Tenant-Access-Policy / Header Value:restrict-msa

 
最後に設定を保存して完了です。
※TLSインスペクションを有効にしていない場合、有効化してください。
 
Catoのバージョンアップに伴い、アプリケーション名などが変わる可能性がございますのでご注意ください。
ヘッダー値や動作は、Microsoftの仕様に依存しますので、思うように動作しない場合、Microsoftの仕様をご確認ください。
 

テスト結果

許可しているアカウントでのアクセスは許可されましたが、許可していないアカウントでのアクセスは以下のようにブロックされました。
 
▼許可していないアカウントでアクセスした結果
ブロック結果1
 
▼コンシューマー向けアカウントでアクセスした結果
 ※ちょっと画面が違ったので一応共有します。
ブロック結果2

まとめ

意外と簡単な設定でテナント制御ができました。

挿入するヘッダー値は変わりますが、GoogleやSlackなど他のアプリケーションでも同じように設定することで制御可能です。

 

・Catoクラウドでもテナント制御が可能
・Microsoft365、Gmail、Slcakなど多くのアプリケーションに対応
・Catoクラウドではヘッダーを挿入しているだけで「実際の振る舞い」はWEBサービス側に依存
・Header Injectionだけではなく、TLSインスペクションも有効しないとダメ

 

上記以外の情報についても弊社の「Catoに関するFAQサイト」に多数情報ございますのでご参考にください。

 

最後に、SCSKではPoCから導入、運用まで幅広くCatoに関する支援を行っております。

本番構成への移行を見据えたPoC構成や、PoCでつまづきやすい点のサポートなど、豊富な導入実績を基にご支援いたします。

ぜひお声がけください!

タイトルとURLをコピーしました