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

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

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

サービス アカウントのアクセス バインディングの作成方法について詳しくは、 サービス アカウントのコンテキスト アウェア アクセスを構成するをご覧ください。

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

ユーザー グループ用に以前に作成したすべてのアクセス バインディングを一覧表示するには、次の操作を行います。

gcloud

gcloud CLI を使用してユーザーのすべてのアクセス バインディングを一覧表示するには、次のコマンドを実行します。サービス アカウントのアクセス バインディングを一覧表示するには、フィルタを使用する必要があります。

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

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

特定のリソースのアクセス バインディングを一覧表示するには、フィルタ フラグを使用します。

  --filter="FILTER"

FILTER は、アクセス ポリシーがバインドされているリソースを記述するフィルタに置き換えます。例:

  • ユーザー グループ: principal:group_key

  • サービス アカウント: principal:service_account OR principal:service_account_project_number

REST API

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

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

特定のリソースのアクセス バインディングを一覧表示するには、フィルタ パラメータを使用します。

curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"

以下を置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • ORGANIZATION_ID: 組織の ID
  • FILTER: アクセス ポリシーがバインドされているリソースを記述するフィルタ。例:

    • ユーザー グループ: principal:group_key

    • サービス アカウント: principal:service_account OR principal:service_account_project_number

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

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

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

コンソール

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

    Access Context Manager に移動

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

gcloud

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

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

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

API

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

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. コンソールで、[Access Context Manager] ページに移動します。 Google Cloud

    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:オプションのセッション継続時間(時間形式)。 15 時間の場合は 15h、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 または name を使用できます。
    • 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 が含まれている場合は、name または clientId を使用できます。

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

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

    PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK
    

    以下を置き換えます。

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

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

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

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

コンソール

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

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