Política

Una política de administración de identidades y accesos (IAM), que especifica los controles de acceso de los recursos de Google Cloud.

Una Policy es una colección de bindings. Una binding vincula uno o más members a una sola role. Los miembros pueden ser cuentas de usuario, cuentas de servicio, grupos de Google y dominios (como G Suite). Una role es una lista con nombre de permisos; una role puede ser una función predefinida de IAM o una función personalizada creada por el usuario.

De manera opcional, una binding puede especificar una 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 agregar restricciones en función de los atributos de la solicitud, el recurso o ambos.

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 características, consulta la documentación de IAM.

Representación JSON

{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "auditConfigs": [
    {
      object (AuditConfig)
    }
  ],
  "etag": string
}
Campos
version

integer

Especifica el formato de la política.

Los valores válidos son 0, 1 y 3. Las solicitudes que especifican un valor no válido se rechazan.

Las operaciones que afecten las vinculaciones de funciones condicionales deben especificar la versión 3. Este requisito se aplica a las siguientes operaciones:

  • Obtener una política que incluya una vinculación de funciones condicional
  • Agregar una vinculación de funciones condicional a una política
  • Cambiar una vinculación de funciones condicional en una política
  • Quitar cualquier vinculación de funciones, con o sin condición, de una política que incluya condiciones

Importante: Si usas Condiciones de IAM, debes incluir el campo etag cuando llames a setIamPolicy. Si omites este campo, IAM te permite reemplazar una política de versión 3 por una de versión 1, y se pierden todas las condiciones de la política de versión 3.

Si una política no incluye condiciones, las operaciones de esa política pueden especificar cualquier versión válida o dejar el campo sin configurar.

bindings[]

object (Binding)

Asocia una lista de members a una role. De forma alternativa, puede especificar una condition que determine cómo y cuándo se aplicarán las bindings. Las bindings deben contener al menos un miembro.

auditConfigs[]

object (AuditConfig)

Especifica la configuración de Cloud Audit Logging para esta política.

etag

string (bytes format)

etag se usa para el control de simultaneidad optimista, como una forma de evitar que las actualizaciones simultáneas de una política se reemplacen entre sí. Se recomienda encarecidamente que los sistemas usen la etag en el ciclo de lectura, modificación y escritura para realizar actualizaciones de políticas a fin de evitar condiciones de carrera: se muestra una etag en la respuesta a getIamPolicy. Se espera que los sistemas incluyan esa etag en la solicitud para setIamPolicy a fin de garantizar que el cambio se aplique a la misma versión de la política.

Importante: Si usas Condiciones de IAM, debes incluir el campo etag cuando llames a setIamPolicy. Si omites este campo, IAM te permite reemplazar una política de versión 3 por una de versión 1, y se pierden todas las condiciones de la política de versión 3.

String codificada en base 64.

Vinculación

Asocia a los members con una role.

Representación JSON

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

string

Función asignada a los members. Por ejemplo, roles/viewer, roles/editor o roles/owner.

members[]

string

Especifica qué identidades solicitan acceso al recurso de Cloud Platform, los members pueden contener los siguientes valores:

  • allUsers: un identificador especial que representa a cualquier persona que esté en Internet; independientemente de si tienen una Cuenta de Google o no.

  • allAuthenticatedUsers: un identificador especial que representa a cualquier persona que esté autenticada con una Cuenta de Google o una cuenta de servicio.

  • user:{emailid}: una dirección de correo electrónico que representa una Cuenta de Google específica. Por ejemplo, alice@example.com.

  • serviceAccount:{emailid}: una dirección de correo electrónico que representa una cuenta de servicio. Por ejemplo, my-other-app@appspot.gserviceaccount.com.

  • group:{emailid}: una dirección de correo electrónico que representa a un grupo de Google. Por ejemplo, admins@example.com

  • deleted:user:{emailid}?uid={uniqueid}: Una dirección de correo electrónico (más el identificador único) que representa a un usuario que se borró en los últimos días. Por ejemplo, alice@example.com?uid=123456789012345678901. Si el usuario se recupera, este valor se revierte a user:{emailid}, y el usuario recuperado conserva la función en la vinculación.

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: Una dirección de correo electrónico (más el identificador único) que representa a una cuenta de servicio que se borró en los últimos días. Por ejemplo, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Si la cuenta se recupera, este valor se revierte a serviceAccount:{emailid}, y la cuenta recuperada conserva la función en la vinculación.

  • deleted:group:{emailid}?uid={uniqueid}: Una dirección de correo electrónico (más el identificador único) que representa a un grupo de Google que se borró en los últimos días. Por ejemplo, admins@example.com?uid=123456789012345678901 Si el grupo se recupera, este valor se revierte a group:{emailid}, y el grupo recuperado conserva la función en la vinculación.

  • domain:{domain}: el dominio de G Suite (principal) que representa a todos los usuarios de ese dominio. Por ejemplo, google.com o example.com.
