Policy

ID 및 액세스 관리(IAM) 정책은 Google Cloud 리소스에 대한 액세스 제어를 지정합니다.

Policybindings의 모음입니다. binding은 하나 이상의 members 또는 주 구성원을 단일 role에 바인딩합니다. 주 구성원은 사용자 계정, 서비스 계정, Google 그룹, 도메인(예: G Suite)일 수 있습니다. role은 이름이 지정된 권한 목록입니다. 각 role은 IAM 사전 정의된 역할 또는 사용자가 만든 커스텀 역할일 수 있습니다.

일부 유형의 Google Cloud 리소스의 경우 binding은 표현식이 true로 평가될 때만 리소스 액세스를 허용하는 논리 표현식인 condition을 지정할 수 있습니다. 조건은 요청, 리소스 또는 둘 모두를 기준으로 제약조건을 추가할 수 있습니다. IAM 정책의 지원을 지원하는 리소스에 대해 알아보려면 IAM 문서를 참조하세요.

JSON 예시:

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-project-id@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:eve@example.com"
          ],
          "condition": {
            "title": "expirable access",
            "description": "Does not grant access after Sep 2020",
            "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
          }
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }

YAML 예시:

    bindings:
    - members:
      - user:mike@example.com
      - group:admins@example.com
      - domain:google.com
      - serviceAccount:my-project-id@appspot.gserviceaccount.com
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:eve@example.com
      role: roles/resourcemanager.organizationViewer
      condition:
        title: expirable access
        description: Does not grant access after Sep 2020
        expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
    etag: BwWWja0YfJA=
    version: 3

IAM 및 IAM 기능에 대한 설명은 IAM 문서를 참조하세요.

JSON 표현
{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "etag": string
}
필드
version

integer

정책의 형식을 지정합니다.

유효한 값은 0, 1, 3입니다. 잘못된 값을 지정하는 요청은 거부됩니다.

조건부 역할 결합에 영향을 미치는 모든 작업은 3 버전을 지정해야 합니다. 이 요구사항은 다음 작업에 적용됩니다.

  • 조건부 역할 binding이 포함된 정책 가져오기
  • 정책에 조건부 역할 binding 추가
  • 정책에서 조건부 역할 binding 변경
  • 조건이 포함된 정책에서 조건 유무와 관계없이 역할 binding 삭제

중요: IAM 조건을 사용하는 경우 setIamPolicy를 호출할 때마다 etag 필드를 포함해야 합니다. 이 필드를 제외하면 IAM을 통해 버전 3 정책으로 1 정책을 덮어쓸 수 있으며, 버전 3 정책의 모든 조건이 손실됩니다.

정책에 조건이 포함되어 있지 않으면 해당 정책에 대한 작업에서 유효한 버전을 지정하거나 필드를 설정하지 않은 상태로 둘 수 있습니다.

IAM 정책의 지원을 지원하는 리소스에 대해 알아보려면 IAM 문서를 참조하세요.

bindings[]

object (Binding)

members 또는 주 구성원 목록을 role에 연결합니다. 선택사항으로, bindings의 적용 방법과 시기를 결정하는 condition을 지정할 수 있습니다. 각 bindings에는 하나 이상의 주 구성원을 포함해야 합니다.

하나의 Policy 안의 bindings은 최대 1,500개의 주 구성원을 참조할 수 있습니다. 이러한 주 구성원 중에서 Google 그룹은 최대 250개까지 가능합니다. 주 구성원이 나타날 때마다 이러한 한도에 반영됩니다. 예를 들어 bindingsuser:alice@example.com에 50가지 역할을 부여하고, 다른 어떤 주 구성원에도 역할을 부여하지 않은 경우, Policybindings에 1,450개의 주 구성원을 추가할 수 있습니다.

etag

string (bytes format)

etag는 동시에 발생한 여러 정책 업데이트가 서로를 덮어쓰지 않도록 방지하는 낙관적 동시 실행 제어에 사용됩니다. 정책 업데이트를 수행할 때 읽기-수정-쓰기 주기에서 시스템이 etag를 활용하여 경합 상태를 방지하는 것이 좋습니다. etaggetIamPolicy에 대한 응답으로 반환되며, setIamPolicy 요청에 해당 etag를 넣어 변경사항이 정책의 동일한 버전에 적용되도록 해야 합니다.

중요: IAM 조건을 사용하는 경우 setIamPolicy를 호출할 때마다 etag 필드를 포함해야 합니다. 이 필드를 제외하면 IAM을 통해 버전 3 정책으로 1 정책을 덮어쓸 수 있으며, 버전 3 정책의 모든 조건이 손실됩니다.

