Identity and Access Management (IAM) 政策,用于指定 Google Cloud 资源的访问权限控制。
Policy
是 bindings
的集合。binding
会将一个或多个 members
或主账号绑定到单个 role
。主账号可以是用户账号、服务账号、Google 群组以及网域(例如 G Suite)。role
是命名的权限列表;每个 role
可以是 IAM 预定义角色或用户创建的自定义角色。
对于某些类型的 Google Cloud 资源,binding
还可以指定 condition
,这是一个逻辑表达式。只有在此表达式的计算结果为 true
时才允许访问资源。条件可以根据请求和/或资源的特性添加限制条件。如需了解哪些资源支持在其 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 文档。
JSON 表示法 |
---|
{ "version": integer, "bindings": [ { object ( |
字段 | |
---|---|
version |
指定政策的格式。 有效值为 任何影响条件角色绑定的操作都必须指定版本
重要提示:如果您使用 IAM 条件,则必须在调用 如果政策不包含任何条件,则对该政策执行的操作可以指定任何有效版本,也可以不设置该字段。 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 IAM 文档。 |
bindings[] |
将一组
|
auditConfigs[] |
指定此政策的 Cloud Audit Logging 配置。 |
etag |
重要提示:如果您使用 IAM 条件,则必须在调用 base64 编码的字符串。 |
绑定
将 members
或主账号与 role
关联。
JSON 表示法 |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
字段 | |
---|---|
role |
分配给 |
members[] |
指定请求访问 Google Cloud 资源的身份。
|
condition |
与此绑定关联的条件。 如果条件的计算结果为 如果条件的计算结果为 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 IAM 文档。 |
Expr
表示采用通用表达式语言 (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 |
采用通用表达式语言语法的表达式的文本表示法。 |
title |
可选。表达式的标题,即说明表达式用途的短字符串。该标题可用于允许输入表达式的内容(例如界面)中。 |
description |
可选。表达式的说明。该说明是描述表达式的较长文本,例如在界面中将鼠标悬停在表达式上时显示的文本。 |
location |
可选。字符串,指示用于错误报告的表达式的位置,例如文件名和文件中的位置。 |
AuditConfig
指定服务的审核配置。该配置决定要记录哪些权限类型,以及不记录哪些身份(若有)。AuditConfig 必须具有一个或多个 AuditLogConfig。
如果 allServices
和特定服务都具有 AuditConfig,则系统会将两个 AuditConfig 的并集用于该服务:每个 AuditConfig 中指定的 log_types 将被启用,而每个 AuditLogConfig 中的 exempted_members 将被排除。
具有多个 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[] |
指定不会导致对这种权限进行日志记录的身份。遵循与 |
LogType
可以为其配置日志记录的有效权限类型的列表。管理员写入始终予以记录,且不可配置。
枚举 | |
---|---|
LOG_TYPE_UNSPECIFIED |
默认设置。切勿使用此值。 |
ADMIN_READ |
管理员读取。示例:CloudIAM getIamPolicy |
DATA_WRITE |
数据写入。示例:CloudSQL Users create |
DATA_READ |
数据读取。示例:CloudSQL Users list |