政策

定义 Identity and Access Management (IAM) 政策,指定 Cloud Platform 资源的访问权限控制政策。

Policy 由一系列 bindings 组成。binding 将一系列 members 绑定到一个 role,其中成员可以是用户帐号、Google 群组、Google 网域及服务帐号。role 是 IAM 定义的权限的命名列表。

JSON 示例

{
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:mike@example.com",
        "group:admins@example.com",
        "domain:google.com",
        "serviceAccount:my-other-app@appspot.gserviceaccount.com"
      ]
    },
    {
      "role": "roles/viewer",
      "members": ["user:sean@example.com"]
    }
  ]
}

YAML 示例

bindings:
- members:
  - user:mike@example.com
  - group:admins@example.com
  - domain:google.com
  - serviceAccount:my-other-app@appspot.gserviceaccount.com
  role: roles/owner
- members:
  - user:sean@example.com
  role: roles/viewer

如需了解 IAM 及其功能,请参阅 IAM 开发者指南

JSON 表示法

{
  "version": number,
  "bindings": [
    {
      object(Binding)
    }
  ],
  "auditConfigs": [
    {
      object(AuditConfig)
    }
  ],
  "etag": string
}
字段
version
(deprecated)

number

已弃用。

bindings[]

object(Binding)

将一系列 members 关联到 role。没有成员的 bindings 将导致错误。

auditConfigs[]

object(AuditConfig)

指定此政策的 Cloud Audit Logging 配置。

etag

string (bytes format)

etag 用于乐观并发控制,帮助防止对政策的同时更新相互覆盖。强烈建议系统在读取-修改-写入周期中使用 etag 来执行政策更新以避免竞争条件:返回 etag 来响应 getIamPolicy,系统应将 etag 放入对 setIamPolicy 的请求中,以确保其更改将应用于同一版本的政策中。

如果在调用 setIamPolicy 时未提供 etag,则现有政策将被覆盖而毫无提示。

Base64 编码的字符串。

Binding

membersrole 关联。

JSON 表示法

{
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object(Expr)
  }
}
字段
role

string

分配给 members 的角色,例如 roles/viewerroles/editorroles/owner

members[]

string

指定请求访问 Cloud Platform 资源的身份。members 可以具有以下值:

  • allUsers:一个特殊的标识符,代表互联网上的任何人(无论是否有 Google 帐号)。

  • allAuthenticatedUsers:一个特殊的标识符,代表已使用 Google 帐号或服务帐号进行身份验证的任何人。

  • user:{emailid}:一个代表特定 Google 帐号的电子邮件地址,例如 alice@gmail.com

  • serviceAccount:{emailid}:一个代表服务帐号的电子邮件地址,例如 my-other-app@appspot.gserviceaccount.com

  • group:{emailid}:一个代表 Google 群组的电子邮件地址,例如 admins@example.com

  • domain:{domain}:一个 Google Apps 域名,代表该网域的所有用户,例如 google.comexample.com

condition

object(Expr)

未实现。与此绑定关联的条件。注意:若不满足条件,则不允许用户通过当前绑定进行访问。不同的绑定(包括其条件)是独立检查的。

Expr

代表表达式文本。示例:

title: "User account presence"
description: "Determines whether the request has a user account"
expression: "size(request.user) > 0"
JSON 表示法

{
  "expression": string,
  "title": string,
  "description": string,
  "location": string
}
字段
expression

string

采用通用表达式语言语法的表达式的文本表示法。

包含消息的应用上下文决定支持 CEL 的哪个常用特征集。

title

string

表达式的可选标题,例如描述其用途的短字符串。这可以用于允许输入表达式的内容(例如界面)中。

description

string

表达式的可选描述。这是描述表达式的较长文本,例如当鼠标悬停在界面中的表达式上时显示的文本。

location

string

为错误报告指示表达式的位置的可选字符串,例如文件名和在文件中的位置。

AuditConfig

指定服务的审核配置。该配置决定在日志记录中包含哪些权限类型,以及排除哪些身份(若有)。AuditConfig 必须具有一个或多个 AuditLogConfig。

如果 allServices 和特定服务都有 AuditConfig,则两个 AuditConfig 的并集用于该服务:启用每个 AuditConfig 中指定的 log_types,并且排除每个 AuditLogConfig 中的 exemptedMembers。

具有多个 AuditConfig 的示例政策如下所示:

{
  "auditConfigs": [
    {
      "service": "allServices"
      "auditLogConfigs": [
        {
          "logType": "DATA_READ",
          "exemptedMembers": [
            "user:foo@gmail.com"
          ]
        },
        {
          "logType": "DATA_WRITE",
        },
        {
          "logType": "ADMIN_READ",
        }
      ]
    },
    {
      "service": "fooservice.googleapis.com"
      "auditLogConfigs": [
        {
          "logType": "DATA_READ",
        },
        {
          "logType": "DATA_WRITE",
          "exemptedMembers": [
            "user:bar@gmail.com"
          ]
        }
      ]
    }
  ]
}

对于 fooservice,此政策为 DATA_READ、DATA_WRITE 和 ADMIN_READ 活动启用日志记录。此政策还在日志记录中排除 foo@gmail.com 的 DATA_READ 活动和 bar@gmail.com 的 DATA_WRITE 活动。

JSON 表示法

{
  "service": string,
  "auditLogConfigs": [
    {
      object(AuditLogConfig)
    }
  ]
}
字段
service

string

指定将为审核日志记录启用的服务,例如 storage.googleapis.comcloudsql.googleapis.comallServices 是一个涵盖所有服务的特殊值。

auditLogConfigs[]

object(AuditLogConfig)

对每种类型权限进行日志记录的配置。

AuditLogConfig

提供用于对一种权限进行日志记录的配置。示例:

{
  "auditLogConfigs": [
    {
      "logType": "DATA_READ",
      "exemptedMembers": [
        "user:foo@gmail.com"
      ]
    },
    {
      "logType": "DATA_WRITE",
    }
  ]
}

这会为 DATA_READ 和 DATA_WRITE 活动启用日志记录,同时从日志记录中排除 foo@gmail.com 的 DATA_READ 活动。

JSON 表示法

{
  "logType": enum(LogType),
  "exemptedMembers": [
    string
  ]
}
字段
logType

enum(LogType)

此配置启用的日志类型。

exemptedMembers[]

string

指定对于哪些身份不在日志记录中记录此类权限的活动。遵循与 Binding.members 相同的格式。

LogType

可以配置日志记录的有效权限类型的列表。管理员写入活动始终会被记录,并且不可配置。

枚举
LOG_TYPE_UNSPECIFIED 默认设置。切勿使用此值。
ADMIN_READ 管理员读取。示例:CloudIAM getIamPolicy
DATA_WRITE 数据写入。示例:CloudSQL 用户创建
DATA_READ 数据读取。示例:CloudSQL 用户列出