base64 인코딩 문자열입니다.

Binding

members 또는 주 구성원을 role과 연결합니다.

JSON 표현
{
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object (Expr)
  }
}
필드
role

string

members 또는 주 구성원 목록에 할당된 역할입니다. 예를 들면 roles/viewer, roles/editor, roles/owner입니다.

IAM 역할 및 권한에 대한 개요는 IAM 문서를 참조하세요. 사전 정의된 사용 가능한 역할의 목록은 여기를 참조하세요.

members[]

string

Google Cloud 리소스에 대한 액세스를 요청하는 주 구성원을 지정합니다. members는 다음 값을 가질 수 있습니다.

  • allUsers: Google 계정 유무에 관계없이 임의의 인터넷 사용자를 나타내는 특수한 식별자입니다.

  • allAuthenticatedUsers: Google 계정 또는 서비스 계정으로 인증한 사용자를 나타내는 특수한 식별자입니다. ID 제휴를 통해 외부 ID 공급업체(IdP)에서 가져온 ID는 포함되지 않습니다.

  • user:{emailid}: 특정 Google 계정을 나타내는 이메일 주소입니다. 예를 들면 alice@example.com입니다.

  • serviceAccount:{emailid}: Google 서비스 계정을 나타내는 이메일 주소입니다. 예를 들면 my-other-app@appspot.gserviceaccount.com입니다.

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: Kubernetes 서비스 계정의 식별자입니다. 예를 들면 my-project.svc.id.goog[my-namespace/my-kubernetes-sa]입니다.

  • group:{emailid}: Google 그룹을 나타내는 이메일 주소입니다. 예를 들면 admins@example.com입니다.

  • domain:{domain}: 해당 도메인의 모든 사용자를 나타내는 G Suite 도메인(기본)입니다. 예를 들면 google.com 또는 example.com입니다.
  • principal://iam.googleapis.com/locations/global/workforcePools/{poolId}/subject/{subject_attribute_value}: 직원 ID 풀의 단일 ID

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{poolId}/group/{groupId}: 그룹의 모든 직원 ID

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{poolId}/attribute.{attributeName}/{attributeValue}: 특정 속성값의 모든 직원 ID

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{poolId}/*: 직원 ID 풀의 모든 ID

  • principal://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/subject/{subject_attribute_value}: 워크로드 아이덴티티 풀의 단일 ID

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/group/{groupId}: 워크로드 아이덴티티 풀 그룹

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/attribute.{attributeName}/{attributeValue}: 특정 속성이 있는 워크로드 아이덴티티 풀의 모든 ID

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/*: 워크로드 아이덴티티 풀의 모든 ID

  • deleted:user:{emailid}?uid={uniqueid}: 최근에 삭제된 사용자를 나타내는 이메일 주소 및 고유 식별자입니다. 예를 들면 alice@example.com?uid=123456789012345678901입니다. 사용자가 복구되면 이 값은 user:{emailid}로 되돌아가고 복구된 사용자는 binding에서 역할을 유지합니다.

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: 최근에 삭제된 서비스 계정을 나타내는 이메일 주소 및 고유 식별자입니다. 예를 들면 my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901입니다. 서비스 계정이 삭제 취소되면 이 값은 serviceAccount:{emailid}로 되돌아가고 삭제되지 않은 서비스 계정은 binding에서 역할을 유지합니다.

  • deleted:group:{emailid}?uid={uniqueid}: 최근에 삭제된 Google 그룹을 나타내는 이메일 주소 및 고유 식별자입니다. 예를 들면 admins@example.com?uid=123456789012345678901입니다. 그룹이 복구되면 이 값은 group:{emailid}로 되돌아가고 복구된 그룹은 binding에서 역할을 유지합니다.

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{poolId}/subject/{subject_attribute_value}: 직원 ID 풀의 단일 ID입니다. 예를 들면 deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value입니다.

condition

object (Expr)

이 결합에 연결된 조건입니다.

조건이 true로 평가되면 이 binding이 현재 요청에 적용됩니다.

조건이 false로 평가되면 이 binding이 현재 요청에 적용되지 않습니다. 그러나 다른 역할 결합은 이 binding에 있는 하나 이상의 주 구성원에게 동일한 역할을 부여할 수 있습니다.

IAM 정책의 지원을 지원하는 리소스에 대해 알아보려면 IAM 문서를 참조하세요.