このドキュメントでは、コンテキストアウェア アクセスを使用してさまざまな種類のアプリとリソースを保護する方法について説明します。コンテキストアウェア アクセスは、認証の強度、デバイスのポスチャー、ネットワーク ロケーション、地理的位置などの属性に基づいてユーザーのアクセスを制御するセキュリティ アプローチです。この アプローチは、セキュリティ アクセスに基本的なユーザー ID を使用するだけではなく、ゼロトラスト セキュリティ モデルを実装して、全体的なセキュリティ ポスチャーを強化する際に役立ちます。ベスト プラクティスの詳細については、 コンテキストアウェア アクセスを使用してアプリとリソースを保護するためのベスト プラクティスをご覧ください。
アプリと Google Cloud リソースを保護するために、さまざまなコンテキスト要因の組み合わせに基づいて、きめ細かい アクセス制御を定義できます。 Access Context Manager を使用すると、アクセスレベルとサービス パラメータを含むアクセス ポリシーを定義できます。
このドキュメントは、Identity and Access Management(IAM)と Google Cloud リソースおよびアプリのセキュリティを担当するセキュリティ プロフェッショナルを対象としています。このドキュメントは、Access Context Manager, Google Cloud、IAM 管理について理解していることを前提としています。
アクセスレベル
アクセスレベルを使用すると、ユーザーとそのデバイスが特定の信頼レベルを満たすために満たす必要のある要件のセットを定義できます。
たとえば、 Access Context Manager を使用して、組織に次のアクセスレベルを構成できます。
- 基本: 最小レベルと見なされる基本的な要件のセット。
- 中: 従業員と企業デバイスが満たすことが想定される、より厳格な要件のセット。このアクセスレベルでは、外部人材ユーザーと企業以外のデバイスが除外される場合があります。
- 高: 特定の従業員とデバイスのみが満たす厳格な要件。
アクセスレベル自体は、ユーザーやデバイスに直接的な影響を与えません。アクセスレベルは要件を指定しますが、それらの要件を適用するユーザー、アプリ、リソースは定義しません。アクセスレベルは、特定のアプリやリソースへのアクセスを構成するときに参照できる、再利用可能な構成要素のようなものです。
Google Cloud では、このドキュメントで説明する次のものなど、さまざまな種類のアプリやリソースにアクセスレベルを使用できます。
- Google Workspace と 以外の他のアプリとサービス Google Cloud
- コンソールと Google Cloud API Google Cloud
- Virtual Private Cloud(VPC)サービス境界
- SSH と RDP アクセス用の Identity-Aware Proxy(IAP)
- ウェブアプリ用の IAP
アプリとリソース
以降のセクションでは、さまざまな種類のアプリとリソースにアクセスレベルを適用する方法と、プロセスが種類によってどのように異なるかについて説明します。
Google Workspace と 以外の他のアプリとサービス Google Cloud
コンテキストアウェア アクセスをサポートする Google Cloud 以外のアプリとサービスには、次のものがあります。
- Google 管理コンソール
- Gmail、Google Meet、Google カレンダーなどの Google Workspace アプリ
- Gemini やデータポータルなどのその他の Google アプリ
- カスタム SAML アプリ
Google Workspace と Google Cloud, 以外のアプリやサービスへのアクセスを制限するには、 管理コンソールで各サービスまたはアプリのコンテキストアウェア アクセスを個別に構成します。 管理コンソールで、次の操作を行います。
アクセスレベルを適用するスコープを定義します。スコープは、次の組み合わせです。
- 保護する特定のサービスまたは SAML アプリ。
- 関連するユーザーを含む組織部門(OU)またはグループ。
選択したスコープに適用するアクセスレベルを選択します。
アクセスレベルを割り当てる際に、そのアクセスレベルの設定を変更することもできます。アクセスレベルは、ユーザーがウェブアプリに直接アクセスする場合にのみ適用されるように指定できます。または、モバイルアプリや他のアプリが API にアクセスする場合にも適用されるように指定することもできます。詳細については、 アプリにコンテキストアウェア アクセスレベルを割り当てる のアクセスレベル設定に基づくアプリの動作をご覧ください。
特定のユーザーと アプリに適用される割り当てが複数存在する可能性があります。たとえば、ユーザーが従業員 OU のメンバーであり、 「all-apac」チームのメンバーである場合があります。それぞれの OU とグループに異なるアクセスレベルが割り当てられている可能性があります。この場合、Cloud Identity と Google Workspace は、優先度の高い割り当ての 1 つのみを適用します。
- グループベースの割り当ては、OU ベースの割り当てよりも優先されます。
- グループ内で、相対的な優先度をカスタマイズできます。
- OU 内では、ルート OU の相対的な優先度が最も低くなります。
Cloud Identity と Google Workspace では、 コンテキストアウェア アクセスログで コンテキストアウェア アクセス イベントを確認して分析できます。
コンソールと Google Cloud API Google Cloud
アクセス バインディングを使用して、 Google Cloud コンソールと Google Cloud API のコンテキストアウェア アクセスを構成できます。
Google Cloud API は認証に OAuth 2.0 を使用します。API を使用するには、ユーザーに Google 発行の有効な OAuth アクセス トークンが必要です。また、トークンは OAuth スコープのいずれかに発行されている必要があります。 Google CloudGoogle Cloud アクセス バインディングは、ユーザーがこのようなアクセス トークンを取得する機能を制限します。その結果、アクセス バインディングは、 コンソールと、 Google Cloud OAuth スコープを使用する すべての OAuth アプリ(次のようなもの)へのアクセスを制限します。 Google Cloud
- gcloud CLI
- Terraform などのサードパーティ製ツール
- 自分で作成した OAuth アプリ で Google Cloud OAuth スコープを使用するもの
アクセス バインディングは、グループをアクセスレベルにリンクします。各グループに設定できるアクセス バインディングは 1 つだけです。各アクセス バインディングでは、次の 構成を定義できます。
- 個々の OAuth アプリにアクセスレベルを割り当てる
scopedAccessSettingsリスト。 - デフォルトのアクセスレベル。
アクセス バインディングでスコープ設定されたアクセス設定とデフォルトのアクセスレベルの両方が指定されている場合、2 つのアクセスレベルは OR セマンティクスを使用して結合されます。
ユーザーは、OAuth アプリにアクセスするために、アクセスレベルのいずれか 1 つを満たせばよくなります。
アクセス バインディングは、グループの直接的なメンバーと間接的なメンバーの両方に適用されます。ユーザーが複数のグループのメンバーである場合、複数のアクセス バインディングが適用される可能性があり、複数のアクセスレベルが発生する可能性があります。この場合、アクセスレベルも OR セマンティクスを使用して結合されます。つまり、ユーザーはアクセスレベルのいずれか 1 つを満たせばよくなります。
VPC サービス境界
VPC サービス境界を作成するときに、制限付きサービスのリストを指定します。制限付きサービスにはサービス境界内からアクセスできますが、デフォルトではサービス境界外からアクセスすることはできません。
サービス境界外からのアクセスを許可するには、 上り(内向き)ルールを使用します。 上り(内向き)ルールを使用すると、外部アクセスを許可する条件を指定できます。アクセスレベルを使用すると、上り(内向き)ルールでコンテキストアウェア アクセスを適用できます。
VPC サービス境界には、複数の上り(内向き)ルールを設定できます。その結果、特定のユーザーとアプリに複数の上り(内向き)ルールが適用される可能性があり、これらの上り(内向き)ルールでは異なるアクセスレベルが必要になる場合があります。この場合、アクセスレベルは OR セマンティクスを使用して評価され、ユーザーはアクセスレベルのいずれか 1 つを満たせばよくなります。
アクセス バインディングを VPC サービス境界の上り(内向き)ルールと組み合わせることができます。アクセス バインディングと上り(内向き)ルールで、特定のユーザーとアプリに異なるアクセスレベルが指定されている場合、レベルは AND セマンティクスを使用して結合されます。その場合、ユーザーは両方のアクセスレベルを満たす必要があります。
VPC サービス 境界内のリソースへのアクセス試行を確認して分析するには、 VPC Service Controls 監査ログ または VPC Service Controls 違反分析ツールを使用します。
VM への SSH アクセスと RDP アクセス
IAP TCP 転送を使用して、VM への SSH アクセスと RDP アクセスのコンテキストアウェア アクセスを構成できます。
IAP TCP 転送は、アクセス バインディングと VPC サービス境界の上り(内向き)ルールをサポートしています。コンソールと Cloud API のアクセス バインディングは、IAP TCP 転送に自動的に適用されます。 Google Cloud
サービス境界に
iaptunnel.googleapis.comサービス
が制限付きサービスとして含まれている場合、上り(内向き)ルールは IAP TCP 転送に
自動的に適用されます。ベスト プラクティスの詳細については、
IAP TCP 転送を制限付きサービスとして含めるをご覧ください。
IAM 条件を使用してコンテキストアウェア アクセスを構成することもできます。IAM 条件は、アクセス バインディングと VPC サービス境界の上り(内向き)ルールの代替として使用することも、すべてを組み合わせて使用することもできます。
ユーザーまたはグループに IAP で保護されたトンネル ユーザーのロール (
roles/iap.tunnelResourceAccessor)を付与します。次に、ロール バインディングで、ユーザーが特定のアクセスレベルを満たすことを要求する IAM 条件式 を追加します。たとえば、式は次のようになります。"accessPolicies/123/accessLevels/fully-trusted" in request.auth.access_levels必要に応じて、IAM 条件をカスタマイズして、複数のアクセスレベルを要求したり、他のチェックを含めたりできます。
特定のユーザーとアプリが IAP TCP 転送にアクセスする場合、そのユーザーとアプリにはアクセス バインディング、上り(内向き)ルール、IAM 条件が適用される可能性があります。このシナリオでは、アクセスレベルは AND セマンティクスを使用して結合され、ユーザーはすべてのアクセスレベルを満たす必要があります。
IAP TCP 転送へのアクセス試行を確認して分析するには、 IAP の データアクセス監査ログを有効にする 必要があります。
ウェブアプリ
IAP を使用して、ウェブアプリのコンテキストアウェア アクセスを構成できます 。
ウェブアプリ用の IAP は、IAP TCP 転送とは異なります。
- アクセス バインディングは、 IAP で構成されたウェブアプリには適用されません。これは、IAP が使用する OAuth アプリが Google Cloud OAuth スコープを使用しないためです。
- VPC サービス境界の上り(内向き)ルールは、IAP で 構成されたウェブアプリには適用されません。これは、IAP が Google Cloud API ではなく、制限付きサービスとして構成できないためです。
IAP を使用してウェブアプリのコンテキストアウェア アクセスを構成するには、IAM 条件を使用する必要があります。
ユーザーまたはグループに IAP で保護されたウェブアプリ ユーザーのロール (
roles/iap.httpsResourceAccessor)を付与します。次に、ロール バインディングで、ユーザーが特定のアクセスレベルを満たすことを要求する IAM 条件式 を追加します。たとえば、式は次のようになります。"accessPolicies/123/accessLevels/fully-trusted" in request.auth.access_levels必要に応じて、IAM 条件をカスタマイズして、複数のアクセスレベルを要求したり、他のチェックを含めたりできます。
IAP で構成されたウェブアプリへのアクセス試行を確認して分析するには、 IAP の データアクセス監査ログ を有効にする必要があります。
次のステップ
- コンテキストアウェア アクセスを使用してアプリとリソースを保護するためのベスト プラクティス。
- Cloud アーキテクチャ センターで、リファレンス アーキテクチャ、図、ベスト プラクティスを確認する。
寄稿者
著者: Johannes Passing | クラウド ソリューション アーキテクト
その他の寄稿者: Ido Flatow | クラウド ソリューション アーキテクト