🎯

Googleのコンテキストアウェアアクセスを使ったアクセス制御をやってみた(CrowdStrike連携もあるよ)

2023/12/07に公開

前回はCyber-sec+さんでAWSにおけるWAF(Web Application firewall)導入の記事を書きました。

https://zenn.dev/cybersec_plus/articles/195c4443dda7be

今回は分野が変わりまして、ゼロトラストな内容です。細かい設定手順は省略しています。また本記事を書くにあたり、実際にコンテキストアウェアアクセスを運用しているhayapiさんにレビューをしていただいております。(感謝!)

https://twitter.com/yo_hayasaka

なんの記事か

この記事は、コンテキストアウェアアクセス(以降、CAA)というGoogleの機能について書いた記事です。この記事を読むことで、CAAで何ができるかが理解できます。

また同時に以下のようなメリットがあります

  • CAAの設定の流れがわかり、導入の全体がイメージできる
  • 導入のポイントがわかる

想定読者

  1. CAAを検討している事業会社のコーポレートエンジニア、セキュリティエンジニア
  2. CAAを検証してみたいが、Google公式ドキュメントを読みこなすことに挫折した人

まとめ

  • CAAの機能は、どのアカウントをどんな条件でWebサービスにアクセスさせるかという制御ができます
  • アクセス条件は一例として、下記のような設定ができる
    • 会社所有のPC
    • 会社所有のPC かつ 安全である(CrowdStrikeスコアリング)
  • アクセス条件決めがゼロトラスト及び本製品における一番のポイントであり、まずはこれを整理して、決めることが重要です
    • どういったデバイス / ユーザをどのサービスに対して、どんな条件でアクセス許可するか

CAAとはなにか

CAAとはコンテキストアウェアアクセスというGoogleの機能です。どのGWSアカウントをどんな条件でWebアプリケーションにアクセスさせるかという設定および制御ができます。

下記の図でいうとPEP / PDPに相当します。


NISTから引用した論理コンポーネント(理想的なモデル)

ここでいうWebアプリケーションは、GWSサービス(Googleドライブなど)、GWS(Cloud Identity)をIdPとしてSAML連携しているサービスになります。

CAAの全体像

CAAの全体像です。

設定の流れ

設定の全体の流れは下記のとおりです。

  1. コンテキストアウェアアクセスの有効化
  2. Endpoint Verificationのインストール
  3. デバイスが登録されていることを確認
  4. アクセスレベルの作成
  5. アプリケーションへの割当
  6. テスト

ここでは細かい手順は紹介せず、全体像の紹介と各ステップでなにをしているのかを簡単にまとめています。

1.コンテキストアウェアアクセスの有効化

CCAの機能を有効化します。この機能を有効化したからと言って、いきなり制限がかかるわけではないので、深く考えず、ずばっと有効化していきます。下記が公式ドキュメントの該当ページになります。

コンテキストアウェア アクセスの有効と無効を切り替える のセクションを参照してください
https://support.google.com/a/answer/12643733?sjid=10586383886219357306-AP#turn-on-and-off

2.Endpoint Verificationのインストール

ChromeにEndpoint Verificationをインストールします。この拡張機能はPCの情報を収集する機能を持っています。

https://support.google.com/a/answer/9007320?sjid=7802541808377716373-AP#turn-on-and-off

勘がするどい人はこの時点で気づいたかもしれません。Chrome拡張機能を使用しているということは、Chromeブラウザを利用することが前提となっています。それ以外のブラウザでは、以降に設定するアクセス条件が有効に働かず、サービスへアクセスすることができなくなります。

3.デバイスが登録されていることを確認

GWSの管理画面からPCが登録されていることを確認します。

4.アクセスレベルの作成

ここが一番のポイントです。アクセスを許可するのための条件をここで設定します。アクセスレベルには基本モードと詳細モードがあります。このあとのアクセスレベルのユースケースのところで詳細に記載していますので、そこを参考に設定してください。まずは ユースケース1. 会社所有のPCからのみアクセスできるようにする を試すことをおすすめします。

https://support.google.com/a/answer/9262032?sjid=10586383886219357306-AP

5.アプリケーションの割当て

さきほど作成したアクセスレベルをアプリケーション(Webサービス)に割り当てます。割り当てる際にモニターモード(監視)とアクティブモードが選択できます。

ベストプラクティスとしては、まず モニターモード(監視) で設定してすることが推奨されています。このモニターモード(監視)は、実際にはアクセス拒否はされず、ログに拒否の結果が出力されるモードです。

6.テスト

