서비스 경계 일괄 변경

Access Context Manager를 사용하면 액세스 수준서비스 경계와 같이 조직의 액세스 정책에 속하는 리소스를 일괄 업데이트할 수 있습니다. 일괄 작업의 모든 부분이 성공한 경우에만 리소스 변경사항이 적용됩니다.

이 주제에서는 서비스 경계의 일괄 교체만 설명합니다. 액세스 수준의 일괄 교체에 대한 자세한 내용은 Access Context Manager 문서를 참조하세요.

시작하기 전에

일괄 작업은 조직의 모든 서비스 경계에 영향을 주므로 경계의 전체 목록을 가져올 수 있습니다. 또한 이 목록을 YAML 형식으로 지정하고 이를 사용하여 경계를 일괄 변경할 수 있습니다.

형식이 지정된 서비스 경계 목록을 가져오려면 서비스 경계 나열(형식 지정됨)을 참조하세요.

서비스 경계 일괄 바꾸기

다음 섹션에서는 서비스 경계를 대량으로 바꾸는 방법을 자세히 설명합니다.

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 리소스가 포함됩니다.

응답 예시:

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