设置指定资源的访问权限控制政策。 替换任何现有政策。立即试用。
请求
HTTP 请求
POST https://www.googleapis.com/deploymentmanager/v2beta/projects/project /global/deployments/resource /setIamPolicy
参数
参数名称 | 值 | 说明 |
---|---|---|
路径参数 | ||
project |
string |
此请求的项目 ID。 |
resource |
string |
此请求的资源名称或 ID。 |
授权
此请求需要获得以下至少一个范围的授权:
范围 |
---|
https://www.googleapis.com/auth/cloud-platform |
https://www.googleapis.com/auth/ndev.cloudman |
请求正文
在请求正文中,请提供具有以下结构的数据:
{ "policy": { "version":integer , "bindings": [ { "role":string , "members": [string ], "condition": { "expression":string , "title":string , "description":string , "location":string } } ], "auditConfigs": [ { "service":string , "exemptedMembers": [string ], "auditLogConfigs": [ { "logType":string , "exemptedMembers": [string ], "ignoreChildExemptions":boolean } ] } ], "rules": [ { "description":string , "permissions": [string ], "action":string , "ins": [string ], "notIns": [string ], "conditions": [ { "iam":string , "sys":string , "svc":string , "op":string , "values": [string ] } ], "logConfigs": [ { "counter": { "metric":string , "field":string , "customFields": [ { "name":string , "value":string } ] }, "dataAccess": { "logMode":string }, "cloudAudit": { "logName":string , "authorizationLoggingOptions": { "permissionType":string } } } ] } ], "etag":bytes , "iamOwned":boolean }, "bindings": [ { "role":string , "members": [string ], "condition": { "expression":string , "title":string , "description":string , "location":string } } ], "etag":bytes }
属性名称 | 值 | 说明 | 备注 |
---|---|---|---|
policy |
nested object |
必需:要应用于“resource”的完整政策。政策的大小限制为几十 KB。空政策通常是有效的政策,但某些服务(例如项目)可能会拒绝它们。 | |
policy.version |
integer |
指定政策的格式。 有效值为 `0`、`1` 和 `3`。指定无效值的请求将被拒绝。 任何影响条件角色绑定的操作都必须指定版本 `3`。此要求适用于以下操作: * 获取包含条件角色绑定的政策 * 向政策添加条件角色绑定 * 更改政策中的条件角色绑定 * 从包含条件的政策中移除任何角色绑定,而无论此绑定是否含有条件 **重要提示:** 如果您使用 IAM 条件,则必须在调用 `setIamPolicy` 时包含 `etag` 字段。如果您省略此字段,IAM 会允许您使用版本 `1` 政策覆盖版本 `3` 政策,并且版本 `3` 政策中的所有条件都会丢失。 如果政策不包含任何条件,则对该政策执行的操作可以指定任何有效版本,也可以不设置该字段。 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 [IAM 文档](https://cloud.google.com/iam/help/conditions/resource-policies)。 |
|
policy.bindings[] |
list |
将一系列 `members` 与 `role` 相关联。您可以视需要指定 `condition`,以确定如何及何时应用 `bindings`。每个 `bindings` 都必须包含至少一个成员。 | |
policy.bindings[].role |
string |
分配给“members”的角色。例如“roles/viewer”“roles/editor”或“roles/owner”。 | |
policy.bindings[].members[] |
list |
指定请求访问 Cloud Platform 资源的身份。`members` 可以具有以下值: * `allUsers`:一个特殊的标识符,表示互联网上的任何人(无论是否拥有 Google 账号)。 * `allAuthenticatedUsers`:一个特殊的标识符,表示已使用 Google 账号或服务账号进行身份验证的任何用户。 * `user:{emailid}`:表示特定 Google 账号的电子邮件地址。例如,`alice@example.com`。 * `serviceAccount:{emailid}`:表示服务账号的电子邮件地址。例如,`my-other-app@appspot.gserviceaccount.com`。 * `group:{emailid}`:表示 Google 群组的电子邮件地址。例如,`admins@example.com`。 * `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}`,而且恢复的群组将保留绑定中的角色。 * `domain:{domain}`:G Suite 网域(主网域),表示该网域中的所有用户。例如,`google.com` 或 `example.com`。 |
|
policy.bindings[].condition |
nested object |
与此绑定关联的条件。 如果条件的计算结果为 `true`,则此绑定会应用于当前请求。 如果条件的计算结果为 `false`,则此绑定不会应用于当前请求。但是,不同的角色绑定可能会向此绑定中的一个或多个成员授予相同角色。 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 [IAM 文档](https://cloud.google.com/iam/help/conditions/resource-policies)。 |
|
policy.bindings[].condition.expression |
string |
采用通用表达式语言语法的表达式的文本表示法。 | |
policy.bindings[].condition.title |
string |
可选。表达式的标题,即说明表达式用途的短字符串。该标题可用于允许输入表达式的内容(例如界面)中。 | |
policy.bindings[].condition.description |
string |
可选。表达式的说明。该说明是描述表达式的较长文本,例如在界面中将鼠标悬停在表达式上时显示的文本。 | |
policy.bindings[].condition.location |
string |
可选。此字符串指示用于错误报告的表达式的位置,例如文件名和文件中的位置。 | |
policy.auditConfigs[] |
list |
指定此政策的 Cloud Audit Logging 配置。 |
|
policy.auditConfigs[].service |
string |
指定将启用审核日志记录的服务。例如“storage.googleapis.com”“cloudsql.googleapis.com”。`allServices` 是一个涵盖所有服务的特殊值。 | |
policy.auditConfigs[].exemptedMembers[] |
list |
||
policy.auditConfigs[].auditLogConfigs[] |
list |
对每种类型权限进行日志记录的配置。 | |
policy.auditConfigs[].auditLogConfigs[].logType |
string |
此配置启用的日志类型。 | |
policy.auditConfigs[].auditLogConfigs[].exemptedMembers[] |
list |
指定不会导致对这种权限进行日志记录的身份。遵循与 [Binding.members][] 相同的格式。 | |
policy.auditConfigs[].auditLogConfigs[].ignoreChildExemptions |
boolean |
||
policy.rules[] |
list |
如果指定了多个规则,系统会按以下方式应用规则:- 系统始终会应用所有匹配的 LOG 规则。- 如果有任何 DENY/DENY_WITH_LOG 规则匹配,则拒绝授予相应权限。如果一条或多条匹配的规则需要日志记录,系统就会应用日志记录。- 否则,如果任何 ALLOW/ALLOW_WITH_LOG 规则匹配,则授予相应权限。如果一条或多条匹配的规则需要日志记录,系统就会应用日志记录。- 否则,如果没有适用的规则,则拒绝授予权限。 | |
policy.rules[].description |
string |
规则的直观易懂的说明。 | |
policy.rules[].permissions[] |
list |
权限是格式为“ |
|
policy.rules[].action |
string |
必填 | |
policy.rules[].ins[] |
list |
如果指定了一个或多个“in”子句,则如果 PRINCIPAL/AUTHORITY_SELECTOR 位于其中至少一个条目中,则规则匹配。 | |
policy.rules[].notIns[] |
list |
如果指定了一个或多个“not_in”子句,则当 PRINCIPAL/AUTHORITY_SELECTOR 不在任何条目中时,规则才会匹配。 | |
policy.rules[].conditions[] |
list |
必须满足的其他限制。必须满足所有条件,规则才会匹配。 | |
policy.rules[].conditions[].iam |
string |
IAM 系统提供的可信属性。 | |
policy.rules[].conditions[].sys |
string |
拥有资源并使用 IAM 系统进行访问控制的任何服务提供的可信属性。 | |
policy.rules[].conditions[].svc |
string |
由服务提供的可信属性。 | |
policy.rules[].conditions[].op |
string |
用于应用主题的运算符。 | |
policy.rules[].conditions[].values[] |
list |
条件的对象。 | |
policy.rules[].logConfigs[] |
list |
对于与 LOG 操作匹配的任何条目,返回给 tech.iam.IAM.CheckPolicy 调用方的配置。 | |
policy.rules[].logConfigs[].counter |
nested object |
计数器选项。 | |
policy.rules[].logConfigs[].counter.metric |
string |
要更新的指标。 | |
policy.rules[].logConfigs[].counter.field |
string |
要归因的字段值。 | |
policy.rules[].logConfigs[].counter.customFields[] |
list |
自定义字段。 | |
policy.rules[].logConfigs[].counter.customFields[].name |
string |
名称是字段名称。 | |
policy.rules[].logConfigs[].counter.customFields[].value |
string |
值是字段值。请务必注意,与 CounterOptions.field 不同,此处的值是常量,并非从 IAMContext 派生而来。 | |
policy.rules[].logConfigs[].dataAccess |
nested object |
数据访问选项。 | |
policy.rules[].logConfigs[].dataAccess.logMode |
string |
||
policy.rules[].logConfigs[].cloudAudit |
nested object |
Cloud 审核选项。 | |
policy.rules[].logConfigs[].cloudAudit.logName |
string |
要在 Cloud 审核记录中填充的 log_name。 |
|
policy.rules[].logConfigs[].cloudAudit.authorizationLoggingOptions |
nested object |
Cloud Audit Logging 流水线使用的相关信息。 | |
policy.rules[].logConfigs[].cloudAudit.authorizationLoggingOptions.permissionType |
string |
所检查权限的类型。 | |
policy.etag |
bytes |
`etag` 用于乐观并发控制,可帮助防止同时对政策进行的更新相互覆盖。强烈建议系统在读取-修改-写入周期中使用 `etag` 来执行政策更新,以避免竞态条件:系统会在 `getIamPolicy` 的响应中返回 `etag`,并且系统应将该 ETag 放入 `setIamPolicy` 的请求中,以确保其更改将应用于同一版本的政策。 **重要提示:** 如果您使用 IAM 条件,则必须在调用 `setIamPolicy` 时包含 `etag` 字段。如果您省略此字段,则 IAM 允许您使用版本 `1` 政策覆盖版本 `3` 政策,而且版本 `3` 政策中的所有条件都会丢失。 |
|
policy.iamOwned |
boolean |
||
bindings[] |
list |
Flatten Policy,用于创建向后兼容的线格格式。已弃用。使用“policy”指定绑定。 | |
bindings[].role |
string |
分配给“members”的角色。例如“roles/viewer”“roles/editor”或“roles/owner”。 | |
bindings[].members[] |
list |
指定请求访问 Cloud Platform 资源的身份。`members` 可以具有以下值: * `allUsers`:一个特殊的标识符,表示互联网上的任何人(无论是否拥有 Google 账号)。 * `allAuthenticatedUsers`:一个特殊的标识符,表示已使用 Google 账号或服务账号进行身份验证的任何用户。 * `user:{emailid}`:表示特定 Google 账号的电子邮件地址。例如,`alice@example.com`。 * `serviceAccount:{emailid}`:表示服务账号的电子邮件地址。例如,`my-other-app@appspot.gserviceaccount.com`。 * `group:{emailid}`:表示 Google 群组的电子邮件地址。例如,`admins@example.com`。 * `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}`,而且恢复的群组将保留绑定中的角色。 * `domain:{domain}`:G Suite 网域(主网域),表示该网域中的所有用户。例如,`google.com` 或 `example.com`。 |
|
bindings[].condition |
nested object |
与此绑定关联的条件。 如果条件的计算结果为 `true`,则此绑定会应用于当前请求。 如果条件的计算结果为 `false`,则此绑定不会应用于当前请求。但是,不同的角色绑定可能会向此绑定中的一个或多个成员授予相同角色。 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 [IAM 文档](https://cloud.google.com/iam/help/conditions/resource-policies)。 |
|
bindings[].condition.expression |
string |
采用通用表达式语言语法的表达式的文本表示法。 | |
bindings[].condition.title |
string |
可选。表达式的标题,即说明表达式用途的短字符串。该标题可用于允许输入表达式的内容(例如界面)中。 | |
bindings[].condition.description |
string |
可选。表达式的说明。该说明是描述表达式的较长文本,例如在界面中将鼠标悬停在表达式上时显示的文本。 | |
bindings[].condition.location |
string |
可选。此字符串指示用于错误报告的表达式的位置,例如文件名和文件中的位置。 | |
etag |
bytes |
Flatten Policy,用于创建向后兼容的线格格式。已弃用。使用“policy”指定 etag。 |
响应
如果成功,此方法将返回以下结构的响应正文:
{ "version":integer , "bindings": [ { "role":string , "members": [string ], "condition": { "expression":string , "title":string , "description":string , "location":string } } ], "auditConfigs": [ { "service":string , "exemptedMembers": [string ], "auditLogConfigs": [ { "logType":string , "exemptedMembers": [string ], "ignoreChildExemptions":boolean } ] } ], "rules": [ { "description":string , "permissions": [string ], "action":string , "ins": [string ], "notIns": [string ], "conditions": [ { "iam":string , "sys":string , "svc":string , "op":string , "values": [string ] } ], "logConfigs": [ { "counter": { "metric":string , "field":string , "customFields": [ { "name":string , "value":string } ] }, "dataAccess": { "logMode":string }, "cloudAudit": { "logName":string , "authorizationLoggingOptions": { "permissionType":string } } } ] } ], "etag":bytes , "iamOwned":boolean }
属性名称 | 值 | 说明 | 备注 |
---|---|---|---|
version |
integer |
指定政策的格式。 有效值为 `0`、`1` 和 `3`。指定无效值的请求将被拒绝。 任何影响条件角色绑定的操作都必须指定版本 `3`。此要求适用于以下操作: * 获取包含条件角色绑定的政策 * 向政策添加条件角色绑定 * 更改政策中的条件角色绑定 * 从包含条件的政策中移除任何角色绑定,而无论此绑定是否含有条件 **重要提示:** 如果您使用 IAM 条件,则必须在调用 `setIamPolicy` 时包含 `etag` 字段。如果您省略此字段,IAM 会允许您使用版本 `1` 政策覆盖版本 `3` 政策,并且版本 `3` 政策中的所有条件都会丢失。 如果政策不包含任何条件,则对该政策执行的操作可以指定任何有效版本,也可以不设置该字段。 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 [IAM 文档](https://cloud.google.com/iam/help/conditions/resource-policies)。 |
|
bindings[] |
list |
将一系列 `members` 与 `role` 相关联。您可以视需要指定 `condition`,以确定如何及何时应用 `bindings`。每个 `bindings` 都必须包含至少一个成员。 | |
bindings[].role |
string |
分配给“members”的角色。例如“roles/viewer”“roles/editor”或“roles/owner”。 | |
bindings[].members[] |
list |
指定请求访问 Cloud Platform 资源的身份。`members` 可以具有以下值: * `allUsers`:一个特殊的标识符,表示互联网上的任何人(无论是否拥有 Google 账号)。 * `allAuthenticatedUsers`:一个特殊的标识符,表示已使用 Google 账号或服务账号进行身份验证的任何用户。 * `user:{emailid}`:表示特定 Google 账号的电子邮件地址。例如,`alice@example.com`。 * `serviceAccount:{emailid}`:表示服务账号的电子邮件地址。例如,`my-other-app@appspot.gserviceaccount.com`。 * `group:{emailid}`:表示 Google 群组的电子邮件地址。例如,`admins@example.com`。 * `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}`,而且恢复的群组将保留绑定中的角色。 * `domain:{domain}`:G Suite 网域(主网域),表示该网域中的所有用户。例如,`google.com` 或 `example.com`。 |
|
bindings[].condition |
nested object |
与此绑定关联的条件。 如果条件的计算结果为 `true`,则此绑定会应用于当前请求。 如果条件的计算结果为 `false`,则此绑定不会应用于当前请求。但是,不同的角色绑定可能会向此绑定中的一个或多个成员授予相同角色。 如需了解哪些资源支持在其 IAM 政策中使用条件,请参阅 [IAM 文档](https://cloud.google.com/iam/help/conditions/resource-policies)。 |
|
bindings[].condition.expression |
string |
采用通用表达式语言语法的表达式的文本表示法。 | |
bindings[].condition.title |
string |
可选。表达式的标题,即说明表达式用途的短字符串。该标题可用于允许输入表达式的内容(例如界面)中。 | |
bindings[].condition.description |
string |
可选。表达式的说明。该说明是描述表达式的较长文本,例如在界面中将鼠标悬停在表达式上时显示的文本。 | |
bindings[].condition.location |
string |
可选。此字符串指示用于错误报告的表达式的位置,例如文件名和文件中的位置。 | |
auditConfigs[] |
list |
指定此政策的 Cloud Audit Logging 配置。 |
|
auditConfigs[].service |
string |
指定将启用审核日志记录的服务。例如“storage.googleapis.com”“cloudsql.googleapis.com”。`allServices` 是一个涵盖所有服务的特殊值。 | |
auditConfigs[].exemptedMembers[] |
list |
||
auditConfigs[].auditLogConfigs[] |
list |
对每种类型权限进行日志记录的配置。 | |
auditConfigs[].auditLogConfigs[].logType |
string |
此配置启用的日志类型。 | |
auditConfigs[].auditLogConfigs[].exemptedMembers[] |
list |
指定不会导致对这种权限进行日志记录的身份。遵循与 [Binding.members][] 相同的格式。 | |
auditConfigs[].auditLogConfigs[].ignoreChildExemptions |
boolean |
||
rules[] |
list |
如果指定了多个规则,系统会按以下方式应用规则:- 系统始终会应用所有匹配的 LOG 规则。- 如果有任何 DENY/DENY_WITH_LOG 规则匹配,则拒绝授予相应权限。如果一条或多条匹配的规则需要日志记录,系统就会应用日志记录。- 否则,如果任何 ALLOW/ALLOW_WITH_LOG 规则匹配,则授予相应权限。如果一条或多条匹配的规则需要日志记录,系统就会应用日志记录。- 否则,如果没有适用的规则,则拒绝授予权限。 | |
rules[].description |
string |
规则的直观易懂的说明。 | |
rules[].permissions[] |
list |
权限是格式为“ |
|
rules[].action |
string |
必填 | |
rules[].ins[] |
list |
如果指定了一个或多个“in”子句,则如果 PRINCIPAL/AUTHORITY_SELECTOR 位于其中至少一个条目中,则规则匹配。 | |
rules[].notIns[] |
list |
如果指定了一个或多个“not_in”子句,则当 PRINCIPAL/AUTHORITY_SELECTOR 不在任何条目中时,规则才会匹配。 | |
rules[].conditions[] |
list |
必须满足的其他限制。必须满足所有条件,规则才会匹配。 | |
rules[].conditions[].iam |
string |
IAM 系统提供的可信属性。 | |
rules[].conditions[].sys |
string |
拥有资源并使用 IAM 系统进行访问控制的任何服务提供的可信属性。 | |
rules[].conditions[].svc |
string |
由服务提供的可信属性。 | |
rules[].conditions[].op |
string |
用于应用主题的运算符。 | |
rules[].conditions[].values[] |
list |
条件的对象。 | |
rules[].logConfigs[] |
list |
对于与 LOG 操作匹配的任何条目,返回给 tech.iam.IAM.CheckPolicy 调用方的配置。 | |
rules[].logConfigs[].counter |
nested object |
计数器选项。 | |
rules[].logConfigs[].counter.metric |
string |
要更新的指标。 | |
rules[].logConfigs[].counter.field |
string |
要归因的字段值。 | |
rules[].logConfigs[].counter.customFields[] |
list |
自定义字段。 | |
rules[].logConfigs[].counter.customFields[].name |
string |
名称是字段名称。 | |
rules[].logConfigs[].counter.customFields[].value |
string |
值是字段值。请务必注意,与 CounterOptions.field 不同,此处的值是常量,并非从 IAMContext 派生而来。 | |
rules[].logConfigs[].dataAccess |
nested object |
数据访问选项。 | |
rules[].logConfigs[].dataAccess.logMode |
string |
||
rules[].logConfigs[].cloudAudit |
nested object |
Cloud 审核选项。 | |
rules[].logConfigs[].cloudAudit.logName |
string |
要在 Cloud 审核记录中填充的 log_name。 |
|
rules[].logConfigs[].cloudAudit.authorizationLoggingOptions |
nested object |
Cloud Audit Logging 流水线使用的相关信息。 | |
rules[].logConfigs[].cloudAudit.authorizationLoggingOptions.permissionType |
string |
所检查权限的类型。 | |
etag |
bytes |
`etag` 用于乐观并发控制,可帮助防止同时对政策进行的更新相互覆盖。强烈建议系统在读取-修改-写入周期中使用 `etag` 来执行政策更新,以避免竞态条件:系统会在 `getIamPolicy` 的响应中返回 `etag`,并且系统应将该 ETag 放入 `setIamPolicy` 的请求中,以确保其更改会应用于同一版本的政策。 **重要提示:** 如果您使用 IAM 条件,则必须在调用 `setIamPolicy` 时包含 `etag` 字段。如果您省略此字段,则 IAM 允许您使用版本 `1` 政策覆盖版本 `3` 政策,而且版本 `3` 政策中的所有条件都会丢失。 |
|
iamOwned |
boolean |