Package google.iam.v1

색인

IAMPolicy

API 개요

ID 및 액세스 관리(IAM) 정책을 관리합니다.

액세스 제어 기능을 제공하는 모든 API 구현은 google.iam.v1.IAMPolicy 인터페이스를 구현합니다.

데이터 모델

액세스 제어는 주 구성원(사용자 또는 서비스 계정)이 서비스에 의해 노출되는 리소스를 대상으로 작업을 수행할 때 적용됩니다. URI와 비슷한 이름으로 식별되는 리소스는 액세스 제어를 지정하는 단위입니다. 서비스를 구현할 때 리소스에 대한 액세스 제어의 세분성 및 지원되는 권한을 선택할 수 있습니다. 예를 들어, 특정 데이터베이스 서비스는 테이블 수준에서만 액세스 제어를 지정하도록 허용하는 반면 다른 데이터베이스 서비스는 열 수준에서도 액세스 제어를 지정하도록 허용할 수 있습니다.

정책 구조

google.iam.v1.Policy를 참조하세요.

액세스 제어 정책은 정책이 연결되는 리소스와 함께 암묵적으로 생성 및 삭제되므로 의도적으로 CRUD 스타일 API가 아닌 형태로 설계되었습니다.

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

리소스의 액세스 제어 정책을 가져옵니다. 리소스가 존재하지만 설정된 정책이 없는 경우 빈 정책을 반환합니다.

승인 범위

다음 OAuth 범위가 필요합니다.

  • https://www.googleapis.com/auth/cloud-platform

자세한 내용은 인증 개요를 참조하세요.

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

지정된 리소스의 액세스 제어 정책을 설정합니다. 기존 정책을 대체합니다.

NOT_FOUND, INVALID_ARGUMENT, PERMISSION_DENIED 오류를 반환할 수 있습니다.

승인 범위

다음 OAuth 범위가 필요합니다.

  • https://www.googleapis.com/auth/cloud-platform

자세한 내용은 인증 개요를 참조하세요.

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

지정된 리소스에 대해 호출자가 보유한 권한을 반환합니다. 리소스가 없으면 NOT_FOUND 오류가 아닌 빈 권한 집합이 반환됩니다.

참고: 이 작업은 승인 확인이 아닌 권한 인식 UI 및 명령줄 도구를 만들기 위해 설계되었습니다. 이 작업은 경고 없이 'fail open'될 수 있습니다.

승인 범위

다음 OAuth 범위가 필요합니다.

  • https://www.googleapis.com/auth/cloud-platform

자세한 내용은 인증 개요를 참조하세요.

AuditConfig

서비스의 감사 구성을 지정합니다. 이 구성은 로깅되는 권한 유형 및 로깅에서 제외할 ID(있는 경우)를 결정합니다. AuditConfig에는 하나 이상의 AuditLogConfig가 있어야 합니다.

allServices와 특정 서비스 모두에 AuditConfig가 있으면 해당 서비스에 두 AuditConfig의 합집합이 사용됩니다. 즉, 각 AuditConfig에 지정된 log_types가 사용 설정되며 각 AuditLogConfig의 exempted_members가 제외됩니다.

다음은 여러 AuditConfig가 있는 정책의 예입니다.

{
  "audit_configs": [
    {
      "service": "allServices",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ",
          "exempted_members": [
            "user:jose@example.com"
          ]
        },
        {
          "log_type": "DATA_WRITE"
        },
        {
          "log_type": "ADMIN_READ"
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ"
        },
        {
          "log_type": "DATA_WRITE",
          "exempted_members": [
            "user:aliya@example.com"
          ]
        }
      ]
    }
  ]
}

이 정책은 sampleservice에서 DATA_READ, DATA_WRITE, ADMIN_READ 로깅을 사용 설정합니다. 또한 DATA_READ 로깅에서 jose@example.com을 제외하고 DATA_WRITE 로깅에서 aliya@example.com을 제외합니다.

필드
service

string

감사 로깅을 사용 설정할 서비스를 지정합니다. 예를 들면 storage.googleapis.com, cloudsql.googleapis.com입니다. allServices는 모든 서비스를 포괄하는 특수한 값입니다.

audit_log_configs[]

AuditLogConfig

각 권한 유형의 로깅에 대한 구성입니다.

AuditLogConfig

권한 유형 로깅에 대한 구성을 제공합니다. 예를 들면 다음과 같습니다.

