Una política de Gestión de Identidades y Accesos (IAM), que especifica los controles de acceso de los recursos de Google Cloud.
Un Policy es una colección de bindings. Un binding vincula uno o varios members (o principales) a un solo role. Las entidades principales pueden ser cuentas de usuario, cuentas de servicio, grupos de Google y dominios (como G Suite). Un role es una lista de permisos con nombre. Cada role puede ser un rol predefinido de gestión de identidades y accesos o un rol personalizado creado por el usuario.
En algunos tipos de recursos de Google Cloud, un binding también puede especificar un condition, que es una expresión lógica que permite acceder a un recurso solo si la expresión se evalúa como true. Una condición puede añadir restricciones basadas en los atributos de la solicitud, del recurso o de ambos. Para saber qué recursos admiten condiciones en sus políticas de gestión de identidades y accesos, consulta la documentación de IAM.
Ejemplo de 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
    }
Ejemplo de 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
Para obtener una descripción de IAM y sus funciones, consulta la documentación de IAM.
| Representación JSON | 
|---|
| { "version": integer, "bindings": [ { object ( | 
| Campos | |
|---|---|
| version | 
 Especifica el formato de la política. Los valores válidos son  Cualquier operación que afecte a las vinculaciones de roles condicionales debe especificar la versión  
 Importante: Si usas condiciones de IAM, debes incluir el campo  Si una política no incluye ninguna condición, las operaciones de esa política pueden especificar cualquier versión válida o dejar el campo sin definir. Para saber qué recursos admiten condiciones en sus políticas de gestión de identidades y accesos, consulta la documentación de IAM. | 
| bindings[] | 
 Asocia una lista de  El  | 
| auditConfigs[] | 
 Especifica la configuración del almacenamiento de registros de auditoría en la nube de esta política. | 
| etag | 
 
 Importante: Si usas condiciones de IAM, debes incluir el campo  Cadena codificada en base64. | 
Vinculación
Asocia members (o principales) a un role.
| Representación JSON | 
|---|
| {
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object ( | 
| Campos | |
|---|---|
| role | 
 Rol asignado a la lista de  Para obtener una descripción general de los roles y permisos de gestión de identidades y accesos, consulta la documentación de gestión de identidades y accesos. Para ver una lista de los roles predefinidos disponibles, consulta este artículo. | 
| members[] | 
 Especifica las entidades que solicitan acceso a un recurso de Google Cloud.  
 
 
 
 | 
| condition | 
 La condición asociada a este enlace. Si la condición da como resultado  Si la condición se evalúa como  Para saber qué recursos admiten condiciones en sus políticas de gestión de identidades y accesos, consulta la documentación de IAM. | 
Expr
Representa una expresión textual en la sintaxis del lenguaje de expresión común (CEL). CEL es un lenguaje de expresiones similar a C. La sintaxis y la semántica de CEL se documentan en https://github.com/google/cel-spec.
Ejemplo (comparación):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
Ejemplo (igualdad):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
Ejemplo (lógica):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
Ejemplo (manipulación de datos):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
Las variables y funciones exactas a las que se puede hacer referencia en una expresión las determina el servicio que la evalúa. Consulta la documentación del servicio para obtener más información.
| Representación JSON | 
|---|
| { "expression": string, "title": string, "description": string, "location": string } | 
| Campos | |
|---|---|
| expression | 
 Representación textual de una expresión en la sintaxis del lenguaje de expresión común. | 
| title | 
 Opcional. Título de la expresión, es decir, una cadena corta que describe su finalidad. Por ejemplo, se puede usar en interfaces de usuario que permitan introducir la expresión. | 
| description | 
 Opcional. Descripción de la expresión. Este es un texto más largo que describe la expresión, por ejemplo, cuando se coloca el cursor sobre ella en una interfaz de usuario. | 
| location | 
 Opcional. Cadena que indica la ubicación de la expresión para generar informes de errores. Por ejemplo, el nombre de un archivo y una posición en el archivo. | 
AuditConfig
Define la configuración de auditoría de un servicio. La configuración determina qué tipos de permiso se registran y qué identidades, si las hay, están exentas del almacenamiento de registro. Un mensaje AuditConfig debe disponer de un mensaje AuditLogConfigs o más de uno.
Si hay AuditConfigs tanto para allServices como para un servicio específico, se usará la unión de los dos AuditConfigs para ese servicio: se habilitarán los log_types especificados en cada AuditConfig y se eximirán los exemptedMembers de cada AuditLogConfig.
Ejemplo de política con varios mensajes 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"
          ]
        }
      ]
    }
  ]
}
En el caso de sampleservice, esta política habilita el registro de DATA_READ, DATA_WRITE y ADMIN_READ. También exime a jose@example.com del registro DATA_READ y a aliya@example.com del registro DATA_WRITE.
| Representación JSON | 
|---|
| {
  "service": string,
  "auditLogConfigs": [
    {
      object ( | 
| Campos | |
|---|---|
| service | 
 Especifica un servicio que se habilitará para el almacenamiento de registro de auditoría. Por ejemplo,  | 
| auditLogConfigs[] | 
 Configuración para el almacenamiento de registro de cada tipo de permiso. | 
AuditLogConfig
Proporciona la configuración para almacenar los registros de un tipo de permisos. Ejemplo:
{
  "auditLogConfigs": [
    {
      "logType": "DATA_READ",
      "exemptedMembers": [
        "user:jose@example.com"
      ]
    },
    {
      "logType": "DATA_WRITE"
    }
  ]
}
De esta forma, se habilita el registro de "DATA_READ" y "DATA_WRITE", mientras que jose@example.com queda exento del registro de DATA_READ.
| Representación JSON | 
|---|
| {
  "logType": enum ( | 
| Campos | |
|---|---|
| logType | 
 Tipo de almacenamiento de registro que habilita esta configuración. | 
| exemptedMembers[] | 
 Especifica las identidades eximidas del registro para este tipo de permiso. Sigue el mismo formato que  | 
LogType
Lista de tipos de permisos válidos para los que se puede configurar el almacenamiento de registros. Las escrituras del administrador siempre se registran y no se pueden configurar.
| Enumeraciones | |
|---|---|
| LOG_TYPE_UNSPECIFIED | Situación predeterminada. Nunca debería figurar así. | 
| ADMIN_READ | Lecturas del administrador. Ejemplo: CloudIAM getIamPolicy | 
| DATA_WRITE | Escrituras de datos. Ejemplo: creaciones de los usuarios de CloudSQL | 
| DATA_READ | Datos leídos. Ejemplo: lista de usuarios de CloudSQL |