Deployments: setIamPolicy

设置指定资源的访问权限控制政策。 替换任何现有政策。立即试用

请求

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 权限是格式为“..”的字符串(例如'storage.buckets.list')。值“*”与所有权限匹配,而“*”的动词部分(例如'storage.buckets.*') 会匹配所有动词。

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 权限是格式为“..”的字符串(例如'storage.buckets.list')。值“*”与所有权限匹配,而“*”的动词部分(例如'storage.buckets.*') 会匹配所有动词。

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