{
  "audit_log_configs": [
    {
      "log_type": "DATA_READ",
      "exempted_members": [
        "user:jose@example.com"
      ]
    },
    {
      "log_type": "DATA_WRITE"
    }
  ]
}

여기에서는 'DATA_READ' 및 'DATA_WRITE' 로깅을 사용 설정하고 jose@example.com을 DATA_READ 로깅에서 제외합니다.

필드
log_type

AuditLogConfig.LogType

이 구성이 사용 설정하는 로그 유형입니다.

exempted_members[]

string

이 권한 유형을 로깅하지 않는 ID를 지정합니다. Binding.members와 동일한 형식을 따릅니다.

LogType

로깅을 구성할 수 있는 유효한 권한 유형의 목록입니다. 관리자 쓰기는 항상 로깅되며 구성할 수 없습니다.

열거형
LOG_TYPE_UNSPECIFIED 경우의 기본값. 이 값을 지정하면 안 됩니다.
ADMIN_READ 관리자 읽기. 예: CloudIAM getIamPolicy
DATA_WRITE 데이터 쓰기. 예: CloudSQL Users create
DATA_READ 데이터 읽기. 예: CloudSQL Users list

Binding

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

필드
role

string

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

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/{pool_id}/subject/{subject_attribute_value}: 직원 ID 풀의 단일 ID

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

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

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

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

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

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

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*: 워크로드 아이덴티티 풀의 모든 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/{pool_id}/subject/{subject_attribute_value}: 직원 ID 풀의 단일 ID입니다. 예를 들면 deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value입니다.

condition

Expr

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

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

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

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

GetIamPolicyRequest

GetIamPolicy 메서드의 요청 메시지입니다.

필드
resource

string

필수 항목입니다. 정책을 요청할 리소스입니다. 이 필드의 적절한 값은 리소스 이름을 참조하세요.

options

GetPolicyOptions

선택사항입니다. GetIamPolicy에 대한 옵션을 지정하기 위한 GetPolicyOptions 객체입니다.

GetPolicyOptions

GetIamPolicy에 제공된 설정을 캡슐화합니다.

필드
requested_policy_version

int32

선택사항입니다. 정책 형식을 지정하는 데 사용할 최대 정책 버전입니다.

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

조건부 역할 바인딩이 있는 정책 요청은 버전 3을 지정해야 합니다. 조건부 역할 바인딩이 없는 정책은 유효한 값을 지정하거나 필드를 설정되지 않은 상태로 둘 수 있습니다.

응답의 정책은 지정된 정책 버전을 사용하거나 더 낮은 정책 버전을 사용할 수 있습니다. 예를 들어 버전 3을 지정했지만 정책에 조건부 역할 바인딩이 없으면 응답은 버전 1을 사용합니다.

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

정책

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 문서를 참조하세요.

필드
version

int32

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

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

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

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

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

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

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

bindings[]

Binding

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

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

audit_configs[]

AuditConfig

이 정책의 Cloud Audit Logging 구성을 지정합니다.

etag

bytes

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

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

SetIamPolicyRequest

SetIamPolicy 메서드의 요청 메시지입니다.

필드
resource

string

필수 항목입니다. 정책을 지정할 리소스입니다. 이 필드의 적절한 값은 리소스 이름을 참조하세요.

policy

Policy

필수 항목입니다. resource에 적용할 전체 정책입니다. 정책의 크기는 수십 KB로 제한됩니다. 빈 정책도 유효한 정책이지만, Projects 등의 특정 Google Cloud 서비스에서 거부될 수 있습니다.

update_mask

FieldMask

선택사항. 수정할 정책 필드를 지정하는 FieldMask입니다. 마스크에 있는 필드만 수정됩니다. 마스크를 제공하지 않으면 다음 기본 마스크가 사용됩니다.

paths: "bindings, etag"

TestIamPermissionsRequest

TestIamPermissions 메서드의 요청 메시지입니다.

필드
resource

string

필수 항목입니다. 정책 세부정보를 요청하는 리소스입니다. 이 필드의 적절한 값은 리소스 이름을 참조하세요.

permissions[]

string

resource 확인을 위한 권한 집합입니다. 와일드 카드가 있는 권한(예: *, storage.*)은 허용되지 않습니다. 자세한 내용은 IAM 개요를 참조하세요.

TestIamPermissionsResponse

TestIamPermissions 메서드의 응답 메시지입니다.

필드
permissions[]

string

TestPermissionsRequest.permissions 중에서 호출자에게 허용되는 하위 집합입니다.