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
une uno o más members
o principales con un solo role
. Las principales 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.
Para algunos tipos de recursos de Google Cloud, una binding
también puede especificar una condition
, que es una expresión lógica que permite el acceso 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. Para saber qué recursos admiten condiciones en sus políticas de IAM, 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 características, 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 Las operaciones que afecten las vinculaciones de funciones condicionales deben especificar la versión
Importante: Si usas Condiciones de IAM, debes incluir el campo 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. Para saber qué recursos admiten condiciones en sus políticas de IAM, consulta la documentación de IAM. |
bindings[] |
Asocia una lista de Las |
auditConfigs[] |
Especifica la configuración del registro de auditoría en la nube para esta política. |
etag |
Importante: Si usas Condiciones de IAM, debes incluir el campo String codificada en base 64. |
Vinculación
Asocia members
o principales con un role
.
Representación JSON |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
Campos | |
---|---|
role |
Rol que se asigna a la lista de Para obtener una descripción general de los roles y permisos de IAM, consulta la documentación de IAM. Para obtener una lista de los roles predefinidos disponibles, consulta aquí. |
members[] |
Especifica las principales que solicitan acceso para un recurso de Google Cloud.
|
condition |
La condición asociada a esta vinculación. Si la condición se evalúa como Si la condición se evalúa como Para saber qué recursos admiten condiciones en sus políticas de IAM, consulta la documentación de IAM. |
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 |
Representación textual de una expresión en la sintaxis de Common Expression Language. |
title |
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 |
Opcional. Descripción de la expresión. Es un texto más largo que describe la expresión (p. ej., cuando se coloca el cursor sobre ella en una IU). |
location |
Opcional. Es una cadena que indica la ubicación de la expresión para los informes de errores (p.ej., el nombre de un archivo y una posición en él). |
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 ( |
Campos | |
---|---|
service |
Especifica un servicio que se habilitará para el registro de auditoría. Por ejemplo: |
auditLogConfigs[] |
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 ( |
Campos | |
---|---|
logType |
El tipo de registro que habilita esta configuración. |
exemptedMembers[] |
Especifica las identidades que no provocan registros para este tipo de permiso. Sigue el mismo formato de |
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 |