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 |