관리 경계 구성

이 문서에서는 Resource Manager를 사용하여 관리 경계 및 기능 구성을 설정하고 관리하는 방법을 설명합니다. 관리 경계를 사용하면 에이전트 레지스트리에 대해 프로젝트 간 리소스 탐색 및 거버넌스를 수행할 수 있습니다.

시작하기 전에

경계 및 기능 구성을 구성하기 전에 필요한 역할을 가져오고 필요한 API를 사용 설정합니다.

필요한 역할

경계 및 기능을 구성하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 경계 및 기능 구성 생성, 업데이트, 삭제: 대상 폴더 또는 조직의 Resource Manager 편집자 (roles/resourcemanager.editor)(사용자 관리형 관리 프로젝트를 제공하는 경우 관리 프로젝트)
  • 경계 및 기능 구성 보기: 대상 폴더 또는 조직에 대한 Resource Manager 뷰어 (roles/resourcemanager.viewer)
  • 멤버 프로젝트에 태그 연결:
    • 대상 폴더, 조직 또는 구성원 프로젝트에 대한 태그 사용자 (roles/resourcemanager.tagUser)
    • 대상 폴더 또는 조직에 대한 태그 관리자 (roles/resourcemanager.tagAdmin)

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

API 사용 설정

  • Resource Manager API를 사용 설정하려면 gcloud services enable 명령어를 사용합니다.

    gcloud services enable cloudresourcemanager.googleapis.com \
      --project=PROJECT_ID
    

    PROJECT_ID를 프로젝트의 ID로 바꿉니다.

관리 경계 설정

다음 두 가지 방법 중 하나로 폴더 또는 조직에 관리 경계를 설정할 수 있습니다.

  • 폴더 전체 또는 조직 전체 경계 (태그 필터 없음): 폴더 또는 조직의 모든 하위 프로젝트를 포함합니다. 1단계와 4단계를 건너뛰고 2단계: 경계 만들기(--tag-key 및 --tag-value 제외)와 3단계: 기능 구성 만들기만 완료합니다.
  • 태그 기반 경계: 폴더 또는 조직의 프로젝트를 태그 값으로 파티션을 나눕니다. 아래의 네 단계를 모두 완료하세요.

1단계: 파티셔닝 태그 키 구성

태그 필터 없이 폴더 전체 또는 조직 전체 경계를 만드는 경우 이 단계를 건너뜁니다. 기본적으로 BoundaryConfig 리소스에는 태그 키가 구성되어 있지 않습니다.

태그 기반 경계의 경우 BoundaryConfig 리소스는 폴더 또는 조직 내에서 프로젝트를 파티셔닝하는 데 사용되는 태그 키를 설정합니다. 태그 기반 경계를 만들기 전에 이 리소스를 구성하세요.

파티셔닝 태그 키를 설정하려면 gcloud resource-manager boundary-configs update 명령어를 사용합니다.

gcloud resource-manager boundary-configs update \
  --folder=FOLDER_ID \
  --tag-key=TAG_KEY_NAME

조직에서 태그 키를 구성하려면 --folder 대신 --organization=ORGANIZATION_ID를 지정합니다. 이전에 태그 키를 구성했고 태그가 지정되지 않은 경계로 전환하려는 경우 (상위 요소 아래에 경계가 없는 경우) --tag-key 대신 --clear-tag-key를 사용하여 이 명령어를 실행합니다.

다음을 바꿉니다.

  • FOLDER_ID: 상위 폴더의 ID
  • TAG_KEY_NAME: 태그 키의 이름으로, ORGANIZATION_ID/TAG_KEY_SHORT_NAME 형식입니다(예: 123456789012/env).

2단계: 경계 만들기

폴더 또는 조직에 Boundary 리소스를 만듭니다.

태그 필터 없이 폴더 전체 경계를 만들려면 (폴더의 모든 하위 프로젝트가 자동으로 포함됨) --tag-key 및 --tag-value 없이 gcloud resource-manager boundaries create 명령어를 사용합니다.

gcloud resource-manager boundaries create BOUNDARY_ID \
  --folder=FOLDER_ID \
  --display-name="Production Boundary"

1단계에서 파티셔닝 태그 키를 구성한 후 태그 기반 경계를 만들려면 --tag-key 및 --tag-value 플래그를 포함합니다.

gcloud resource-manager boundaries create BOUNDARY_ID \
  --folder=FOLDER_ID \
  --display-name="Production Boundary" \
  --tag-key=TAG_KEY_NAME \
  --tag-value=TAG_VALUE_SHORT_NAME

조직에서 경계를 만들려면 --folder 대신 --organization=ORGANIZATION_ID를 지정합니다.

다음을 바꿉니다.

  • BOUNDARY_ID: 경계의 고유 ID입니다(예: prod-boundary).
  • FOLDER_ID: 상위 폴더의 ID
  • TAG_KEY_NAME: 구성한 태그 키(예: 123456789012/env)
  • TAG_VALUE_SHORT_NAME: 프로젝트가 경계에 조인하기 위해 가져야 하는 태그 값(예: prod)

3단계: 기능 구성 만들기

CapabilityConfig 리소스를 만들어 경계를 관리 프로젝트에 연결하고 경계 전반에서 관리되는 서비스를 선언합니다.

기능 구성을 만들려면 gcloud resource-manager capability-configs create 명령어를 사용하고 에이전트 레지스트리에 --types=agent-management를 지정합니다.

