Google Cloud Console と Google Cloud APIs を保護する

このドキュメントでは、コンテキスト ベースのルールを使用して、Google Cloud コンソールと Google Cloud APIs へのアクセスを保護する方法について説明します。

Google Cloud コンソールと Google Cloud API のコンテキストアウェア アクセスは、Google Cloud コンソールと Google Cloud API へのアクセスを、コンテキスト ベースのルールによって制限します。Chrome Enterprise Premium の一部であり、定義したアクセス要件を満たす組織内の個人やグループが Google Cloud コンソールや Google Cloud APIs(Google Cloud CLI からのアクセスを含む)にアクセスするのに役立ちます。

Google Cloud コンソールと Google Cloud APIs を保護するには、次の操作を行います。

  1. [省略可] 組織内のデバイスに Endpoint Verification をデプロイします。
  2. Access Context Manager でアクセスレベルを作成します。
  3. コンテキストアウェアの制限を受けるユーザーのグループを作成します。
  4. 必要な Identity and Access Management 権限を取得します。
  5. Google Cloud コンソールと Google Cloud API にコンテキストアウェア ルールを適用する、アクセス バインディングを作成します。

(省略可)Endpoint Verification をデプロイする

デバイス属性を使用して Google Cloud コンソールと Google Cloud APIs へのアクセスを保護する場合は、組織内のデバイスに Endpoint Verification をデプロイします。

Endpoint Verification は、MacOS、Windows、Linux のユーザーに対して、デスクトップおよびノートパソコンで Chrome 拡張機能として実行されます。管理者は、Google 管理コンソールから会社所有のデバイスにデプロイできます。また、組織のメンバーは、自分でインストールできます。

アクセスレベルを作成する

Access Context Manager で 基本のアクセスレベルを作成することによって、Google Cloud コンソールと Google Cloud API へのアクセスを決定するときに使用できるアクセスレベルを定義する必要があります。

ユーザー グループを作成する

コンテキストアウェアの制限を受けるユーザー グループを作成する。このグループのいずれかのユーザーが組織のメンバーでもある場合は、事前に作成されたアクセスレベルを満たし、Google Cloud コンソールと Google Cloud API にアクセスできるようにする必要があります。

必要な IAM 権限を付与する

Access Context Manager アクセス バインディングの作成に必要な組織レベルの IAM 権限を付与します。

コンソール

  1. Google Cloud コンソールの [IAM と管理] ページに移動します。

    [IAM と管理] に移動

  2. [追加] をクリックして、以下を構成します。

    • 新しいメンバー: 権限を付与するユーザーまたはグループを指定します。
    • ロールを選択: [Access Context Manager] > [Cloud アクセス バインディング管理者] を選択します。
  3. [保存] をクリックします。

gcloud

  1. 組織レベルの IAM 権限を追加するのに十分な権限で認証されていることを確認してください。少なくとも、組織管理者のロールが必要です。

    適切な権限があることを確認したら、次のコマンドでログインします。

    gcloud auth login
    
  2. 次のコマンドを実行して GcpAccessAdmin ロールを割り当てます。

    gcloud organizations add-iam-policy-binding ORG_ID \
      --member=user:EMAIL \
      --role=roles/accesscontextmanager.gcpAccessAdmin
    
    • ORG_ID は、組織 ID です。組織 ID を把握していない場合は、次のコマンドを使用して確認できます。

       gcloud organizations list
      
    • EMAIL は、ロールを付与するユーザーまたはグループのメールアドレスです。

アクセス バインディングを作成する

アクセス バインディングは、以前に作成したユーザー グループと、Google Cloud コンソールと Google Cloud APIs へのアクセスのために定義した Access Context Manager アクセスレベルとのマッピングです。

アクセス バインディングを使用すると、ユーザー グループが Google Cloud APIs とアプリケーションにアクセスする方法を定義できます。これは、ユーザー グループをアクセスレベルにリンクすることで実現できます。アクセスレベルは、グループのアプリケーションへのアクセスに適用される権限と制限を定義します。

アクセス バインディングでアプリケーションを指定するには、OAuth クライアント ID を使用します。次のアプリケーションは、名前を使用して指定できます。

