주 구성원 액세스 경계 정책 만들기 및 적용

주 구성원 액세스 경계(PAB) 정책을 사용하면 주 구성원 집합에 액세스 자격이 부여되는 리소스를 제한할 수 있습니다. 이 페이지에서는 주 구성원 액세스 경계 정책을 만들고 적용하는 방법을 설명합니다.

시작하기 전에

  • 인증을 설정합니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

  • 주 구성원 액세스 경계 정책 개요를 읽습니다.

주 구성원 액세스 경계 정책을 만드는 데 필요한 역할

주 구성원 액세스 경계 정책을 만드는 데 필요한 권한을 얻으려면 관리자에게 조직에 대해 주 구성원 액세스 경계 관리자(roles/iam.principalAccessBoundaryAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 주 구성원 액세스 경계 정책을 만드는 데 필요한 iam.principalaccessboundarypolicies.create 권한이 포함되어 있습니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

주 구성원 액세스 경계 정책을 적용하는 데 필요한 역할

주 구성원 액세스 경계 정책을 적용하는 데 필요한 권한은 정책을 적용하려는 주 구성원 집합에 따라 달라집니다.

주 구성원 액세스 경계 정책을 적용하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 조직에 대한 주 구성원 액세스 경계 사용자(roles/iam.principalAccessBoundaryUser)
  • 직원 ID 제휴 풀에 주 구성원 액세스 경계 정책 적용: 대상 직원 ID 제휴 풀에 대한 IAM 직원 풀 관리자(roles/iam.workforcePoolAdmin)
  • 워크로드 아이덴티티 제휴 풀에 주 구성원 액세스 경계 정책 적용: 대상 직원 ID 제휴 풀을 소유하는 프로젝트에 대한 IAM 워크로드 아이덴티티 풀 관리자(roles/iam.workloadIdentityPoolAdmin)
  • Google Workspace 도메인에 주 구성원 액세스 경계 정책 적용: 조직에 대한 직원 풀 IAM 관리자(roles/iam.workspacePoolAdmin)
  • 프로젝트의 주 구성원 집합에 주 구성원 액세스 경계 정책 적용: 프로젝트에 대한 프로젝트 IAM 관리자(roles/resourcemanager.projectIamAdmin)
  • 폴더의 주 구성원 집합에 주 구성원 액세스 경계 정책 적용: 폴더에 대한 폴더 IAM 관리자(roles/resourcemanager.folderIamAdmin)
  • 조직의 주 구성원 집합에 주 구성원 액세스 경계 정책 적용: 조직에 대한 조직 관리자(roles/resourcemanager.organizationAdmin)

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

이러한 사전 정의된 역할에는 주 구성원 액세스 경계 정책을 적용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

주 구성원 액세스 경계 정책을 적용하려면 다음 권한이 필요합니다.

  • 조직에 대한 iam.principalaccessboundarypolicies.bind 권한
  • 직원 ID 제휴 풀에 주 구성원 액세스 경계 정책 적용: 직원 ID 제휴 풀에 대한 iam.workforcePools.createPolicyBinding
  • 워크로드 아이덴티티 제휴 풀에 주 구성원 액세스 경계 정책 적용: 대상 직원 ID 제휴 풀을 소유하는 프로젝트에 대한 iam.workloadIdentityPools.createPolicyBinding
  • Google Workspace 도메인에 주 구성원 액세스 경계 정책 적용: 조직에 대한 iam.workspacePools.createPolicyBinding
  • 프로젝트의 주 구성원 집합에 주 구성원 액세스 경계 정책 적용: 프로젝트에 대한 resourcemanager.projects.createPolicyBinding
  • 폴더의 주 구성원 집합에 주 구성원 액세스 경계 정책 적용: 폴더에 대한 resourcemanager.folders.createPolicyBinding
  • 조직의 주 구성원 집합에 주 구성원 액세스 경계 정책 적용: 조직에 대한 resourcemanager.organizations.createPolicyBinding

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

주 구성원 액세스 경계 정책 만들기

주 구성원 액세스 경계 정책은 Google Cloud 콘솔, gcloud CLI 또는 IAM REST API를 사용하여 만들 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 주 구성원 액세스 경계 정책 페이지로 이동합니다.

    주 구성원 액세스 경계 정책으로 이동

  2. 주 구성원 액세스 경계 정책을 만들려는 조직을 선택합니다.

  3. 정책 만들기를 클릭합니다.

  4. 정책에 주 구성원 액세스 경계 규칙을 추가합니다.

    1. 경계 규칙 추가를 클릭합니다.
    2. 설명 필드에 주 구성원 액세스 경계 정책 규칙에 대한 설명을 추가합니다. 설명은 최대 256자까지 가능합니다.
    3. 리소스 섹션에서 주 구성원에게 액세스 자격을 부여하려는 모든 Resource Manager 리소스(프로젝트, 폴더, 조직)를 입력합니다. 이 정책이 적용되는 주 구성원에게 이러한 리소스에 대한 액세스 자격이 부여됩니다.

      각 주 구성원 액세스 경계 정책은 정책의 모든 규칙에서 최대 500개 리소스를 참조할 수 있습니다.

    4. 완료를 클릭합니다.

    5. 정책 규칙을 추가하려면 이 단계를 반복합니다. 각 주 구성원 액세스 경계 정책에는 규칙을 최대 500개까지 포함할 수 있습니다.

  5. 정책 이름 섹션에 정책 이름을 입력합니다. 이름은 최대 63자까지 입력할 수 있습니다.

  6. 시행 버전 목록에서 정책의 시행 버전을 선택합니다. 주 구성원 액세스 경계 정책 버전에 따라 IAM에서 주 구성원 액세스 경계 정책이 시행되는 권한이 결정됩니다.

    시행 버전에 대한 자세한 내용은 주 구성원 액세스 경계 시행 버전을 참조하세요.

  7. 만들기를 클릭합니다.

gcloud

gcloud beta iam principal-access-boundary-policies create 명령어는 주 구성원 액세스 경계 정책을 만듭니다.

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • ORG_ID: 주 구성원 액세스 경계 정책을 만들려는 조직의 ID입니다. 조직 ID는 123456789012와 같은 숫자입니다.
  • PAB_POLICY_ID: 주 구성원 액세스 경계 정책의 고유 ID입니다(예: example-policy). :
  • DISPLAY_NAME: 선택사항. 인간이 읽을 수 있는 주 구성원 액세스 경계 정책에 대한 설명입니다(예: Example policy). 표시 이름은 최대 63자(영문 기준)까지 입력할 수 있습니다.
  • FILE_PATH: 주 구성원 액세스 경계 정책 규칙 세부정보가 포함된 JSON 파일의 경로입니다. 이 파일의 형식은 다음과 같습니다.

    {
      "description": DESCRIPTION,
      "resources": [
        RESOURCES
      ],
      "effect": ALLOW
    }
        

    다음 값을 바꿉니다.

    • DESCRIPTION: 선택사항. 주 구성원 액세스 경계 정책 규칙에 대한 설명입니다. 설명은 최대 256자까지 가능합니다.
    • RESOURCES: 주 구성원에게 액세스 자격을 부여하려는 Resource Manager 리소스(프로젝트, 폴더, 조직) 목록입니다. 이 정책이 적용되는 주 구성원에게 이러한 리소스에 대한 액세스 자격이 부여됩니다.

      각 주 구성원 액세스 경계 정책은 정책의 모든 규칙에서 최대 500개 리소스를 참조할 수 있습니다.

  • ENFORCEMENT_VERSION: 정책을 시행할 때 IAM에 사용되는 주 구성원 액세스 경계 정책의 버전입니다. 적용 버전에 따라 IAM에서 주 구성원 액세스 경계 정책을 적용하는 권한이 결정됩니다.

    허용되는 값은 1latest입니다.

    시행 버전에 대한 자세한 내용은 주 구성원 액세스 경계 시행 버전을 참조하세요.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud beta iam principal-access-boundary-policies create PAB_POLICY_ID \
    --organization=ORG_ID --location=global \
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json \
    --details-enforcement-version=ENFORCEMENT_VERSION

Windows(PowerShell)

gcloud beta iam principal-access-boundary-policies create PAB_POLICY_ID `
    --organization=ORG_ID --location=global `
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json `
    --details-enforcement-version=ENFORCEMENT_VERSION

Windows(cmd.exe)

gcloud beta iam principal-access-boundary-policies create PAB_POLICY_ID ^
    --organization=ORG_ID --location=global ^
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json ^
    --details-enforcement-version=ENFORCEMENT_VERSION

응답에는 요청에 해당하는 장기 실행 작업이 포함됩니다.

Create request issued for: [example-policy]
Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715373988044-6181fa136df85-3b06a30a-4816d25b] to complete...done.
Created principalAccessBoundaryPolicy [example-policy].

REST

principalAccessBoundaryPolicies.create 메서드는 주 구성원 액세스 경계 정책을 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • ORG_ID: 주 구성원 액세스 경계 정책을 만들려는 조직의 ID입니다. 조직 ID는 123456789012와 같은 숫자입니다.
  • PAB_POLICY_ID: 주 구성원 액세스 경계 정책의 고유 ID입니다(예: example-policy).
  • DISPLAY_NAME: 선택사항. 인간이 읽을 수 있는 주 구성원 액세스 경계 정책에 대한 설명입니다(예: Example policy). 표시 이름은 최대 63자(영문 기준)까지 입력할 수 있습니다.
  • PAB_RULES: 영향을 받는 주 구성원이 액세스할 수 있는 리소스를 정의하는 주 구성원 액세스 경계 규칙의 목록입니다. 주 구성원 액세스 경계 정책에는 규칙이 최대 500개까지 있을 수 있습니다. 각 규칙의 형식은 다음과 같습니다.

    {
    "description": "DESCRIPTION",
    "resources": [
      RESOURCES
    ],
    "effect": ALLOW
    }

    다음 값을 바꿉니다.

    • DESCRIPTION: 선택사항. 주 구성원 액세스 경계 정책 규칙에 대한 설명입니다. 설명은 최대 256자까지 가능합니다.
    • RESOURCES: 주 구성원이 액세스할 수 있는 Resource Manager 리소스(프로젝트, 폴더, 조직) 목록입니다. 이 정책이 적용되는 주 구성원이 이러한 리소스에 액세스할 수 있습니다.

      각 주 구성원 액세스 경계 정책은 정책의 모든 규칙에 있는 리소스를 최대 500개까지 참조할 수 있습니다.

  • ENFORCEMENT_VERSION: 정책을 시행할 때 IAM에 사용되는 주 구성원 액세스 경계 정책의 버전입니다. 적용 버전에 따라 IAM에서 주 구성원 액세스 경계 정책을 적용하는 권한이 결정됩니다.

    허용되는 값은 1latest입니다.

    시행 버전에 대한 자세한 내용은 주 구성원 액세스 경계 시행 버전을 참조하세요.

HTTP 메서드 및 URL:

POST https://iam.googleapis.com/v3beta/organizations/ORG_ID/locations/global?principalAccessBoundaryPolicyId=PAB_POLICY_ID

JSON 요청 본문:

{
  "displayName": DISPLAY_NAME,
  "details": {
    "rules": [
      PAB_RULES
    ],
    "effect": ALLOW
    }
  ],
  "enforcementVersion": "ENFORCEMENT_VERSION"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에는 요청에 해당하는 장기 실행 작업이 포함됩니다.

{
  "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3beta.OperationMetadata",
    "createTime": "2024-05-10T20:32:00.898809495Z",
    "target": "organizations/123456789012/locations/global/policyBindings/example-policy",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3beta"
  },
  "done": false
}

주 구성원 집합에 주 구성원 액세스 경계 정책 적용

주 구성원 집합에 주 구성원 액세스 경계 정책을 적용하려면 정책을 주 구성원 집합에 바인딩하는 정책 바인딩 리소스를 만듭니다. 정책 바인딩을 만든 후에는 바인딩의 주 구성원 액세스 경계 정책이 바인딩의 주 구성원에 시행됩니다.

정책 바인딩은 Google Cloud 콘솔, gcloud CLI, IAM REST API를 사용하여 만들 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 주 구성원 액세스 경계 정책 페이지로 이동합니다.

    주 구성원 액세스 경계 정책으로 이동

  2. 바인딩을 만들려는 주 구성원 액세스 경계 정책을 소유하는 조직을 선택합니다.

  3. 바인딩을 만들려는 주 구성원 액세스 경계 정책의 정책 ID를 클릭합니다.

  4. 바인딩 탭을 클릭한 후 바인딩 추가를 클릭합니다.

  5. 바인딩 세부정보를 입력합니다.

    1. 선택사항: 표시 이름 필드에 바인딩의 표시 이름을 입력합니다. 표시 이름은 최대 63자(영문 기준)까지 입력할 수 있습니다.
    2. 바인딩 ID 필드에 바인딩의 고유 이름을 입력합니다(예: example-binding).
    3. 대상 주 구성원 집합 섹션에서 정책을 바인딩하려는 주 구성원 집합의 유형과 ID를 입력합니다. 정책 바인딩을 만든 후에는 이 값을 변경할 수 없습니다.

      각 주 구성원 집합에 포함된 주 구성원에 대한 자세한 내용은 지원되는 주 구성원 집합을 참조하세요.

  6. 선택사항: 주 구성원 집합에서 주 구성원 액세스 경계 정책이 시행되는 주 구성원을 지정하려면 바인딩에 조건을 추가합니다.

    1. 조건 추가를 클릭합니다.
    2. 제목 필드에 조건 목적에 대한 간단한 요약 정보를 입력합니다.
    3. 선택사항: 설명 필드에 조건에 대한 자세한 설명을 입력합니다.
    4. 표현식 필드에 Common Expression Language(CEL) 구문을 사용하는 조건 표현식을 입력합니다. 표현식은 principal.type 또는 principal.subject 속성을 참조해야 합니다. 다른 속성은 지원되지 않습니다.
    5. 저장을 클릭합니다.
  7. 바인딩을 만들려면 추가를 클릭합니다.

gcloud

gcloud beta iam policy-bindings create 명령어는 정책 바인딩을 만듭니다.

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • BINDING_ID: 정책 바인딩의 고유 이름입니다(예: example-binding).
  • RESOURCE_TYPE: 정책 바인딩이 하위 요소인 Resource Manager 리소스(프로젝트, 폴더, 조직)의 유형입니다. project, folder, organization 값을 사용합니다.

    리소스 유형은 정책 바인딩의 주 구성원 집합에 따라 달라집니다. 사용할 리소스 유형을 확인하려면 지원되는 주 구성원 유형을 참조하세요.

  • RESOURCE_ID: 정책 바인딩이 하위 요소인 프로젝트, 폴더 또는 조직의 ID입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • ORG_ID: 주 구성원 집합에 바인딩하려는 주 구성원 액세스 경계 정책을 소유하는 조직의 ID입니다. 조직 ID는 123456789012와 같은 숫자입니다.
  • PAB_POLICY_ID: 주 구성원 집합에 바인딩하려는 주 구성원 액세스 경계 정책의 ID입니다(예: example-pab-policy). 정책 바인딩을 만든 후에는 이 값을 변경할 수 없습니다.
  • PRINCIPAL_SET: 정책을 바인딩하려는 주 구성원 집합입니다. 유효한 주 구성원 유형 목록은 지원되는 주 구성원 집합을 참조하세요. 정책 바인딩을 만든 후에는 이 값을 변경할 수 없습니다.
  • DISPLAY_NAME: 선택사항. 인간이 읽을 수 있는 바인딩에 대한 설명입니다(예: Example binding). 표시 이름은 최대 63자(영문 기준)까지 입력할 수 있습니다.
  • CONDITION_DETAILS: 선택사항. 주 구성원 집합에서 주 구성원 액세스 경계 정책이 적용되는 주 구성원을 지정하는 조건 표현식입니다. 다음 필드가 포함됩니다.

    • expression: Common Expression Language(CEL) 구문을 사용하는 조건 표현식입니다. 표현식은 principal.type 또는 principal.subject 속성을 참조해야 합니다. 다른 속성은 지원되지 않습니다.

      표현식은 논리 연산자(&&, ||, !)를 최대 10개까지 포함할 수 있고 표현식 최대 길이는 250자(영문 기준)입니다.

    • title: 선택사항. 조건 목적에 대한 간단한 요약입니다.
    • description: (선택사항) 조건에 대한 자세한 설명입니다.

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud beta iam policy-bindings create BINDING_ID \
    --RESOURCE_TYPE=RESOURCE_ID --location=global \
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" \
    --target-principal-set=PRINCIPAL_SET_ID \
    --display-name=DISPLAY_NAME \
    CONDITION_DETAILS

Windows(PowerShell)

gcloud beta iam policy-bindings create BINDING_ID `
    --RESOURCE_TYPE=RESOURCE_ID --location=global `
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" `
    --target-principal-set=PRINCIPAL_SET_ID `
    --display-name=DISPLAY_NAME `
    CONDITION_DETAILS

Windows(cmd.exe)

gcloud beta iam policy-bindings create BINDING_ID ^
    --RESOURCE_TYPE=RESOURCE_ID --location=global ^
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" ^
    --target-principal-set=PRINCIPAL_SET_ID ^
    --display-name=DISPLAY_NAME ^
    CONDITION_DETAILS

응답에는 요청에 해당하는 장기 실행 작업이 포함됩니다.

Create request issued for: [example-binding]
Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715374545618-6181fc272c6f9-55ff07f4-97d0ac76] to complete...done.
Created policyBinding [example-binding].

