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. 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 ( |
| 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 |