作成できるアクセス バインディングのタイプは次のとおりです。

  • ユーザー グループをアクセスレベルにバインドする: 特定のユーザー グループが使用するすべてのクライアント アプリケーションに、アクセスレベルをグローバルに適用します。これは、すべてのアプリケーションで一貫したアクセス制御が必要なシナリオに適した幅広いアプローチです。
  • ユーザー グループをアプリケーション固有のアクセスレベルにバインドする: よりきめ細かい制御を行うには、ユーザー グループの特定のアプリケーションに異なるアクセスレベルを割り当てることができます。これにより、アプリケーションのニーズと機密性に基づいてアクセスを調整することで、意図しない制限を防ぐことができます。
  • ドライラン構成を使用してユーザー グループをアクセスレベルにバインドする: アクセス バインディングを完全に実装する前に、ドライラン構成を使用して変更の影響をテストできます。これにより、ユーザーに影響する前に潜在的な問題を特定して対処できます。

    ドライラン構成を使用して、次のタイプのアクセス バインディングを作成できます。

    • グループとドライランのアクセスレベルの間
    • グループ、通常のアクセスレベル、ドライランのアクセスレベルの間
    • グループとアプリケーションのマップ間(それぞれに通常のアクセスレベルとドライランのアクセスレベルがある)

アクセスレベルを使用してアクセス バインディングを作成する

コンソール

  1. Google Cloud コンソールで [Chrome Enterprise Premium] ページに移動します。

    Chrome Enterprise Premium に移動する

  2. 組織を選択して、[選択] をクリックします。

  3. [アクセスの管理] をクリックして、アクセスを許可するユーザー グループを選択します。

  4. [追加] をクリックして、以下を構成します。

    • メンバー グループ: アクセス権を付与するグループを指定します。選択できるのは、アクセスレベルにまだバインドされていないグループのみです。
    • アクセスレベルを選択する: グループに適用するアクセスレベルを選択します。
  5. [保存] をクリックします。

gcloud

これと他の追加のフラグ オプションを含む gcloud access-context-manager cloud-bindings の詳細については、Google Cloud CLI をご覧ください。

 gcloud access-context-manager cloud-bindings create \
    --group-key GROUP_ID \
    --level ACCESS_LEVEL \
    --organization ORG_ID

ここで

  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
  • POLICY_ID は、組織のアクセス ポリシーの ID です。
  • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • POLICY_ID は、組織のアクセス ポリシーの ID です。
  • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

HTTP メソッドと URL:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

リクエストの本文(JSON):

{
  "groupKey": "GROUP_ID",
  "accessLevels": [ "ACCESS_LEVEL" ],
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ]
}

アプリケーションからアクセスレベルへのマッピングを使用してアクセス バインディングを作成する

アプリケーションからアクセスレベルへのマッピングを使用してバインディングすると、特定のアプリケーションにアクセスレベルを適用し、他のアプリケーションに意図しない影響を与えないようにできます。このタイプのバインディングは、次のタイプのユースケースをサポートしています。

  • 特定のアプリへのアクセスを制限する: 他のアプリに影響を与えることなく、特定のアプリにアクセスレベルを適用します。

    例: Google Cloud コンソールから、Google Cloud APIs の証明書ベースのアクセス(mTLS)を実装します。mTLS を Google Cloud コンソールにのみ適用し、他のアプリケーションには影響を与えないバインディングを作成できます。必要に応じて、意思決定の指針とするため、ドライラン監査ログを使用して、この設定を他のアプリケーションに拡張できます。

  • アプリケーションをグローバル ポリシーから除外する: 広範囲に適用されるアクセスレベルから特定のアプリを除外します。

    例: 組織は、すべての Google Cloud APIs にIP ベースのアクセス ポリシーを実装しています。ただし、これにより 2 つの Docker アプリケーションに問題が発生します。Docker アプリケーションの例外を作成して、グローバル IP 制限を回避できます。

クライアント アプリケーションを制限するアクセス バインディングを作成する

gcloud

アクセス バインディングを作成します。

