サービス境界の一括変更

Access Context Manager を使用すると、組織のアクセス ポリシーアクセスレベルサービス境界など)に属するリソースを一括更新できます。リソースへの変更は、一括オペレーションのすべての部分が成功した場合にのみ適用されます。

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

サービス境界のリストを取得する

一括オペレーションは組織のすべてのサービス境界に影響するため、境界の完全なリストを取得できます。また、このリストを YAML としてフォーマットし、それを使用して境界を一括変更することもできます。

サービス境界のフォーマット済みリストを取得するには、サービス境界の一覧表示(フォーマット済み)をご覧ください。

replace-all コマンドを使用してすべてのサービス境界構成をオーバーライドする場合は、境界内に etag フィールドを設定しないでください。Etag は境界の取得と更新の間で変更される可能性があり、replace-all コマンドで Etag の不一致エラーが返される可能性があります。ただし、etag チェックを適用する場合は、トップレベルの --etag パラメータを使用して、replace-all リクエスト全体に etag を設定できます。

境界内の etag プロパティをそれぞれ手動で削除する代わりに、etag 以外のすべてのフィールドを含む --format を指定して、etag プロパティのない境界を取得できます。

gcloud access-context-manager perimeters list \
  --policy=POLICY_NAME \
  --format="json(name,title,description,perimeterType,status,spec,useExplicitDryRunSpec)"

サービス境界の一括置換

次のセクションでは、サービス境界を一括置換する方法を説明します。

gcloud

すべてのサービス境界を一括置換するには、replace-all コマンドを使用します。

gcloud access-context-manager perimeters replace-all POLICY_NAME \
  --source-file=FILE \
  --etag=ETAG \

ここで

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

  • FILE は、既存のサービス境界の新しい設定を定義する.yaml ファイルの名前です。

    次に例を示します。

    - name: accessPolicies/11271009391/servicePerimeters/storage_perimeter
      title: Storage Perimeter
      description: Perimeter to protect Storage resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - storage.googleapis.com
    - name: accessPolicies/11271009391/servicePerimeters/bigquery_perimeter
      title: BigQuery Perimeter
      description: Perimeter to protect BigQuery resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - bigquery.googleapis.com
    

    YAML ファイルのフォーマット設定の詳細については、Access Context Manager の ServicePerimeterConfig オブジェクトの JSON 構造をご覧ください。

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

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

API

すべてのサービス境界を一括置換するには、servicePerimeters.replaceAll を呼び出します。

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

ここで

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

リクエストの本文

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

必要に応じて、組織のアクセス ポリシーの特定のバージョンをターゲットにするために、etag を含められます。etag を含めない場合、一括オペレーションは組織のアクセス ポリシーの最新バージョンを対象とします。

次に例を示します。

{
  "servicePerimeters": [
    object (ServicePerimeterConfig),
    object (ServicePerimeterConfig),
    ...
  ]
  "etag": string
}

レスポンスの本文

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

レスポンスの例:

{
  "name": "operations/accessPolicies/11271009391/replacePerimeters/1583523447707087",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceServicePerimetersResponse",
    "servicePerimeters": [
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "Storage Perimeter",
        "description": "Perimeter to protect Storage resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/corpnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "BigQuery Perimeter",
        "description": "Perimeter to protect BigQuery resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/prodnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      }
    ]
  }
}