- JSON 表示法
- Binding
- Expr
- AuditConfig
- AuditLogConfig
- LogType
- 规则
- 操作
- 条件
- 属性
- 属性
- 运算符
- LogConfig
- CounterOptions
- CustomField
- DataAccessOptions
- LogMode
- CloudAuditOptions
- LogName
- AuthorizationLoggingOptions
- PermissionType
- PermissionType
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 配置。 |
rules[] |
如果指定了多条规则,则按以下方式应用规则:- 始终应用所有匹配的 LOG 规则。- 如果有任何 DENY/DENY_WITH_LOG 规则匹配,权限会被拒绝。如果有一条或多条匹配规则需要日志记录,则将应用日志记录。- 否则,如果任何 ALLOW/ALLOW_WITH_LOG 规则匹配,则授予权限。如果有一条或多条匹配规则需要日志记录,则将应用日志记录。- 否则,如果未应用任何规则,则系统会拒绝授予权限。 |
etag |
重要提示:如果您使用 IAM 条件,则必须在调用 base64 编码的字符串。 |
绑定
将 members
或主账号与 role
关联。
JSON 表示法 |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
字段 | |
---|---|
role |
分配给 |
members[] |
指定请求访问 Google Cloud 资源的身份。
|
condition |
与此绑定关联的条件。 如果条件的计算结果为 如果条件的计算结果为 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 IAM 文档。 |
bindingId |
|
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[] |
指定不会导致对这种权限进行日志记录的身份。遵循与 |
ignoreChildExemptions |
|
LogType
可以为其配置日志记录的有效权限类型的列表。管理员写入始终予以记录,且不可配置。
枚举 | |
---|---|
LOG_TYPE_UNSPECIFIED |
默认设置。切勿使用此值。 |
ADMIN_READ |
管理员读取。示例:CloudIAM getIamPolicy |
DATA_WRITE |
数据写入。示例:CloudSQL Users create |
DATA_READ |
数据读取。示例:CloudSQL Users list |
规则
要在 Policy 中应用的规则。
JSON 表示法 |
---|
{ "description": string, "permissions": [ string ], "action": enum ( |
字段 | |
---|---|
description |
直观易懂的规则说明。 |
permissions[] |
权限是格式为“ |
action |
需要 |
in[] |
如果指定了一个或多个“in”子句,则只要 PRINCIPAL/AUTHORITY_SELECTOR 位于至少一个条目中,规则就匹配。 |
notIn[] |
如果指定了一个或多个“notIn”子句,则当 PRINCIPAL/AUTHORITY_SELECTOR 不在任何条目中时,规则匹配。 |
conditions[] |
必须满足的其他限制。必须满足所有条件才能匹配规则。 |
logConfig[] |
针对与 LOG 操作匹配的任何条目,将配置返回给 CheckPolicy 的调用方。 |
操作
规则操作类型。
枚举 | |
---|---|
NO_ACTION |
默认为无操作。 |
ALLOW |
匹配“条目”可授予访问权限。 |
ALLOW_WITH_LOG |
匹配“条目”会授予访问权限,且调用方承诺根据返回的 log_configs 记录请求。 |
DENY |
若与“条目”匹配,则拒绝访问。 |
DENY_WITH_LOG |
匹配“条目”可拒绝访问,且调用方承诺根据返回的 log_configs 记录请求。 |
LOG |
匹配的“条目”会告知 IAM。检查调用方以生成日志。 |
条件
要满足的条件。
JSON 表示法 |
---|
{ "op": enum ( |
字段 | |
---|---|
op |
用于应用主题的运算符。 |
values[] |
条件的对象。 |
联合字段 Subject 。条件主题。Subject 只能是下列其中一项: |
|
iam |
由 IAM 系统提供的可信属性。 |
sys |
由拥有资源并使用 IAM 系统进行访问权限控制的任何服务提供的可信属性。 |
svc |
服务释放的可信属性。 |
Attr
属性类型。
枚举 | |
---|---|
NO_ATTR |
默认非属性。 |
AUTHORITY |
主账号或(如果存在)授权方选择器。 |
ATTRIBUTION |
主账号(即使存在授权方选择器),该选择器只能用于归因,不能用于授权。 |
SECURITY_REALM |
IAMContext (go/security-realms) 中的任何安全领域。与 IN 一起使用时,条件指示“请求的任何领域都与其中一个给定值匹配;对于 NOT_IN,‘任何领域都与任何给定值都不匹配”。请注意,值可以是:-“self:campus”(即在同一园区中的客户端)-“self:metro”(即位于同一都市圈的客户端)-“self:cloud-region”(即,允许来自同一云区域的客户端的连接)-“self:prodi”中的连接(即来自其所在区域的客户端),“self:prodi”中的“allowi”连接(来自其所在区域的客户端)(即来自同一区域的客户端)如需了解详情,请访问 go/security-realms-glossary#guardian。)-“self”[已弃用](即允许来自同一安全领域的客户端的连接,目前该安全领域并不保证与校园规模的连接)- 领域(例如'campus-abc') - 领域组(例如,“realms-for-borg-cell-xx”请参阅:go/realm-groups) 匹配由 RealmAclRep 对象 (go/realm-acl-howto) 执行的领域群组成员资格检查确定。不允许基于某个领域的不存在来授予访问权限,因此领域条件只能在“积极的”上下文(例如ALLOW/IN 或 DENY/NOT_IN)。 |
APPROVER |
已授权此请求的审批人(不同于请求者)。与 IN 搭配使用时,该条件表示与请求关联的某个审批人与指定的主账号匹配,或者是指定群组的成员。审批人只能授予额外的访问权限,因此只能用于绝对肯定的上下文(例如 ALLOW/IN 或 DENY/NOT_IN)。 |
JUSTIFICATION_TYPE |
此请求提供了哪些类型的理由。字符串值应与 security.credentials.JustificationType 中的枚举名称匹配,例如“MANUAL_STRING”。不允许根据缺少理由授予访问权限,因此只能在“肯定”上下文(例如ALLOW/IN 或 DENY/NOT_IN)。 多个理由(例如 Buganizer ID 和手动输入的原因)是正常且受支持的。 |
CREDENTIALS_TYPE |
随此请求提供的凭据类型。字符串值应与 security_loas_l2.CredentialsType 中的枚举名称相匹配,目前仅支持 CREDS_TYPE_EMERGENCY。不允许根据缺少凭据类型来授予访问权限,因此只能在“肯定”的上下文(例如ALLOW/IN 或 DENY/NOT_IN)。 |
CREDS_ASSERTION |
实验性 -- 请勿使用。 这些条件只能在“积极”的上下文中使用(例如,ALLOW/IN 或 DENY/NOT_IN)。 |
Attr
属性类型。
枚举 | |
---|---|
NO_ATTR |
默认非属性类型 |
REGION |
资源的区域 |
SERVICE |
服务名称 |
NAME |
资源名称 |
IP |
调用方的 IP 地址 |
运算符
条件运算符类型。
枚举 | |
---|---|
NO_OP |
默认空操作。 |
EQUALS |
已弃用。请改用 IN。 |
NOT_EQUALS |
已弃用。请改用 NOT_IN。 |
IN |
如果主题(或者它的任何元素,如果是一个集)与提供的任何值匹配,则条件为 true。 |
NOT_IN |
如果主题(或者它的每个元素,如果是一个集)与提供的值都不匹配,则条件为 true。 |
DISCHARGED |
正文已清退 |
LogConfig
指定调用方必须写入的日志类型
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 type 。必须设置 type 只能是下列其中一项: |
|
counter |
计数器选项。 |
dataAccess |
数据访问选项。 |
cloudAudit |
Cloud 审核选项。 |
CounterOptions
使用指定的指标和字段名称递增 streamz 计数器。
指标名称应以“/”开头,通常只能使用小写字母,并以“_count”结尾。字段名称不应包含初始斜杠。实际导出的指标名称会带有“/iam/policy”前缀。
字段名称对应于 IAM 请求参数,字段值是它们各自的值。
支持的字段名称:-“authority”,如果存在 IAMContext.token,则为“[token]”,否则为 IAMContext.authority_selector 的值(如果存在),否则为 IAMContext.principal 的表示法;或者 -“iamPrincipal”,表示 IAMContext.(即使存在令牌或授权方选择器),或者 - ""(空字符串),导致出现计数器字段。
示例:计数器 { metric: "/debug_access_count" field: "iamPrincipal" } ==> 递增计数器 /iam/policy/debug_access_count {iamPrincipal=[IAMContext.principal 的值]}
JSON 表示法 |
---|
{
"metric": string,
"field": string,
"customFields": [
{
object ( |
字段 | |
---|---|
metric |
要更新的指标。 |
field |
要归因的字段值。 |
customFields[] |
自定义字段。 |
CustomField
自定义字段。这些可用于创建具有任意字段/值对的计数器。请参阅:go/rpcsp-custom-fields。
JSON 表示法 |
---|
{ "name": string, "value": string } |
字段 | |
---|---|
name |
Name 为字段名称。 |
value |
value 为字段值。与 CounterOptions.field 相比,此处的值是一个不是从 IAMContext 派生的常量,这一点很重要。 |
DataAccessOptions
写入数据访问 (Gin) 日志
JSON 表示法 |
---|
{
"logMode": enum ( |
字段 | |
---|---|
logMode |
|
isDirectAuth |
表示访问权限是由常规授权政策授予的 |
LogMode
指定 Gin 日志记录的客户端行为。
枚举 | |
---|---|
LOG_MODE_UNSPECIFIED |
在授权检查完成后,客户端无需立即写入部分 Gin 日志。如果客户端选择写入一个函数但失败了,客户端可能会应急开启(允许操作继续)或应急关闭(作为 DENY 结果处理)。 |
LOG_FAIL_CLOSED |
只有在成功记录到 Gin 中后,才能执行此授权检查的应用操作。例如,授权库可通过以下方式满足此义务:在授权检查时发送部分日志条目,并且仅在成功时向应用返回 ALLOW。 如果匹配规则包含此指令,但客户端未指明它会遵循此类要求,则 IAM 检查将通过设置 CheckPolicyResponse.success=false 导致授权失败。 |
CloudAuditOptions
写入 Cloud Audit Logs
JSON 表示法 |
---|
{ "logName": enum ( |
字段 | |
---|---|
logName |
要在 Cloud Audit Record 中填充的 logName。 |
authorizationLoggingOptions |
Cloud Audit Logging 流水线使用的信息。完成向 PermissionType 的迁移后,将废弃此项 (b/201806118)。 |
permissionType |
与权限关联的类型。 |
LogName
日志名称的枚举。
枚举 | |
---|---|
UNSPECIFIED_LOG_NAME |
默认值。不应使用。 |
ADMIN_ACTIVITY |
对应于“cloudaudit.googleapis.com/activity” |
DATA_ACCESS |
对应于“cloudaudit.googleapis.com/dataAccess” |
AuthorizationLoggingOptions
Cloud Audit Logging 使用的授权相关信息。
JSON 表示法 |
---|
{
"permissionType": enum ( |
字段 | |
---|---|
permissionType |
已检查的权限的类型。 |
PermissionType
可检查的有效权限类型的列表。
枚举 | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
默认值。不应使用。 |
ADMIN_READ |
读取管理员(元)数据。 |
ADMIN_WRITE |
管理(元数据)数据的写入。 |
DATA_READ |
读取标准数据。 |
DATA_WRITE |
标准数据的写入。 |
PermissionType
可检查的有效权限类型的列表。
枚举 | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
默认值。不应使用。 |
ADMIN_READ |
控制读取资源配置或元数据的权限。 |
ADMIN_WRITE |
用于控制资源配置或元数据修改的权限。 |
DATA_READ |
用于控制读取用户提供的数据的权限。 |
DATA_WRITE |
用于控制写入用户提供的数据的权限。 |