Policy

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

Una Policy es un conjunto de bindings . Un binding vincula a uno o más members , o principales, a un único role . Los 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 IAM o un rol personalizado creado por el usuario.

Para algunos tipos de recursos de Google Cloud, un 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 añadir restricciones basadas en los atributos de la solicitud, el recurso o ambos. Para saber qué recursos admiten condiciones en sus políticas de IAM, consulte la documentación de IAM .

Ejemplo de JSON:

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:[email protected]",
            "group:[email protected]",
            "domain:google.com",
            "serviceAccount:[email protected]"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:[email protected]"
          ],
          "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:[email protected]
      - group:[email protected]
      - domain:google.com
      - serviceAccount:[email protected]
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:[email protected]
      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, consulte 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 especifiquen un valor no válido se rechazan.

Cualquier operación que afecte a las vinculaciones de roles condicionales debe especificar la versión 3 Este requisito se aplica a las siguientes operaciones:

  • Obtener una política que incluya un enlace de rol condicional
  • Agregar un enlace de rol condicional a una política
  • Cambiar un enlace de rol condicional en una política
  • Eliminar cualquier vinculación de roles, con o sin una condición, de una política que incluye condiciones

Importante: Si usa condiciones de IAM, debe incluir el campo etag al llamar a setIamPolicy . Si omite este campo, IAM le permite sobrescribir una política de la versión 3 con una de la versión 1 , y se perderán todas las condiciones de la política de la versión 3 .

Si una política no incluye ninguna condición, las operaciones en 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, consulte la documentación de IAM .

bindings[]

object ( Binding )

Asocia una lista de members o principales a un role . Opcionalmente, puede especificar una condition que determine cómo y cuándo se aplican las bindings . Cada bindings debe contener al menos un principal.

Las bindings de una Policy pueden hacer referencia a un máximo de 1500 principales; hasta 250 de estos principales pueden ser grupos de Google. Cada instancia de un principal cuenta para estos límites. Por ejemplo, si las bindings otorgan 50 roles diferentes a user:[email protected] y no a ningún otro principal, se pueden agregar otros 1450 principales a las bindings de la Policy .

auditConfigs[]

object ( AuditConfig )

Especifica la configuración del registro de auditoría en la nube para esta política.

etag

string ( bytes format)

etag se utiliza para el control de concurrencia optimista y así evitar que las actualizaciones simultáneas de una política se sobrescriban. Se recomienda encarecidamente que los sistemas utilicen la etag en el ciclo de lectura-modificación-escritura para realizar actualizaciones de políticas y así evitar condiciones de competencia: Se devuelve una etag en la respuesta a getIamPolicy y se espera que los sistemas la incluyan en la solicitud a setIamPolicy para garantizar que el cambio se aplique a la misma versión de la política.

Importante: Si usa condiciones de IAM, debe incluir el campo etag al llamar a setIamPolicy . Si omite este campo, IAM le permite sobrescribir una política de la versión 3 con una de la versión 1 , y se perderán todas las condiciones de la política de la versión 3 .

Una cadena codificada en base64.

Vinculante

members asociados, o principales, con un role .

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

string

Rol asignado a la lista de members o directores. Por ejemplo, roles/viewer , roles/editor o roles/owner .

Para obtener una descripción general de los roles y permisos de IAM, consulte la documentación de IAM . Para obtener una lista de los roles predefinidos disponibles, consulte aquí .

members[]

string

