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

このページでは、アクセス ポリシーをユーザー グループに適用する方法を定義する、既存のアクセス バインディングの管理方法について説明します。これらのバインディングは、必要に応じて表示、変更、削除できます。アクセス バインディングは、アクセスレベルとセッション管理をユーザー グループに適用する方法を決定します。

アクセス バインディングの作成方法と、アクセスレベルとセッション管理の詳細については、アクセス バインディングを使用してユーザー グループにポリシーを適用するをご覧ください。

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

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

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

コンソール

  1. Google Cloud コンソールで、[Access Context Manager] ページに移動します。

    Access Context Manager に移動

  2. プロンプトが表示されたら、プロジェクトを選択します。 アクセス バインディングのリストは、[Access Context Manager] ページに表示されます。

gcloud

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

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

    ORG_ID: 組織の 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"
      ]
    }
    
    

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

アクセス バインディングを更新すると、次のことができるようになります。

  • ポリシーが適用されるアプリケーションを追加、削除、変更する。
  • ユーザー グループ内のアプリケーションのアクセスレベルを変更する。
  • 新しいドライランのアクセスレベルを追加するか、既存のアクセスレベルを本番環境レベルに昇格します。

コンソール

  1. Google Cloud コンソールで、[Access Context Manager] ページに移動します。

    Access Context Manager に移動

  2. プロンプトが表示されたら、プロジェクトを選択します。

  3. [Access Context Manager] ページでアクセス バインディングを選択し、[編集] をクリックして更新します。

Google Cloud コンソールで、ドライランのアクセスレベルまたはセッション管理を使用してアクセス バインディングを更新することはできません。

gcloud

  1. YAML バインディング ファイルを作成します。

    gcloud access-context-manager cloud-bindings update
      --binding ACCESS_BINDING
      --binding-file BINDING_FILE_PATH
    [  --level DEFAULT_ACCESS_LEVEL ]
    [  --dry-run-level DEFAULT_DRY_RUN_ACCESS_LEVEL           ]
    [  --session-length=DEFAULT_SESSION_LENGTH                ]
    [  --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD  ]
    

    以下を置き換えます。

    • ACCESS_BINDING の形式は organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME です。
    • BINDING_FILE_PATH: アクセス バインディング スキームを含む YAML ファイルのパス。バインディング ファイルは scopedAccessSettings のみをサポートしています。
    • DEFAULT_ACCESS_LEVEL: 省略可能なアクセスレベル名(accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME の形式)。POLICY_ID はアクセス ポリシー ID に、ACCESS_LEVEL_NAME はアクセスレベル名に置き換えます。
    • DEFAULT_DRY_RUN_ACCESS_LEVEL_2: 省略可能なアクセスレベル名(accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME の形式)。このフラグを指定すると、YAML で指定されていない場合、デフォルトで指定されたドライラン アクセスレベルがすべてのアプリケーションに適用されます。
    • DEFAULT_SESSION_LENGTH: ISO 8601 Duration 形式で指定するオプションのセッション継続時間(30 分の場合は 30m、2 時間の場合は 2h など)。
    • DEFAULT_SESSION_REAUTH_METHOD: ユーザーに本人の再確認を求めるオプションのメソッド。次のいずれかである必要があります。
      • LOGIN: 標準ログインを適用します。これには、MFA や Workspace で定義されたその他の要素を含めることができます。
      • PASSWORD: 他の要素が定義されている場合でも、パスワードのみを必須にします。パスワードが外部 IdP を使用して管理されている場合、ユーザーは IdP にリダイレクトされます。IdP セッションが公開されている場合、ユーザーは暗黙的に再認証されます。IdP が公開されていない場合、ユーザーは IdP 経由でログインする必要があります。
      • SECURITY_KEY: ハードウェア セキュリティ キーが必要。

    --level 引数と --binding-file 引数の連携の仕組み

    • --binding-file のみを使用する場合、ファイル内のアプリケーションにのみポリシーが適用されます。
    • --level のみを使用する場合、アクセスレベルはすべてのアプリケーションに適用されます。
    • 両方を使用すると、ルールが結合されます。--level 値はすべてのアプリケーションに適用されますが、--binding-file で指定された YAML ファイル内のポリシーは、ファイルで定義されているアプリケーションにのみ適用されます。

    セッション管理の操作

    • すべてのアプリケーションにデフォルトのセッション管理を設定するには、--session-length--session-reauth-method を使用します。
    • YAML ファイルでセッション管理も定義すると、それらのセッション管理によって、特定のアプリケーションのデフォルト設定がオーバーライドされます。
    • --session-length--session-reauth-method は一緒に使用する必要があります。

    デフォルトのアクセスレベルまたはデフォルトのドライランのアクセスレベルを削除するには、空の文字列(--level=--dry-run-level= など)を指定します。これらの引数を指定しない場合、update コマンドを実行しても変更されません。

    セッション管理を削除するには、--session-length=0 を設定します。

