发送反馈
Policy
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
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 (Binding
)
}
] ,
"etag" : string
}
字段
version
integer
指定政策的格式。
有效值为 0
、1
和 3
。指定无效值的请求将被拒绝。
任何影响条件角色绑定的操作都必须指定版本 3
。此要求适用于以下操作:
获取包含条件角色绑定的政策
向政策添加条件角色绑定
更改政策中的条件角色绑定
从包含条件的政策中移除任何角色绑定,而无论此绑定是否含有条件
重要提示 :如果您使用 IAM 条件,则必须在调用 setIamPolicy
时包含 etag
字段。如果您省略此字段,则 IAM 允许您使用版本 1
政策覆盖版本 3
政策,而且版本 3
政策中的所有条件都会丢失。
如果政策不包含任何条件,则对该政策执行的操作可以指定任何有效版本,也可以不设置该字段。
如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 IAM 文档 。
bindings[]
object (Binding
)
将一组 members
或主账号与一个 role
相关联。(可选)可以指定一个 condition
以确定如何及何时应用 bindings
。每个 bindings
必须至少包含一个主账号。
Policy
中的 bindings
最多可以引用 1,500 个主账号;其中,最多有 250 个主账号可以是 Google 群组。主账号的每个实例都会计入相应限制。例如,如果 bindings
向 user:alice@example.com
授予了 50 个不同的角色且没有向任何其他主账号授予角色,那么您最多还可以向 Policy
中的 bindings
添加 1,450 个主账号。
etag
string (bytes format)
etag
用于乐观并发控制,可帮助防止同时对政策进行的更新相互覆盖。强烈建议系统在“读取-修改-写入”周期中使用 etag
来执行政策更新以避免冲突:返回 etag
来响应 getIamPolicy
,系统应将该 etag 放入对 setIamPolicy
的请求中,以确保其更改将应用于同一版本的政策。
重要提示 :如果您使用 IAM 条件,则必须在调用 setIamPolicy
时包含 etag
字段。如果您省略此字段,则 IAM 允许您使用版本 1
政策覆盖版本 3
政策,而且版本 3
政策中的所有条件都会丢失。
base64 编码的字符串。
绑定
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 账号或服务账号进行身份验证的任何用户。 不包括来自外部身份提供方 (IdP) 通过身份联合的身份。
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}
:员工身份池中的单个身份。
principalSet://iam.googleapis.com/locations/global/workforcePools/{poolId}/group/{groupId}
:群组中的所有员工身份。
principalSet://iam.googleapis.com/locations/global/workforcePools/{poolId}/attribute.{attributeName}/{attributeValue}
:具有特定属性值的所有员工身份。
principalSet://iam.googleapis.com/locations/global/workforcePools/{poolId}/*
:员工身份池中的所有身份。
principal://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/subject/{subject_attribute_value}
:工作负载身份池中的单个身份。
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}
:工作负载身份池中具有特定特性的所有身份。
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/*
:工作负载身份池中的所有身份。
deleted:user:{emailid}?uid={uniqueid}
:表示最近被删除的用户的电子邮件地址(以及唯一标识符)。例如 alice@example.com?uid=123456789012345678901
。如果用户已恢复,则此值会恢复为 user:{emailid}
,而且恢复的用户将保留绑定中的角色。
deleted:serviceAccount:{emailid}?uid={uniqueid}
:表示最近被删除的服务账号的电子邮件地址(以及唯一标识符)。例如 my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901
。如果恢复删除的服务账号,则此值会还原为 serviceAccount:{emailid}
,而且删除的服务账号在恢复后将保留绑定中的角色。
deleted:group:{emailid}?uid={uniqueid}
:表示最近被删除的 Google 群组的电子邮件地址(以及唯一标识符)。例如 admins@example.com?uid=123456789012345678901
。如果群组已恢复,则此值会恢复为 group:{emailid}
,而且恢复的群组将保留绑定中的角色。
deleted:principal://iam.googleapis.com/locations/global/workforcePools/{poolId}/subject/{subject_attribute_value}
:员工身份池中已删除的单个身份。例如 deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value
。
condition
object (Expr
)
与此绑定关联的条件。
如果条件的计算结果为 true
,则此绑定会应用于当前请求。
如果条件的计算结果为 false
,则此绑定不会应用于当前请求。但是,不同的角色绑定可能会向此绑定中的一个或多个主账号授予相同角色。
如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 IAM 文档 。
发送反馈
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。有关详情,请参阅 Google 开发者网站政策 。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-10-19。
需要向我们提供更多信息?
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-10-19。"],[],[]]