- Representación JSON0
- Vinculación
- Expr
- AuditConfig
- AuditLogConfig
- LogType
- Regla
- Acción
- Condición
- Atr
- Atr
- Operador
- LogConfig
- CounterOptions
- CustomField
- DataAccessOptions
- LogMode
- CloudAuditOptions
- LogName
- AuthorizationLoggingOptions
- PermissionType
- PermissionType
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. |
rules[] |
Si se especifica más de una regla, las reglas se aplican de la siguiente manera: - Siempre se aplican todas las reglas de LOG que coincidan. - Si coincide alguna regla DENY/DENY_WITH_LOG, se rechaza el permiso. Se aplicarán registros si una o más reglas coincidentes requieren que se registren. - De lo contrario, si alguna regla ALLOW/ALLOW_WITH_LOG coincide, se otorga el permiso. Se aplicarán registros si una o más reglas coincidentes requieren que se registren. - De lo contrario, si no se aplica ninguna regla, se deniega el permiso. |
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. |
bindingId |
|
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. 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 |
ignoreChildExemptions |
|
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 |
Regla
Una regla que se aplicará en una política.
Representación JSON |
---|
{ "description": string, "permissions": [ string ], "action": enum ( |
Campos | |
---|---|
description |
Descripción legible de la regla. |
permissions[] |
Un permiso es una cadena de forma " |
action |
Requeridos |
in[] |
Si se especifican una o más cláusulas “in”, la regla coincidirá si PRINCIPAL/AUTHORITY_SELECTOR se encuentra en al menos una de estas entradas. |
notIn[] |
Si se especifican una o más cláusulas “notIn”, la regla coincidirá si PRINCIPAL/AUTHORITY_SELECTOR no se encuentra en ninguna de las entradas. |
conditions[] |
Restricciones adicionales que deben cumplirse. Se deben aprobar todas las condiciones para que la regla coincida. |
logConfig[] |
La configuración que se muestra a los llamadores de CheckPolicy para cualquier entrada que coincida con la acción LOG. |
Acción
Tipos de acciones de las reglas.
Enums | |
---|---|
NO_ACTION |
Ninguna acción predeterminada. |
ALLOW |
Las “Entradas” coinciden con otorgar acceso. |
ALLOW_WITH_LOG |
Si las “Entradas” coinciden, otorga acceso y el emisor promete registrar la solicitud según los log_configs que se muestran. |
DENY |
Las “Entradas” coinciden con la denegación del acceso. |
DENY_WITH_LOG |
Las 'entradas' que coinciden deniegan el acceso y el emisor promete registrar la solicitud según los log_configs que se muestran. |
LOG |
Cuando las “Entradas” coinciden, se le indica a IAM.Verifica a los emisores que generen registros. |
Condición
Una condición que se debe cumplir.
Representación JSON |
---|
{ "op": enum ( |
Campos | |
---|---|
op |
Operador para aplicar el sujeto. |
values[] |
Los objetos de la condición. |
Campo de unión Subject . Sujeto de la condición. Subject puede ser solo uno de los siguientes: |
|
iam |
Atributos de confianza proporcionados por el sistema de IAM. |
sys |
Atributos de confianza proporcionados por cualquier servicio que posee recursos y usa el sistema de IAM para el control de acceso. |
svc |
Atributos de confianza que dio el servicio de baja. |
Attr
Tipos de atributos.
Enums | |
---|---|
NO_ATTR |
No es un atributo predeterminado. |
AUTHORITY |
Selector de autoridad principal o (si está presente) |
ATTRIBUTION |
El principal (incluso si hay un selector de autoridad), que solo se debe usar para la atribución, no para la autorización. |
SECURITY_REALM |
Cualquiera de los dominios de seguridad en IAMContext (go/security-realms). Cuando se usa con IN, la condición indica “cualquiera de los dominios de la solicitud coincide con uno de los valores especificados; con NOT_IN, “ninguno de los dominios coincide con ninguno de los valores especificados”. Ten en cuenta que un valor puede ser: - “self:campus” (es decir, clientes que se encuentran en el mismo campus) - “self:metro” (es decir, clientes que están en la misma área metropolitana) - “self:cloud-region” (es decir, permitir conexiones de clientes que se encuentran en la misma región de la nube) - “self:m: prod-region permiten conexiones de los mismos clientes” de la misma región de la nube (pro. Para obtener más información, consulta go/security-realms-glossary#guardian). - "self" [OBSOLETO] (es decir, permitir conexiones de clientes que se encuentran en el mismo dominio de seguridad, que actualmente, pero no se garantiza que sea del tamaño de un campus) - un dominio (p. ej., 'campus-abc'): Un grupo de dominio (p.ej., "realms-for-borg-cell-xx", consulta: go/realm-groups) Una coincidencia se determina mediante una verificación de membresía a un grupo de dominios que realiza un objeto RealmAclRep (go/realm-acl-howto). No se permite otorgar acceso en función de la ausencia de un dominio, por lo que sus condiciones solo se pueden usar en un contexto “positivo” (p.ej., ALLOW/IN o DENY/NOT_IN). |
APPROVER |
Un responsable de aprobación (distinto del solicitante) que autorizó esta solicitud. Cuando se usa con IN, la condición indica que uno de los responsables de aprobación asociados con la solicitud coincide con la principal especificada o es miembro del grupo indicado. Los responsables de aprobación solo pueden otorgar acceso adicional y, por lo tanto, solo se utilizan en un contexto estrictamente positivo (p.ej., ALLOW/IN o DENY/NOT_IN). |
JUSTIFICATION_TYPE |
Los tipos de justificaciones que se proporcionaron con esta solicitud. Los valores de cadena deben coincidir con los nombres de enumeración de security.credentials.JustificationType, p.ej., "MANUAL_STRING". No se permite otorgar acceso en función de la ausencia de una justificación, por lo que las condiciones de justificación solo se pueden usar en un contexto "positivo" (p.ej., ALLOW/IN o DENY/NOT_IN). Existen varias justificaciones, p.ej., un ID de Buganizer y un motivo ingresado manualmente, que son normales y compatibles. |
CREDENTIALS_TYPE |
El tipo de credenciales que se proporcionaron con esta solicitud. Los valores de cadena deben coincidir con los nombres de enumeración de security_loas_l2.CredentialsType. Por el momento, solo se admite CREDS_TYPE_EMERGENCY. No se permite otorgar acceso en función de la ausencia de un tipo de credencial, por lo que las condiciones solo se pueden usar en un contexto “positivo” (p.ej., ALLOW/IN o DENY/NOT_IN). |
CREDS_ASSERTION |
EXPERIMENTAL -- NO USAR. Las condiciones solo se pueden usar en un contexto “positivo” (p.ej., ALLOW/IN o DENY/NOT_IN). |
Attr
Tipos de atributos.
Enums | |
---|---|
NO_ATTR |
Tipo predeterminado que no es un atributo |
REGION |
Región del recurso |
SERVICE |
Nombre del servicio |
NAME |
Nombre del recurso |
IP |
Dirección IP del emisor |
Operador
Tipos de operadores de condiciones.
Enums | |
---|---|
NO_OP |
No-op predeterminada. |
EQUALS |
OBSOLETO. En su lugar, usa IN. |
NOT_EQUALS |
OBSOLETO. En su lugar, usa NOT_IN. |
IN |
La condición es verdadera si el sujeto (o cualquier elemento de él si es un conjunto) coincide con cualquiera de los valores proporcionados. |
NOT_IN |
La condición es verdadera si el sujeto (o todos sus elementos si es un conjunto) coincide con ninguno de los valores proporcionados. |
DISCHARGED |
Se dio de baja al sujeto |
LogConfig
Especifica qué tipo de registro debe escribir el emisor
Representación JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de unión type . Se debe configurar type solo puede ser una de las siguientes opciones: |
|
counter |
Opciones de mostrador. |
dataAccess |
Opciones de acceso a los datos. |
cloudAudit |
Opciones de auditoría de Cloud. |
CounterOptions
Incrementa un contador de streamz con la métrica especificada y los nombres de campo.
Los nombres de las métricas deben comenzar con “/”, escribir solo en minúscula y terminar en “_count”. Los nombres de los campos no deben contener una barra inicial. Los nombres reales de las métricas exportadas tendrán “/iam/policy” antepuesto.
Los nombres de los campos corresponden a los parámetros de solicitud de IAM y los valores de los campos son sus respectivos valores.
Nombres de campo admitidos: - “authority”, que es “[token]” si IAMContext.token está presente; de lo contrario, es el valor de IAMContext.authority_selector, si está presente, y, de lo contrario, es una representación de IAMContext.principal; o - “iamPrincipal”, una representación de IAMContext.principal, incluso si hay un selector de token o de autoridad, o - “” (cadena vacía), que genera un contador sin campos.
Ejemplos: contador { metric: "/debug_access_count" field: "iamPrincipal" } ==> contador de incremento /iam/policy/debug_access_count {iamPrincipal=[valor de IAMContext.principal]}
Representación JSON |
---|
{
"metric": string,
"field": string,
"customFields": [
{
object ( |
Campos | |
---|---|
metric |
La métrica que se actualizará. |
field |
El valor del campo que se atribuirá. |
customFields[] |
Campos personalizados |
CustomField
Campos personalizados Estos se pueden usar para crear un contador con pares de campo/valor arbitrarios. Consulta go/rpcsp-custom-fields.
Representación JSON |
---|
{ "name": string, "value": string } |
Campos | |
---|---|
name |
El nombre es el nombre del campo. |
value |
El valor es el valor del campo. Es importante que, a diferencia de CounterOptions.field, el valor aquí sea una constante que no se derive de IAMContext. |
DataAccessOptions
Cómo escribir un registro de acceso a los datos (Gin)
Representación JSON |
---|
{
"logMode": enum ( |
Campos | |
---|---|
logMode |
|
isDirectAuth |
Indica que una política de otorgamiento normal otorgó acceso |
LogMode
Especifica el comportamiento del cliente en el registro de Gin.
Enums | |
---|---|
LOG_MODE_UNSPECIFIED |
No es necesario que el cliente escriba un registro Gin parcial inmediatamente después de la verificación de autorización. Si el cliente elige escribir una y falla, puede que se produzca un error al abrir (permitir que la operación continúe) o que falle (manejar como resultado DENY). |
LOG_FAIL_CLOSED |
La operación de la aplicación en el contexto en el que se realiza esta verificación de autorización solo se puede realizar si se registra correctamente en Gin. Por ejemplo, la biblioteca de autorización puede cumplir con esta obligación emitiendo una entrada de registro parcial en el momento de la verificación de autorización y solo mostrando PERMITIR a la aplicación si tiene éxito. Si una regla coincidente tiene esta directiva, pero el cliente no indicó que cumplirá con esos requisitos, la verificación de IAM generará un error de autorización configurando CheckPolicyResponse.success=false. |
CloudAuditOptions
Escribe un registro de auditoría de Cloud
Representación JSON |
---|
{ "logName": enum ( |
Campos | |
---|---|
logName |
El logName que se propagará en el Registro de auditoría de Cloud. |
authorizationLoggingOptions |
Información que usa la canalización de Cloud Audit Logging. Dejará de estar disponible una vez que se complete la migración a PermissionType (b/201806118). |
permissionType |
Es el tipo asociado con el permiso. |
LogName
Enum de nombres de registro.
Enums | |
---|---|
UNSPECIFIED_LOG_NAME |
predeterminada. No se debe usar. |
ADMIN_ACTIVITY |
Corresponde a "cloudaudit.googleapis.com/activity". |
DATA_ACCESS |
Corresponde a "cloudaudit.googleapis.com/dataAccess". |
AuthorizationLoggingOptions
Información relacionada con la autorización que usa Cloud Audit Logging.
Representación JSON |
---|
{
"permissionType": enum ( |
Campos | |
---|---|
permissionType |
El tipo de permiso que se verificó. |
PermissionType
Es la lista de tipos de permisos válidos que se pueden verificar.
Enums | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
predeterminada. No se debe usar. |
ADMIN_READ |
Es una lectura de datos administrativos (meta). |
ADMIN_WRITE |
Es una escritura de datos administrativos (meta). |
DATA_READ |
Es una lectura de datos estándar. |
DATA_WRITE |
Es una escritura de datos estándar. |
PermissionType
Es la lista de tipos de permisos válidos que se pueden verificar.
Enums | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
predeterminada. No se debe usar. |
ADMIN_READ |
Son permisos que restringen la lectura de la configuración de recursos o los metadatos. |
ADMIN_WRITE |
Permisos que restringen la modificación de la configuración de recursos o los metadatos. |
DATA_READ |
Son permisos que restringen la lectura de datos proporcionados por el usuario. |
DATA_WRITE |
Son permisos que controlan la escritura de datos proporcionados por el usuario. |