ID 및 액세스 관리(IAM) 정책은 Google Cloud 리소스에 대한 액세스 제어를 지정합니다.
Policy
는 bindings
의 모음입니다. 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 ( |
필드 | |
---|---|
version |
정책의 형식을 지정합니다. 유효한 값은 조건부 역할 결합에 영향을 미치는 모든 작업은
중요: IAM 조건을 사용하는 경우 정책에 조건이 포함되어 있지 않으면 해당 정책에 대한 작업에서 유효한 버전을 지정하거나 필드를 설정하지 않은 상태로 둘 수 있습니다. IAM 정책의 지원을 지원하는 리소스에 대해 알아보려면 IAM 문서를 참조하세요. |
bindings[] |
하나의 |
auditConfigs[] |
이 정책의 Cloud Audit Logging 구성을 지정합니다. |
etag |
중요: IAM 조건을 사용하는 경우 base64 인코딩 문자열입니다. |
Binding
members
또는 주 구성원을 role
과 연결합니다.
JSON 표현 |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
필드 | |
---|---|
role |
IAM 역할 및 권한에 대한 개요는 IAM 문서를 참조하세요. 사전 정의된 사용 가능한 역할의 목록은 여기를 참조하세요. |
members[] |
Google Cloud 리소스에 대한 액세스를 요청하는 주 구성원을 지정합니다.
|
condition |
이 결합에 연결된 조건입니다. 조건이 조건이 IAM 정책의 지원을 지원하는 리소스에 대해 알아보려면 IAM 문서를 참조하세요. |
Expr
Common Expression Language(CEL) 구문으로 된 텍스트 표현식을 나타냅니다. CEL은 C와 같은 표현식 언어입니다. CEL의 구문과 시맨틱스는 https://github.com/google/cel-spec에 설명되어 있습니다.
예시(비교):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
예시(균등):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
예시(로직):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
예시(데이터 조작):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
표현식 내에서 참조할 수 있는 정확한 변수와 함수는 이를 계산하는 서비스에 의해 결정됩니다. 자세한 내용은 서비스 문서를 참조하세요.
JSON 표현 |
---|
{ "expression": string, "title": string, "description": string, "location": string } |
필드 | |
---|---|
expression |
Common Expression Language 구문으로 된 표현식의 텍스트 표현입니다. |
title |
선택사항. 표현식의 제목으로, 목적을 설명하는 짧은 문자열입니다. 표현식을 입력할 수 있는 UI 등에 사용할 수 있습니다. |
description |
선택사항. 표현식에 대한 설명입니다. 표현식을 설명하는 더 긴 텍스트입니다. 예를 들어 UI에서 마우스를 가져갈 때 표시할 수 있습니다. |
location |
선택사항. 오류 보고를 위해 표현식의 위치를 나타내는 문자열입니다. 예를 들어 파일 이름 및 파일 내 위치일 수 있습니다. |
AuditConfig
서비스의 감사 구성을 지정합니다. 이 구성은 로깅되는 권한 유형 및 로깅에서 제외할 ID(있는 경우)를 결정합니다. AuditConfig에는 하나 이상의 AuditLogConfig가 있어야 합니다.
allServices
와 특정 서비스 모두에 AuditConfig가 있으면 해당 서비스에 두 AuditConfig의 합집합이 사용됩니다. 즉, 각 AuditConfig에 지정된 log_types가 사용 설정되며 각 AuditLogConfig의 exemptedMembers가 제외됩니다.
다음은 여러 AuditConfig가 있는 정책의 예입니다.
{
"auditConfigs": [
{
"service": "allServices",
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
},
{
"logType": "ADMIN_READ"
}
]
},
{
"service": "sampleservice.googleapis.com",
"auditLogConfigs": [
{
"logType": "DATA_READ"
},
{
"logType": "DATA_WRITE",
"exemptedMembers": [
"user:aliya@example.com"
]
}
]
}
]
}
이 정책은 sampleservice에서 DATA_READ, DATA_WRITE, ADMIN_READ 로깅을 사용 설정합니다. 또한 DATA_READ 로깅에서 jose@example.com
을 제외하고 DATA_WRITE 로깅에서 aliya@example.com
을 제외합니다.
JSON 표현 |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
필드 | |
---|---|
service |
감사 로깅을 사용 설정할 서비스를 지정합니다. 예를 들면 |
auditLogConfigs[] |
각 권한 유형의 로깅에 대한 구성입니다. |
AuditLogConfig
권한 유형 로깅에 대한 구성을 제공합니다. 예를 들면 다음과 같습니다.
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
여기에서는 'DATA_READ' 및 'DATA_WRITE' 로깅을 사용 설정하고 jose@example.com을 DATA_READ 로깅에서 제외합니다.
JSON 표현 |
---|
{
"logType": enum ( |
필드 | |
---|---|
logType |
이 구성이 사용 설정하는 로그 유형입니다. |
exemptedMembers[] |
이 권한 유형을 로깅하지 않는 ID를 지정합니다. |
LogType
로깅을 구성할 수 있는 유효한 권한 유형의 목록입니다. 관리자 쓰기는 항상 로깅되며 구성할 수 없습니다.
열거형 | |
---|---|
LOG_TYPE_UNSPECIFIED |
경우의 기본값. 이 값을 지정하면 안 됩니다. |
ADMIN_READ |
관리자 읽기. 예: CloudIAM getIamPolicy |
DATA_WRITE |
데이터 쓰기. 예: CloudSQL Users create |
DATA_READ |
데이터 읽기. 예: CloudSQL Users list |