gcloud access-context-manager cloud-bindings create \
 --organization ORG_ID \
 --group-key GROUP_ID \
 --binding-file BINDING_FILE_PATH

以下を置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • BINDING_FILE_PATH は、アクセス バインディング スキームを含む YAML ファイルのパスです。バインディング ファイルは scopedAccessSettings のみをサポートします。

次の例は、Google Cloud コンソールとユーザーの OAuth アプリケーションを 2 つの異なるアクセスレベルにバインドするバインディング ファイルです。

  scopedAccessSettings:
  - scope:
     clientScope:
       restrictedClientApplication:
         name: Cloud Console
    activeSettings:
      accessLevels:
      - ACCESS_LEVEL_1
  - scope:
     clientScope:
       restrictedClientApplication:
         client_id: CLIENT_ID
     activeSettings:
       accessLevels:
       - ACCESS_LEVEL_2

以下を置き換えます。

  • ACCESS_LEVEL_1 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
  • CLIENT_ID アプリケーションの OAuth クライアント ID。
  • ACCESS_LEVEL_2 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • CLIENT_ID アプリケーションの OAuth クライアント ID。
  • ACCESS_LEVEL_1 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
  • ACCESS_LEVEL_2 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。

HTTP メソッドと URL:

POST
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

次のリクエストの JSON 本文は、Google Cloud コンソールとユーザーの OAuth アプリケーションを 2 つの異なるアクセスレベルにバインドします。

{
     "group_key": "{GROUP_ID}",
     "scoped_access_settings": [
        {
            "scope": {
              "client_scope": {
                  "restricted_client_application": {
                      "name": "Cloud Console"
                  }
              }
          },
          "active_settings": {
              "access_levels": [
                 {ACCESS_LEVEL_1}
              ]
          }
      },
      {
          "scope": {
              "client_scope": {
                  "restricted_client_application": {
                      "client_id": "{CLIENT_ID}"
                  }
              }
          },
            "active_settings": {
              "access_levels": [
                  "{ACCESS_LEVEL_2}"
              ]
          }
      }
  ]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドは、gcloud init または gcloud auth login を実行して、ユーザー アカウントで gcloud CLI にログインしているか、Cloud Shell を使用して自動的に gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d @request.json \
  "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

次のような JSON レスポンスが返されます。

{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
 "accessPolicies/305009197125/accessLevels/device_lock"
]
}

PowerShell

次のコマンドは、gcloud init または gcloud auth login を実行して、ご自分のユーザー アカウントで gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
 -Method POST `
 -Headers $headers `
 -ContentType: "application/json; charset=utf-8" `
 -InFile request.json `
 -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
 "accessPolicies/305009197125/accessLevels/device_lock"
]
}

次のような JSON レスポンスが返されます。

{
  "name": "organizations/660620010374/gcpUserAccessBindings/aAQS-YRQXEDW8mJ4tE5U7VIDwBczxhxwtfUaDkUDLBKBIPvzH",
  "groupKey": "019c6y182grvb0j",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/244346580249/accessLevels/requireMutualTLS"
        ]
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "32555940559.apps.googleusercontent.com"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/244346580249/accessLevels/requireMutualTLS"
        ]
      }
    }
  ]
}

クライアント アプリケーションを除外するアクセス バインディングを作成する

gcloud

アクセス バインディングを作成します。

gcloud access-context-manager cloud-bindings create \
--organization {ORG_ID} \
--group-key {GROUP_ID} \
--level {ACCESS_LEVEL} \
--binding-file {BINDING_FILE_PATH}

以下を置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。 このアクセスレベルは、すべてのクライアント アプリケーションにグローバルに適用されるアクセス条件を定義します。
  • BINDING_FILE_PATH は、アクセス バインディング スキームを含む YAML ファイルのパスです。バインディング ファイルは scopedAccessSettings のみをサポートします。除外ユースケースの場合、このバインディング ファイルには、アクセスレベルから除外されるアプリケーションが含まれています。

次の例は、Google Cloud コンソールとユーザーの OAuth アプリケーションを 2 つの異なるアクセスレベルにバインドするバインディング ファイルです。