Especifica los principales que solicitan acceso a un recurso de Google Cloud. members pueden tener los siguientes valores:

  • allUsers : un identificador especial que representa a cualquier persona que esté en Internet; con o sin una cuenta de Google.

  • allAuthenticatedUsers : Un identificador especial que representa a cualquier persona autenticada con una cuenta de Google o una cuenta de servicio. No incluye identidades provenientes de proveedores de identidad externos (IdP) mediante federación de identidades.

  • user:{emailid} : Una dirección de correo electrónico que representa una cuenta de Google específica. Por ejemplo, [email protected] .

  • serviceAccount:{emailid} : Una dirección de correo electrónico que representa una cuenta de servicio de Google. Por ejemplo, [email protected] .

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}] : Identificador de una cuenta de servicio de Kubernetes . Por ejemplo, my-project.svc.id.goog[my-namespace/my-kubernetes-sa] .

  • group:{emailid} : Una dirección de correo electrónico que representa un grupo de Google. Por ejemplo, [email protected] .

  • domain:{domain} : El dominio principal de G Suite que representa a todos los usuarios de ese dominio. Por ejemplo, google.com o example.com .
  • principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value} : una única identidad en un grupo de identidades de fuerza de trabajo.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId} : todas las identidades de fuerza laboral en un grupo.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value} : todas las identidades de fuerza laboral con un valor de atributo específico.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/* : Todas las identidades en un grupo de identidades de fuerza laboral.

  • principal://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value} : una única identidad en un grupo de identidades de carga de trabajo.

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId} : un grupo de identidades de carga de trabajo.

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value} : todas las identidades en un grupo de identidades de carga de trabajo con un atributo determinado.

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/* : Todas las identidades en un grupo de identidades de carga de trabajo.

  • deleted:user:{emailid}?uid={uniqueid} : Una dirección de correo electrónico (más un identificador único) que representa a un usuario eliminado recientemente. Por ejemplo, [email protected]?uid=123456789012345678901 . Si se recupera el usuario, este valor vuelve a user:{emailid} y el usuario recuperado conserva el rol en la vinculación.

  • deleted:serviceAccount:{emailid}?uid={uniqueid} : Una dirección de correo electrónico (con su identificador único) que representa una cuenta de servicio eliminada recientemente. Por ejemplo, [email protected]?uid=123456789012345678901 . Si la cuenta de servicio se recupera, este valor vuelve a serviceAccount:{emailid} y la cuenta recuperada conserva el rol en el enlace.

  • deleted:group:{emailid}?uid={uniqueid} : Una dirección de correo electrónico (más un identificador único) que representa un grupo de Google eliminado recientemente. Por ejemplo, [email protected]?uid=123456789012345678901 . Si se recupera el grupo, este valor vuelve a group:{emailid} y el grupo recuperado conserva la función en la vinculación.

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value} : Se eliminó una sola identidad de un grupo de identidades de personal. Por ejemplo, deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value .

condition

object ( Expr )

La condición que está asociada con este enlace.

Si la condición se evalúa como true , entonces este enlace se aplica a la solicitud actual.

Si la condición se evalúa como false , esta vinculación no se aplica a la solicitud actual. Sin embargo, una vinculación de rol diferente podría otorgar la misma función a uno o más de los principales de esta vinculación.

Para saber qué recursos admiten condiciones en sus políticas de IAM, consulte 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 expresión similar a C. La sintaxis y la semántica de CEL están documentadas 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. Consulte la documentación del servicio para obtener más información.

Representación JSON
{
  "expression": string,
  "title": string,
  "description": string,
  "location": string
}
Campos
expression

string

Representación textual de una expresión en la sintaxis del lenguaje de expresión común.

title

string

Opcional. Título de la expresión, es decir, una cadena corta que describe su propósito. Esto puede usarse, por ejemplo, en interfaces de usuario que permiten introducir la expresión.

description

string

Opcional. Descripción de la expresión. Este texto es más largo y describe la expresión, por ejemplo, al pasar el cursor sobre ella en una interfaz de usuario.

location

string

Opcional. Cadena que indica la ubicación de la expresión para el informe de errores, por ejemplo, un nombre de archivo y una posición en el archivo.

Configuración de auditoría

Especifica la configuración de auditoría de un servicio. Esta configuración determina qué tipos de permisos se registran y qué identidades, si las hay, quedan exentas del registro. Una configuración de auditoría (AuditConfig) debe tener una o más configuraciones de registro (AuditLogConfig).

Si hay AuditConfigs tanto para allServices como para un servicio específico, se utiliza la unión de las dos AuditConfigs para ese servicio: se habilitan los log_types especificados en cada AuditConfig y se eximen los exceptedMembers en cada AuditLogConfig.

Ejemplo de política con múltiples AuditConfigs:

{
  "auditConfigs": [
    {
      "service": "allServices",
      "auditLogConfigs": [
        {
          "logType": "DATA_READ",
          "exemptedMembers": [
            "user:[email protected]"
          ]
        },
        {
          "logType": "DATA_WRITE"
        },
        {
          "logType": "ADMIN_READ"
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com",
      "auditLogConfigs": [
        {
          "logType": "DATA_READ"
        },
        {
          "logType": "DATA_WRITE",
          "exemptedMembers": [
            "user:[email protected]"
          ]
        }
      ]
    }
  ]
}

Para sampleservice, esta política habilita el registro de DATA_READ, DATA_WRITE y ADMIN_READ. También exime [email protected] del registro de DATA_READ y [email protected] 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 o 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.

Configuración del registro de auditoría

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

{
  "auditLogConfigs": [
    {
      "logType": "DATA_READ",
      "exemptedMembers": [
        "user:[email protected]"
      ]
    },
    {
      "logType": "DATA_WRITE"
    }
  ]
}

Esto habilita el registro de 'DATA_READ' y 'DATA_WRITE', mientras que exime a [email protected] 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 generan registro para este tipo de permiso. Sigue el mismo formato que Binding.members .

Tipo de registro

Lista de tipos de permisos válidos para los que se puede configurar el registro. Las escrituras del administrador siempre se registran y no son configurables.

Enumeraciones
LOG_TYPE_UNSPECIFIED Caso predeterminado. Nunca debería ser así.
ADMIN_READ El administrador lee. Ejemplo: CloudIAM getIamPolicy
DATA_WRITE Escritura de datos. Ejemplo: Los usuarios de CloudSQL crean
DATA_READ Lecturas de datos. Ejemplo: Lista de usuarios de CloudSQL