テストするだけです。該当のGWSアカウントでログインし、割り当てたWebサービスにアクセスしてください。GWS管理コンソール > セキュリティ > 調査ツール > コンテキストアウェアアクセスのログ でログが確認できます。しかし、ここで出力されるログはアクセスが拒否されたときだけですので要注意です。

ちなみに私は最初このことを知らず、アクセスできたときのログがでないなぁと思いながら、30-60分ほど時間を費やしました。

モニターモード(監視)で想定通りの動作であることが確認できたら、アクティブモードに変更します。

アクセスレベルのユースケース

ゼロトラスト、引いてはCAAにおいてはアクセス条件(アクセスを許可するための条件)が重要です。よって、まずは日本語で、どんなアクセス条件にするのか決めて、それからシステム設定に落とし込んで、検証することをおすすめします。

もし、アクセス条件に使える情報がわからない場合は、こちらを参考にすると良いです。
https://support.google.com/a/answer/9587667
https://support.google.com/a/answer/11368990

会社所有という単語が出てきますが 会社から貸与されている会社資産のPC という意味です。

ユースケース1. 会社所有のPCからのみアクセスできるようにする

ユースケース1はいわゆる、デバイストラスト(デバイスを制限する)です。ここでは 基本モード を使用して設定する例をあげています。

会社所有という条件を入れることで、デバイスの制限(管理者がシリアル番号をアップロードして会社所有ステータスにしたデバイスのみ)ができ、またOSを制限することでPCからのみのアクセスとなります。PC以外にスマホからもアクセスさせたい場合は複雑になるため、要望があれば別の記事として書きます。

アクセス条件

会社所有 かつ (OSがWindows または macOS または Linux)

追加設定

会社所有という条件を満たすために、追加設定が必要となります。会社所有PCのシリアル番号を登録し、そのPCを会社所有ステータスに変更していきます。

手順としてはこちらの参考にしてください
https://support.google.com/a/answer/7129612?sjid=7802541808377716373-AP

ユースケース2. 会社所有のPCで安全なPCのみアクセスを許可する

ユースケース1の条件にプラスして、デバイスが安全かどうか、という条件を入れます。アクセス条件が少し複雑になってくると 詳細モード を使って設定する必要があります。

PCが安全かどうかを判定するためにCrowdStrikeの情報を利用します。CrowdStrikeはデバイスのセキュリティ状況を評価したスコアを持っています。


CrowdStrikeで確認できる特定デバイスのセキュリティスコア

このスコアを利用するために、CAAとCrowdStrikeを連携し、CrowdStrikeのデータをアクセスレベルとして設定できるようにします。(設定はここでは省きます、もし知りたい場合はTwitterから連絡ください)


GWSの管理画面で見えるCrowdStrike情報

条件式は下記になります。

会社所有 かつ デバイスが安全(スコアが90以上) かつ (OSがmacOS もしくは Windows)

device.is_corp_owned_device == true && 
device.vendors["CrowdStrike"].data["assessment.overall"] > 89.0 &&
(
  device.os_type == OsType.DESKTOP_MAC || device.os_type == OsType.DESKTOP_WINDOWS
) 

CrowdStrikeのマニュアルにはセキュリティスコアについて下記のように説明があります。
スコアが2つありますが、これらを合わせた総合スコアが 条件式で設定した assessment.overall になります。

つまり、CrowdStrikeで攻撃を検知した場合や脆弱な設定に変化した場合、セキュリティスコアが大きく下がることになります。そうするとCAAで設定している スコアが90以上 を満たせなくなり、サービスへのアクセスが自動でブロックされます。実運用するには、スコアのしきい値をいくつにするかの調整は必要になります。

感想

ここまででどんな機能を持っているのか、設定の全体の流れ、具体的にどんなアクセス条件が設定できるのか、理解できたかと思います。

CAAのメリットはアクセス条件を多様な条件で設定可能なことです。数年前にMicrosoft Entra IDの導入、管理をやっていましたが、条件付きアクセスで設定できる条件はあまり実用的なものがありませんでした。デバイストラストは機能的にはできましたが、Intuneの準拠ステータスがわりと不安定で運用できるものではないと当時、思っていました。

よって、アクセスを制御するという機能においては、CAAのほうが細かく条件設定ができるため、大きなアドバンテージがあると思います。(ただし、ゼロトラスト全体の仕組みとしてどうなのかと言われたら判断は難しい)

次の記事

次の記事ですが、WAF導入のケース2を書くか、非技術系のスタートアップにおけるコーポレートエンジニア 兼 セキュリティエンジニアの投資対効果について書くか、どちらかを2023年以内に出せたらと思っています。

Cyber-sec+

Discussion