scopedAccessSettings:
- scope:
   clientScope:
     restrictedClientApplication:
       name: Cloud Console
  activeSettings:
    accessLevels:
    - {EXEMPTION_ACCESS_LEVEL}
- scope:
   clientScope:
     restrictedClientApplication:
       client_id: {CLIENT_ID}
   activeSettings:
     accessLevels:
     - {EXEMPTION_ACCESS_LEVEL}

以下を置き換えます。

  • EXEMPTION_ACCESS_LEVEL 除外アクセスレベルは、次のいずれかの方法で作成できます。
  • CLIENT_ID アプリケーションの OAuth クライアント ID。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • ACCESS_LEVEL: すべてのクライアント アプリケーションにグローバルに適用されるアクセス条件を定義するアクセスレベル。
  • EXEMPTION_ACCESS_LEVEL 除外アクセスレベルは、次のいずれかの方法で作成できます。
  • CLIENT_ID アプリケーションの OAuth クライアント ID。

HTTP メソッドと URL:

POST
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

次のリクエスト JSON 本文では、Google Cloud コンソールとユーザーの OAuth アプリケーションをグローバルに適用されるアクセスレベルから除外しています。

{
    "group_key": "{GROUP_ID}",
    "access_levels": [
       {ACCESS_LEVEL}
    ],
    "scoped_access_settings": [
        {
            "scope": {
                "client_scope": {
                    "restricted_client_application": {
                        "name": "Cloud Console"
                    }
                }
            },
            "active_settings": {
                "access_levels": [
                   {EXEMPTION_ACCESS_LEVEL}
                ]
            }
        },
        {
            "scope": {
                "client_scope": {
                    "restricted_client_application": {
                        "client_id": "{CLIENT_ID}"
                    }
                }
            },
            "active_settings": {
                "access_levels": [
                    "{EXEMPTION_ACCESS_LEVEL}"
                ]
            }
        }
    ]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドは、gcloud init または gcloud auth login を実行して、ユーザー アカウントで gcloud CLI にログインしているか、Cloud Shell を使用して自動的に gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d @request.json \
  "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

次のような JSON レスポンスが返されます。

{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
 "accessPolicies/305009197125/accessLevels/device_lock"
]
}

PowerShell

次のコマンドは、gcloud init または gcloud auth login を実行して、ご自分のユーザー アカウントで gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
 -Method POST `
 -Headers $headers `
 -ContentType: "application/json; charset=utf-8" `
 -InFile request.json `
 -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
 "accessPolicies/305009197125/accessLevels/device_lock"
]
}