REST

policyBindings.create 메서드는 정책 바인딩을 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • RESOURCE_TYPE: 정책 바인딩이 하위 요소인 Resource Manager 리소스(프로젝트, 폴더, 조직)의 유형입니다. projects, folders, organizations 값을 사용합니다.

    리소스 유형은 정책 바인딩의 주 구성원 집합에 따라 달라집니다. 사용할 리소스 유형을 확인하려면 지원되는 주 구성원 유형을 참조하세요.

  • RESOURCE_ID: 정책 바인딩이 하위 요소인 프로젝트, 폴더 또는 조직의 ID입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • BINDING_ID: 정책 바인딩의 고유 이름입니다(예: example-binding).
  • DISPLAY_NAME: 선택사항. 인간이 읽을 수 있는 바인딩에 대한 설명입니다(예: Example binding). 표시 이름은 최대 63자(영문 기준)까지 입력할 수 있습니다.
  • PRINCIPAL_SET: 정책을 바인딩하려는 주 구성원 집합입니다. 유효한 주 구성원 유형 목록은 지원되는 주 구성원 집합을 참조하세요. 정책 바인딩을 만든 후에는 이 값을 변경할 수 없습니다.
  • ORG_ID: 주 구성원 집합에 바인딩하려는 주 구성원 액세스 경계 정책을 소유하는 조직의 ID입니다. 조직 ID는 123456789012와 같은 숫자입니다.
  • PAB_POLICY_ID: 주 구성원 집합에 바인딩하려는 주 구성원 액세스 경계 정책의 ID입니다(예: example-pab-policy). 정책 바인딩을 만든 후에는 이 값을 변경할 수 없습니다.
  • CONDITION_DETAILS: 선택사항. 주 구성원 집합에서 주 구성원 액세스 경계 정책이 적용되는 주 구성원을 지정하는 조건 표현식입니다. 다음 필드가 포함됩니다.

    • expression: Common Expression Language(CEL) 구문을 사용하는 조건 표현식입니다. 표현식은 principal.type 또는 principal.subject 속성을 참조해야 합니다. 다른 속성은 지원되지 않습니다.

      표현식은 논리 연산자(&&, ||, !)를 최대 10개까지 포함할 수 있고 표현식 최대 길이는 250자(영문 기준)입니다.

    • title: 선택사항. 조건 목적에 대한 간단한 요약입니다.
    • description: (선택사항) 조건에 대한 자세한 설명입니다.

HTTP 메서드 및 URL:

POST https://iam.googleapis.com/v3beta/RESOURCE_TYPE/RESOURCE_ID/locations/global/policyBindings?policyBindingId=BINDING_ID

JSON 요청 본문:

{
  "displayName": DISPLAY_NAME,
  "target": {
    "principalSet": PRINCIPAL_SET
  },
  "policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
  "policy": "organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID",
  "condition": {
    CONDITION_DETAILS
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답에는 요청에 해당하는 장기 실행 작업이 포함됩니다.

{
  "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3beta.OperationMetadata",
    "createTime": "2024-05-10T20:32:00.898809495Z",
    "target": "organizations/123456789012/locations/global/policyBindings/example-binding",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3beta"
  },
  "done": false
}

다음 단계