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 |