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

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

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

Google Cloud Console と 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 API へのアクセスを保護する場合は、組織内のデバイスに 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 権限を付与します。

Console

  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 API へのアクセスのために定義した Access Context Manager アクセスレベルのマッピングです。

アクセス バインディングは、次のいずれかの方法で作成できます。

  • グループとアクセスレベル間のアクセス バインディング。
  • ドライラン構成によるグループとアクセスレベル間のアクセス バインディング。 ドライラン構成では、グループとドライランのアクセスレベル間、またはグループ、アクセスレベル、ドライランのアクセスレベルの間にアクセス バインディングを作成できます。

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

コンソール

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

    BeyondCorp Enterprise に移動

  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"
  ]
}

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

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

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

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

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

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"
  ]
}

拒否ログを表示する

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

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

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

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

コンソール

  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 API へのアクセスは、バインドされたアクセスレベルのレベルに応じて制御されます。

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

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

コンソール

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

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 つのアクセスレベルを満たすだけでアクセスできます。

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

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

次のステップ

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