API

  1. JSON 本文を作成します。

    {
      "accessLevels": [
        "DEFAULT_ACCESS_LEVEL"
      ],
      "scopedAccessSettings": [
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "clientId": "CLIENT_ID"
              }
            }
          },
          "activeSettings": {
            "accessLevels": [
              "ACCESS_LEVEL_A"
            ],
            "sessionSettings": [
              {
                "sessionLength": "SESSION_LENGTH",
                "sessionReauthMethod": "SESSION_REAUTH_METHOD",
                "sessionLengthEnabled": true
              }
            ]
        }
        },
        {
          "scope": {
            "clientScope": {
              "restrictedClientApplication": {
                "name": "CLIENT_NAME"
              }
            },
            "activeSettings": {
              "accessLevels": [
                "ACCESS_LEVEL_C"
              ]
            }
          }
        }
      ]
    }
    

    以下を置き換えます。

    • DEFAULT_ACCESS_LEVEL: 省略可能なアクセスレベル名(accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME の形式)。POLICY_ID はアクセス ポリシー ID に、ACCESS_LEVEL_NAME はアクセスレベル名に置き換えます。
    • CLIENT_ID: OAuth クライアント ID。アプリケーションに sessionSettings が含まれている場合は、clientId を使用する必要があります。
    • ACCESS_LEVEL_A: アクセスレベルの名前(accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME の形式)。
    • SESSION_LENGTH: ISO 8601 Duration 形式で指定するオセッション継続時間(30 分の場合は 30m、2 時間の場合は 2h など)。
    • SESSION_REAUTH_METHOD: ユーザーに本人の再確認を求めるオプションのメソッド。次のいずれかである必要があります。

      • LOGIN: 標準ログインを適用します。これには、MFA や Workspace で定義されたその他の要素を含めることができます。
      • PASSWORD: 他の要素が定義されている場合でも、パスワードのみを必須にします。パスワードが外部 IdP を使用して管理されている場合、ユーザーは IdP にリダイレクトされます。IdP セッションが公開されている場合、ユーザーは暗黙的に再認証されます。IdP が公開されていない場合、ユーザーは IdP 経由でログインする必要があります。
      • SECURITY_KEY: ハードウェア セキュリティ キーが必要。
    • CLIENT_NAME: クライアント名。アプリケーションに sessionSettings が含まれている場合、クライアント名を使用できません。代わりに、OAuth クライアント ID を使用してください。

    • ACCESS_LEVEL_C: アクセスレベルの名前(accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME の形式)。

  2. PATCH リクエストを送信します。

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?fieldMask=FIELDMASK
    

    以下を置き換えます。

    • ACCESS_BINDING の形式は organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME です。
    • FIELD_MASK: 更新するフィールドのカンマ区切りリスト(必須)。アクセス バインディングのどの部分を変更するかを API に指示します。

    fieldMask には、更新するリクエスト本文の最上位の JSON キーを含める必要があります。これには、accessLevelsdryRunAccessLevelsscopedAccessSettings を含めることができます。

    成功すると、JSON オブジェクトの表現が返されます。問題がある場合は、エラー メッセージが表示されます。

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

コンソール

  1. Google Cloud コンソールで、[Access Context Manager] ページに移動します。

    Access Context Manager に移動

  2. プロンプトが表示されたら、プロジェクトを選択します。

  3. [Access Context Manager] ページでアクセス バインディングを選択し、[削除] をクリックします。

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)と空のレスポンスが返されます。