gcloud resource-manager capability-configs create \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID \
  --types=agent-management \
  --boundaries=folders/FOLDER_ID/boundaries/BOUNDARY_ID \
  --display-name="DISPLAY_NAME"

조직에서 기능 구성을 만들려면 --folder 대신 --organization=ORGANIZATION_ID를 지정합니다.

다음을 바꿉니다.

  • CAPABILITY_CONFIG_ID: 기능 구성의 고유 ID(예: prod-capabilities)
  • FOLDER_ID: 상위 폴더의 ID
  • BOUNDARY_ID: 만든 경계의 ID
  • DISPLAY_NAME: 인간이 읽을 수 있는 표시 이름

경계가 없는 단일 독립형 프로젝트에서 기능을 사용 설정하려면 1, 2, 4단계를 건너뛰고 --folder 및 --boundaries 대신 --project=PROJECT_NUMBER 및 --management-project=projects/PROJECT_NUMBER를 사용하여 이 명령어를 실행합니다.

기존 프로젝트를 관리 프로젝트로 사용하려면 --management-project=projects/PROJECT_NUMBER 플래그를 전달합니다. 지정하는 프로젝트는 다음 요구사항을 충족해야 합니다. 그렇지 않으면 명령어가 오류와 함께 실패합니다.

  • CapabilityConfig 리소스와 동일한 상위 요소(folders/FOLDER_ID 또는 organizations/ORGANIZATION_ID) 바로 아래에 있습니다.
  • ACTIVE 수명 주기 상태여야 합니다.
  • 관리 프로젝트로 지정되지 않음

--management-project를 생략하면 Resource Manager가 상위 폴더 또는 조직 바로 아래에 전용 관리 프로젝트를 자동으로 프로비저닝합니다.

CapabilityConfig 리소스를 만들면 관리 프로젝트에서 해당 서비스 API가 자동으로 사용 설정됩니다 (예: agent-management를 지정할 때 agentregistry.googleapis.com). 관리 프로젝트에서 이러한 API를 수동으로 사용 설정할 필요가 없습니다.

4단계: 구성원 프로젝트에 태그 연결

태그 필터 없이 폴더 전체 또는 조직 전체 경계를 만든 경우 모든 하위 프로젝트가 자동으로 포함되므로 이 단계를 건너뜁니다.

태그 기반 경계의 경우 일치하는 태그 값을 프로젝트에 바인딩하면 프로젝트가 관리 경계에 동적으로 조인됩니다.

경계에 속하는 각 프로젝트에 태그를 연결하려면 gcloud resource-manager tags bindings create 명령어를 사용합니다.

gcloud resource-manager tags bindings create \
  --tag-value=TAG_VALUE_NAME \
  --parent=//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER

다음을 바꿉니다.

  • TAG_VALUE_NAME: 태그 값 이름(예: 123456789012/env/prod)
  • PROJECT_NUMBER: 경계에 포함할 프로젝트의 프로젝트 번호 (또는 프로젝트 ID)

기능 구성 관리

기능 구성을 나열, 설명, 업데이트, 삭제할 수 있습니다. 이 섹션의 예시에서는 --folder=FOLDER_ID를 사용합니다. 조직 또는 프로젝트에서 기능 구성을 관리하려면 --folder 대신 --organization=ORGANIZATION_ID 또는 --project=PROJECT_NUMBER를 지정합니다(경계는 폴더 수준 또는 조직 수준 기능 구성에만 연결할 수 있음).

기능 구성 나열

폴더의 모든 기능 구성을 나열하려면 gcloud resource-manager capability-configs list 명령어를 사용합니다.

gcloud resource-manager capability-configs list \
  --folder=FOLDER_ID

기능 구성 설명

구성 세부정보와 할당된 관리 프로젝트를 보려면 gcloud resource-manager capability-configs describe 명령어를 사용합니다.

gcloud resource-manager capability-configs describe \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID

연결된 경계 업데이트

기능 구성에 연결된 경계를 업데이트하려면 gcloud resource-manager capability-configs update 명령어를 사용합니다.

gcloud resource-manager capability-configs update \
  CAPABILITY_CONFIG_ID \
  --folder=FOLDER_ID \
  --boundaries=folders/FOLDER_ID/boundaries/BOUNDARY_ID_1,folders/FOLDER_ID/boundaries/BOUNDARY_ID_2

update 명령어는 또한 --types 및 --display-name 플래그를 허용하여 사용 설정된 기능 유형 또는 표시 이름을 업데이트합니다.

기능 구성 삭제

경계가 연결되어 있는 동안에는 CapabilityConfig 리소스를 삭제할 수 없으며 CapabilityConfig 리소스에 연결되어 있는 동안에는 Boundary 리소스를 삭제할 수 없습니다.

프로젝트 간 관리가 더 이상 필요하지 않을 때 기능 구성을 삭제하려면 다음 안내를 따르세요.

  1. 연결된 경계를 분리하려면 gcloud resource-manager capability-configs update 명령어를 --clear-boundaries 플래그와 함께 사용합니다.

    gcloud resource-manager capability-configs update \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID \
      --clear-boundaries
    
  2. 기능 구성을 삭제하려면 gcloud resource-manager capability-configs delete 명령어를 사용합니다.

    gcloud resource-manager capability-configs delete \
      CAPABILITY_CONFIG_ID \
      --folder=FOLDER_ID
    

다음 단계