アクセスレベルの一括変更

Access Context Manager を使用すると、組織のアクセス ポリシーアクセスレベルサービス境界など)に属するリソースを一括更新できます。

リソースへの変更は、一括オペレーションのすべての部分が成功した場合にのみ適用されます。たとえば、サービス境界で使用されているアクセスレベルを一括オペレーションで削除しようとすると、エラーが発生します。エラーが発生したため、オペレーション全体が失敗し、リソースは更新されません。

このトピックでは、アクセスレベルの一括置換のみについて説明します。サービス境界の一括置換の詳細については、VPC Service Controls のドキュメントをご覧ください

準備

一括オペレーションは、組織のアクセスレベルのすべてに影響するため、アクセスレベルの完全なリストを取得することをおすすめします。このリストは YAML 形式にすることができ、これを使用することでアクセスレベルの一括変更が簡単に行えます。

アクセスレベルの形式が揃ったリストを取得するには、アクセスレベルの一覧表示(形式設定)をご覧ください。

アクセスレベルの一括置換

次のセクションでは、アクセスレベルを一括置換する方法について詳しく説明します。

gcloud

すべてのアクセスレベルを一括置換するには、replace-all コマンドを使用します。

gcloud access-context-manager levels replace-all \
  --source-file=FILE \
  --etag=ETAG \
  [--policy=POLICY_NAME]

ここで

  • FILE は、既存のアクセスレベルの新しい条件を定義する.yaml ファイルの名前です。

    例:

    - name: accessPolicies/11271009391/accessLevels/corpnet_access
      title: Corpnet Access
      description: Permit access to corpnet.
      basic:
        combiningFunction: AND
        conditions:
          - ipSubnetworks:
            - 252.0.2.0/24
            - 2001:db8::/32
    - name: accessPolicies/11271009391/accessLevels/prodnet_access
      title: Prodnet Access
      description: Permit access to prodnet.
      basic:
        combiningFunction: OR
        conditions:
          - members:
            - user:exampleuser@example.com
            - serviceAccount:exampleaccount@example.iam.gserviceaccount.com
          - ipSubnetworks:
            - 176.0.2.0/24
    

    条件の YAML 構造の他の例については、YAML ファイルの例をご覧ください。

  • ETAG(省略可)は、組織のアクセス ポリシーのターゲット バージョンを表す文字列です。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。

    アクセス ポリシーの最新の etag を取得するには、listアクセス ポリシーをご覧ください。

  • POLICY_NAME は組織のアクセス ポリシーの名前です。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。

API

すべてのアクセスレベルを一括置換するには、accessLevels.replaceAll を呼び出します。

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels.replaceAll?alt=json

ここで

  • POLICY_NAME は組織のアクセス ポリシーの名前です。

リクエストの本文

リクエストの本文には、行う変更を指定する AccessLevel オブジェクトのリストを含める必要があります。

任意で、組織のアクセス ポリシーの特定のバージョンをターゲットにするために、etag を含めることができます。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。

例:

{
  "accessLevels": [
    object (AccessLevel),
    object (AccessLevel),
    ...
  ]
  "etag": string
}

レスポンスの本文

成功した場合は、呼び出しのレスポンス本文に Operation リソースが含まれ、これにより Post オペレーションの詳細がわかります。

レスポンスの例:

{
  "name": "operations/accessPolicies/11271009391/replaceLevels/1583523446234255",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceAccessLevelsResponse",
    "accessLevels": [
      {
        "name": "accessPolicies/11271009391/accessLevels/corpnet_access",
        "title": "Corpnet access",
        "description": "Permit access to corpnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "252.0.2.0/24"
              ]
            }
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/accessLevels/prodnet_access",
        "title": "Prodnet access",
        "description": "Permit access to prodnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "176.0.2.0/24"
              ]
            }
          ]
        }
      }
    ]
  }
}