このドキュメントでは、コンテキストアウェア アクセスを使用してさまざまな種類のアプリとリソースを保護する方法について説明します。コンテキストアウェア アクセスは、認証の強度、デバイスのポスチャー、ネットワーク ロケーション、地理的位置などの属性に基づいてユーザーのアクセスを制御するセキュリティ アプローチです。このアプローチは、セキュリティ アクセスに基本的なユーザー 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 コンソールと Google Cloud API
- 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 や Looker Studio などの他の Google アプリ
- カスタム SAML アプリ
Google Cloud以外の Google Workspace、アプリ、サービスへのアクセスを制限するには、管理コンソールで各サービスまたはアプリに対して個別にコンテキストアウェア アクセスを設定します。管理コンソールで次の操作を行います。
アクセスレベルを適用するスコープを定義します。スコープは、次の組み合わせです。
- 保護する特定のサービスまたは SAML アプリ。
- 関連するユーザーを含む組織部門(OU)またはグループ。
選択したスコープに適用するアクセスレベルを選択します。
アクセスレベルを割り当てる際に、そのアクセスレベルの設定を変更することもできます。ユーザーがウェブアプリに直接アクセスする場合にのみアクセスレベルが適用されるように指定できます。また、モバイルアプリや他のアプリが API にアクセスする場合にも、このレベルを適用するように指定することもできます。詳しくは、「アプリにコンテキストアウェア アクセスレベルを割り当てる」のアクセスレベルの設定に基づくアプリの動作をご覧ください。
特定のユーザーとアプリに適用される割り当てが複数ある場合があります。たとえば、ユーザーが [Employees] 組織部門のメンバーであり、[all-apac] チームのメンバーである場合などです。それぞれの OU とグループには、異なるアクセスレベルが割り当てられている場合があります。この場合、Cloud Identity と Google Workspace は、優先度が最も高い割り当てのみを適用します。
- グループベースの割り当ては、OU ベースの割り当てよりも優先されます。
- グループ内では、相対的な優先度をカスタマイズできます。
- OU 内では、ルート OU の相対優先度が最も低くなります。
Cloud Identity と Google Workspace では、コンテキストアウェア アクセスログでコンテキストアウェア アクセス イベントを確認して分析できます。
Google Cloud コンソールと Google Cloud API
アクセス バインディングを使用して、 Google Cloud コンソールとGoogle Cloud API へのコンテキスト認識アクセスを構成できます。
Google Cloud API は認証に OAuth 2.0 を使用します。 Google CloudAPI を使用するには、ユーザーは Google が発行した有効な OAuth アクセス トークンが必要です。また、トークンは Google Cloud OAuth スコープのいずれかに対して発行されている必要があります。アクセス バインディングは、ユーザーがこのようなアクセス トークンを取得する機能を制限します。その結果、アクセス バインディングは、次のように Google Cloud コンソールと Google Cloud OAuth スコープを使用するすべての OAuth アプリへのアクセスを制限します。
- gcloud CLI
- Terraform などのサードパーティ製ツール
- 自分で作成した Google Cloud OAuth スコープを使用する 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 サービス境界の上り(内向き)ルールをサポートしています。 Google Cloud コンソールと Cloud API のアクセス バインディングは、IAP TCP 転送に自動的に適用されます。
サービス境界に制限付きサービスとして 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 スコープを使用しないためです。
- IAP はGoogle Cloud API ではなく、制限付きサービスとして構成できないため、VPC サービス境界の上り(内向き)ルールは IAP で構成されたウェブアプリには適用されません。
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 | クラウド ソリューション アーキテクト