condition

object (Expr)

La condición asociada a esta vinculación. NOTA: Si una condición no se satisface, no se permitirá el acceso de los usuarios mediante la vinculación actual. Las diferentes vinculaciones, incluidas sus condiciones, se examinan de manera independiente.

Expr

Representa una expresión textual en la sintaxis de Common Expression Language (CEL). CEL es un lenguaje de expresión 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)"

El servicio que evalúa la expresión determina las variables y las funciones exactas a las que se puede hacer referencia en la expresión. Para obtener más información, consulta la documentación del servicio.

Representación JSON

{
  "expression": string,
  "title": string,
  "description": string,
  "location": string
}
Campos
expression

string

Representación textual de una expresión en sintaxis de Common Expression Language.

title

string

Opcional Título de la expresión (una string corta que describe el propósito de esta). Se puede usar, p. ej., en IU que permiten ingresar la expresión.

description

string

Opcional Descripción de la expresión. Es un texto más largo que describe a la expresión (p. ej., al desplazarse sobre ella en una IU).

location

string

Opcional. Una string que indica la ubicación de la expresión para los informes de errores (p. ej., un nombre de archivo y una posición en este).

AuditConfig

Especifica la configuración de auditoría para un servicio. La configuración determina los tipos de permisos que se registran, y qué identidades, si las hay, están exentas del registro. Un AuditConfig debe tener un AuditLogConfig o más.

Si hay AuditConfigs para allServices y un servicio específico, se usa la unión de las dos AuditConfigs para ese servicio: se habilitan los log_types especificados en cada AuditConfig y se hacen exenciones para los exemptedMembers en cada AuditLogConfig.

Ejemplo de una política con varios AuditConfigs:

{
  "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"
          ]
        }
      ]
    }
  ]
}

Para sampleservice, esta política habilita el registro de DATA_READ, DATA_WRITE y ADMIN_READ. También exime a jose@example.com del registro de DATA_READ, y a aliya@example.com del registro de DATA_WRITE.

Representación JSON

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

string

Especifica un servicio que se habilitará para el registro de auditoría. Por ejemplo: storage.googleapis.com, cloudsql.googleapis.com. allServices es un valor especial que abarca todos los servicios.

auditLogConfigs[]

object (AuditLogConfig)

La configuración para el registro de cada tipo de permiso.

AuditLogConfig

Proporciona la configuración para el registro de un tipo de permiso. Ejemplo:

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

Así se habilita el registro de DATA_READ y DATA_WRITE, y se exime a jose@example.com del registro de DATA_READ.

Representación JSON

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

enum (LogType)

El tipo de registro que habilita esta configuración.

exemptedMembers[]

string

Especifica las identidades que no provocan registros para este tipo de permiso. Sigue el mismo formato de Binding.members.

LogType

La lista de tipos de permiso válidos para los que se puede configurar el registro. Las escrituras de administradores siempre se registran y no son configurables.

Enums
LOG_TYPE_UNSPECIFIED Caso predeterminado. Nunca debería aparecer esto.
ADMIN_READ Lecturas de administrador. Ejemplo: CloudIAM getIamPolicy
DATA_WRITE Escrituras de datos. Ejemplo: CloudSQL Users create
DATA_READ Lecturas de datos. Ejemplo: CloudSQL Users list