次のような JSON レスポンスが返されます。

  {
      "name": "organizations/660620010374/gcpUserAccessBindings/aAQS-YRQXEDW8mJ4tE5U7VIDwBczxhxwtfUaDkUDLBKBIPvzH",
      "groupKey": "019c6y182grvb0j",
      "accessLevels": [
        "accessPolicies/244346580249/accessLevels/requireMutualTLS"
      ],
      "scopedAccessSettings": [
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "name": "Cloud Console"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "accessPolicies/244346580249/accessLevels/AlwaysTrue"
            ]
          }
        },
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "clientId": "32555940559.apps.googleusercontent.com"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "accessPolicies/244346580249/accessLevels/AlwaysTrue"
            ]
          }
        }
      ]
  }
  ```

ドライラン構成でアクセス バインディングを作成する

ドライラン構成を使用してアクセス バインディングを作成すると、次のシナリオで環境内のアクセスレベルの影響を把握できます。

  • アクセスレベルを適用する前にアクセスレベルの影響を評価するには、ドライランのアクセスレベルを使用してアクセス バインディングを作成します。
  • アクセスレベルを適用し、ドライランのアクセスレベルの影響を同時に評価するには、アクティブなアクセスレベルとドライランのアクセスレベルのアクセス バインディングを作成します。

ドライランのアクセスレベルのアクセス バインディングはアクセスをブロックしませんが、ドライランのアクセスレベルの違反をロギングします。ログの詳細を表示するには、拒否ログをご覧ください。

ドライランのアクセスレベルでアクセス バインディングを作成する

gcloud

    gcloud access-context-manager cloud-bindings create \
    --group-key GROUP_ID \
    --dry-run-level DRY_RUN_ACCESS_LEVEL \
    --organization ORG_ID

ここで

  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
  • POLICY_ID は、組織のアクセス ポリシーの ID です。
  • DRY_RUN_ACCESS_LEVEL は、効果を把握する ACCESS_LEVEL です。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • POLICY_ID は、組織のアクセス ポリシーの ID です。
  • DRY_RUN_ACCESS_LEVEL は、効果を把握する ACCESS_LEVEL です。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

HTTP メソッドと URL:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

リクエストの本文(JSON):

{
  "groupKey": "GROUP_ID",
  "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",

  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

アクセスレベルとドライランのアクセスレベルを使用してアクセス バインディングを作成する

gcloud

    gcloud access-context-manager cloud-bindings create \
    --group-key GROUP_ID \
    --level ACCESS_LEVEL \
    --dry-run-level DRY_RUN_ACCESS_LEVEL \
    --organization ORG_ID

ここで

  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
  • POLICY_ID は、組織のアクセス ポリシーの ID です。
  • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
  • DRY_RUN_ACCESS_LEVEL は、効果を把握する ACCESS_LEVEL です。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • POLICY_ID は、組織のアクセス ポリシーの ID です。
  • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
  • DRY_RUN_ACCESS_LEVEL は、効果を把握する ACCESS_LEVEL です。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

HTTP メソッドと URL:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

リクエストの本文(JSON):

{
  "groupKey": "GROUP_ID",
  "accessLevels": [ "ACCESS_LEVEL" ],
  "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。


{
  "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
  "groupKey": "045jfvxd0ybeul8",
  "accessLevels": [
    "accessPolicies/305009197125/accessLevels/device_lock"
  ],
  "dryRunAccessLevels": [
    "accessPolicies/305009197125/accessLevels/another"
  ]
}

アプリケーションからアクセスレベルとアクセスレベルのドライランへのマッピングを使用してアクセス バインディングを作成する

gcloud

アクセス バインディングを作成します。

 gcloud access-context-manager cloud-bindings create \
  --organization ORG_ID \
  --group-key GROUP_ID \
  --binding-file BINDING_FILE_PATH

以下を置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • BINDING_FILE_PATH は、アクセス バインディング スキームを含む YAML ファイルのパスです。バインディング ファイルは scopedAccessSettings のみをサポートします。

次の例は、Google Cloud コンソールとユーザーの OAuth アプリケーションをアクセスレベルとドライラン アクセスレベルにバインドするバインディング ファイルです。

scopedAccessSettings:
- scope:
   clientScope:
     restrictedClientApplication:
       name: Cloud Console
  activeSettings:
    accessLevels:
    - {ACCESS_LEVEL_1}
- scope:
   clientScope:
     restrictedClientApplication:
       client_id: {CLIENT_ID}
   dryRunSettings:
     accessLevels:
     - {ACCESS_LEVEL_2}

以下を置き換えます。

  • ACCESS_LEVEL_1 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
  • CLIENT_ID アプリケーションの OAuth クライアント ID。
  • ACCESS_LEVEL_2 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
  • GROUP_ID は、前に作成したユーザー グループのグループ ID です。

    グループ ID を利用できない場合は、Groups リソースの get メソッドを呼び出すことで取得できます。

  • CLIENT_ID アプリケーションの OAuth クライアント ID。
  • ACCESS_LEVEL_1 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。
  • ACCESS_LEVEL_2 クライアント アプリケーションへのアクセス条件を定義するアクセスレベル。

HTTP メソッドと URL:

POST
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

次のリクエスト JSON 本文は、Google Cloud コンソールとユーザーの OAuth アプリケーションをアクセスレベルとドライラン アクセスレベルにバインドします。

{
    "group_key": "{GROUP_ID}",
    "scoped_access_settings": [
        {
            "scope": {
                "client_scope": {
                    "restricted_client_application": {
                        "name": "Cloud Console"
                    }
                }
            },
            "active_settings": {
                "access_levels": [
                   {ACCESS_LEVEL_1}
                ]
            }
        },
        {
            "scope": {
                "client_scope": {
                    "restricted_client_application": {
                        "client_id": "{CLIENT_ID}"
                    }
                }
            },
            "dry_run_settings": {
                "access_levels": [
                    "{ACCESS_LEVEL_2}"
                ]
            }
        }
    ]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドは、gcloud init または gcloud auth login を実行して、ユーザー アカウントで gcloud CLI にログインしているか、Cloud Shell を使用して自動的に gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d @request.json \
  "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

次のような JSON レスポンスが返されます。

{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
 "accessPolicies/305009197125/accessLevels/device_lock"
]
}

PowerShell

次のコマンドは、gcloud init または gcloud auth login を実行して、ご自分のユーザー アカウントで gcloud CLI にログインしていることを前提としています。gcloud auth list を実行すると、現在アクティブなアカウントを確認できます。

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
 -Method POST `
 -Headers $headers `
 -ContentType: "application/json; charset=utf-8" `
 -InFile request.json `
 -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
 "accessPolicies/305009197125/accessLevels/device_lock"
]
}

次のような JSON レスポンスが返されます。

{
    "name": "organizations/660620010374/gcpUserAccessBindings/aAQS-YRQXEDW8mJ4tE5U7VIDwBczxhxwtfUaDkUDLBKBIPvzH",
    "groupKey": "019c6y182grvb0j",
    "scopedAccessSettings": [
      {
        "scope": {
          "clientScope": {
            "restrictedClientApplication": {
              "name": "Cloud Console"
            }
          }
        },
        "activeSettings": {
          "accessLevels": [
            "accessPolicies/244346580249/accessLevels/requireMutualTLS"
          ]
        }
      },
      {
        "scope": {
          "clientScope": {
            "restrictedClientApplication": {
              "clientId": "32555940559.apps.googleusercontent.com"
            }
          }
        },
        "dryRunSettings": {
          "accessLevels": [
            "accessPolicies/244346580249/accessLevels/requireMutualTLS"
          ]
        }
      }
    ]
}

拒否ログを表示する

ドライラン構成を作成したら、ログを確認して、ドライラン構成によってアクセスが拒否される場所を特定できます。

次の表に、クエリを作成して実行し、ログを取得するために使用できるログフィールドを示します。

フィールド名 説明
protoPayload > authenticationInfo > principalEmail アクセスが拒否されたプリンシパルのメール ID。
protoPayload > metadata > deniedApplications アクセスが拒否されたアプリケーションの名前。
protoPayload > metadata > evaluationResult 有効なアクセス ポリシーの評価結果。有効な値は GRANTED または DENIED です。
protoPayload > metadata > appliedAccessLevels アクティブなアクセス ポリシーで必要な適用済みのアクセスレベル。
protoPayload > metadata > appliedDryRunAccessLevels ドライラン アクセス ポリシーで必要な適用済みのアクセスレベル。
protoPayload > metadata > dryRunEvaluationResult ドライラン アクセス ポリシーの評価結果。アクセス ポリシーが適用されたときの意図されたアクションを示します。有効な値は GRANTED または DENIED です。

ログのクエリを作成する方法については、Logging のクエリ言語をご覧ください。

Console

  1. Google Cloud コンソールのナビゲーション メニューで [ロギング] をクリックしてから、[ログ エクスプローラ] をクリックします。

    [ログ エクスプローラ] に移動

  2. [クエリ] フィールドに次のフィルタのようなクエリフィルタを入力し、[クエリを実行] をクリックします。

    severity="ERROR" AND
    (protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND
     protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND
     protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"
    
  3. [クエリ結果] でログを確認します。

gcloud

gcloud CLI を使用してログを表示するには、次のようなコマンドを実行します。

gcloud logging read 'severity="ERROR" AND
  (protoPayload.metadata.evaluationResult=DENIED OR protoPayload.metadata.dryRunEvaluationResult=DENIED) AND
   protoPayload.metadata.@type="type.googleapis.com/google.cloud.audit.ContextAwareAccessAuditMetadata" AND
   protoPayload.metadata.deniedApplications.name="CLOUD_PLATFORM"'

アクセス バインディングを管理する

ユーザー グループにアクセス バインディングを作成すると、Google Cloud コンソールと Google Cloud APIs へのアクセスは、バインドされたアクセスレベルのレベルに応じて制御されます。

作成したアクセス バインディングの詳細を表示、編集、削除できます。

アクセス バインディングを表示する

コンソール

組織のすべてのアクセス バインディングを表示し、アクセス バインディングの詳細を表示できます。

gcloud

  • すべてのアクセス バインディングを表示するには、次のコマンドを実行します。

      gcloud access-context-manager cloud-bindings list \
       --organization ORG_ID
    

    ここで

    ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。. access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。

  • アクセス バインディングの詳細を表示するには、次のコマンドを実行します。

      gcloud access-context-manager cloud-bindings describe \
      --binding=BINDING_ID
    

    ここで

    BINDING_ID は、アクセス バインディングの ID またはバインディングの ID です。

API

  • すべてのアクセス バインディングを表示します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。access-context-manager/organization プロパティが設定されていない場合、オプションの --organization フラグの ORG_IDGcpAccessAdmin のロールを作成した際に使用した組織用の ID と置き換えてください。

    HTTP メソッドと URL:

    GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    次のコマンドを実行します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings"

    PowerShell

    次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings" | Select-Object -Expand Content

    次のような JSON レスポンスが返されます。

    
    {
      "name": string,
      "groupKey": string,
      "accessLevels": [
        string
      ]
      "dryRunAccessLevels": [
      string
      ]
    }
    
    

  • アクセス バインディングの詳細を表示します。

    HTTP メソッドと URL:

    GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    次のコマンドを実行します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://accesscontextmanager.googleapis.com/v1/BINDING_ID"

    PowerShell

    次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content

    次のような JSON レスポンスが返されます。

    
    {
      "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
      "groupKey": "045jfvxd0ybeul8",
      "accessLevels": [
        "accessPolicies/305009197125/accessLevels/device_lock"
      ],
      "dryRunAccessLevels": [
        "accessPolicies/305009197125/accessLevels/another"
      ]
    }
    
    

アクセス バインディングを更新する

コンソール

必要に応じてアクセス バインディングを更新できます。

gcloud

  • アクセスレベルの変更など、アクセス バインディングを更新するには、次のコマンドを実行します。

      gcloud access-context-manager cloud-bindings update \
         --binding ACCESS_BINDING \
         --level ACCESS_LEVEL
    

    ここで

    • ACCESS_BINDING の形式は organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME です。
    • ORG_ID は、GcpAccessAdmin ロールの作成時に使用した組織の ID です。
    • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。
    • 必要に応じて ACCESS_LEVEL の値を置き換えます。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
  • ドライラン アクセスレベルでアクセス バインディングを更新するには、次のコマンドを実行します。

     gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING
      --dry-run-level=DRY_RUN_ACCESS_LEVEL
    

    必要に応じて DRY_RUN_ACCESS_LEVEL の値を置き換えます。accessPolicies/POLICY_ID/accessLevels/DRY_ACCESS_LEVEL_NAME の形式です。

  • アクセス バインディングを更新して、アクセスレベルとドライランのアクセスレベルの両方を変更するには、次のコマンドを実行します。

     gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING
     --level=`ACCESS_LEVEL`
     --dry-run-level=DRY_RUN_ACCESS_LEVEL
    

    必要に応じて ACCESS_LEVELDRY_RUN_ACCESS_LEVEL の値を置き換えます。ACCESS_LEVELDRY_RUN_ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME で、DRY_RUN_ACCESS_LEVELACCESS_LEVEL と同じです。

  • アクセス バインディングからドライランのアクセスレベルを削除するには、次のコマンドを実行します。

      gcloud access-context-manager cloud-bindings update --binding=ACCESS_BINDING
      --dry-run-level=
    

API

  • アクセスレベルの変更など、アクセス バインディングを更新するには、以下を行います。

    リクエストのデータを使用する前に、次のように置き換えます。

    • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。
    • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

    HTTP メソッドと URL:

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels

    リクエストの本文(JSON):

    {
        "accessLevels": [ "ACCESS_LEVEL" ]
    }
    
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels" | Select-Object -Expand Content

    次のような JSON レスポンスが返されます。

    
    {
        "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
        "groupKey": "045jfvxd0ybeul8",
        "accessLevels": [
          "accessPolicies/305009197125/accessLevels/device_lock"
        ]
    }
    
    

  • ドライランのアクセスレベルを使用してアクセス バインディングを更新します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。
    • DRY_RUN_ACCESS_LEVEL は、効果を把握する ACCESS_LEVEL です。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

    HTTP メソッドと URL:

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels

    リクエストの本文(JSON):

    {
      "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
    }
    
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels" | Select-Object -Expand Content

    次のような JSON レスポンスが返されます。

    
    {
      name: "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
    
      group_key: "045jfvxd0ybeul8",
    
      dry_run_access_levels: [ "accessPolicies/305009197125/accessLevels/another" ]
      }
    
    

  • アクセス バインディングを更新し、アクセスレベルとドライランのアクセスレベルの両方を変更します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。
    • ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。
    • DRY_RUN_ACCESS_LEVEL は、効果を把握する ACCESS_LEVEL です。ACCESS_LEVEL の形式は accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME です。POLICY_IDACCESS_LEVEL_NAME の値は、アクセスレベルを作成してから、Access Context Manager で確認できます。

    HTTP メソッドと URL:

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels

    リクエストの本文(JSON):

    {
      "accessLevels": [ "ACCESS_LEVEL" ],
      "dryRunAccessLevels": [ "DRY_RUN_ACCESS_LEVEL" ]
     }
    
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=access_levels,dry_run_access_levels" | Select-Object -Expand Content

    次のような JSON レスポンスが返されます。

    
    {
      "name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
      "groupKey": "045jfvxd0ybeul8",
      "accessLevels": [
        "accessPolicies/305009197125/accessLevels/device_lock"
      ],
      "dryRunAccessLevels": [
        "accessPolicies/305009197125/accessLevels/another"
      ]
    }
    
    

  • アクセス バインディングからドライランのアクセスレベルを削除します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。

    HTTP メソッドと URL:

    PATCH PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels

    リクエストの本文(JSON):

    {
      "dryRunAccessLevels": [ ]
    }
    
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME?update_mask=dry_run_access_levels" | Select-Object -Expand Content

    成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

アクセス バインディングを削除する

コンソール

アクセス バインディングは必要に応じていつでも削除できます。

gcloud

   gcloud access-context-manager cloud-bindings delete \
       --binding ACCESS_BINDING

ここで

  • ACCESS_BINDING の形式は organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME です。
  • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。

API

リクエストのデータを使用する前に、次のように置き換えます。

  • ACCESS_BINDING_NAME は、アクセス バインディングの作成時に name 識別子に対して返される一意の文字列です。

HTTP メソッドと URL:

DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"

PowerShell

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content

成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

よくある質問

  • 新しく作成したアクセス バインディングが有効になるまでにどれくらい時間がかかりますか?

    最長で 24 時間ほどかかることがあります。

  • アクセス バインディングのあるグループを削除するとどうなりますか?

    グループとバインディングが削除され、グループ内のすべてのユーザーがアクセスできるようになります。

  • アクセス バインディングで使用されているアクセスレベルを削除するとどうなりますか?

    アクセスレベルが満たせず、バインドされたグループのすべてのユーザーがアクセスを拒否されます。

  • アクセス バインディングがある複数のグループにユーザーがいる場合どうなりますか?

    ユーザーは、そうしたグループの 1 つのアクセスレベルを満たすだけでアクセスできます。

  • ユーザーが組織に属していない場合はどうなりますか?

    バインドされているユーザー グループにユーザーを追加しても、コンテキストアウェア の制限により、アクセス バインディングの対象にはなりません。

次のステップ

  • Chrome Enterprise Premium の監査ログの詳細については、監査ロギングをご覧ください。
  • 管理アクティビティで記録される API オペレーションの概要など、Access Context Manager での監査ロギングの詳細については、Access Context Manager の監査ロギング情報をご覧ください。