Package google.iam.v1

Índice

IAMPolicy

Información general de la API

Administra las políticas de Identity and Access Management (IAM).

Cualquier implementación de una API que ofrezca funciones de control de acceso implementa la interfaz de google.iam.v1.IAMPolicy.

Modelo de datos

El control de acceso se aplica cuando una cuenta de servicio principal realiza alguna acción en un recurso expuesto por un servicio. Los recursos, que se identifican con nombres similares a las URI, son la unidad de especificación de control de acceso. Las implementaciones de servicio pueden elegir el nivel de detalle del control de acceso y los permisos admitidos para sus recursos. Por ejemplo, un servicio de bases de datos puede permitir que el control de acceso se especifique solo en el nivel de tabla, mientras que otro puede permitir que el control de acceso se especifique en el nivel de columna.

Estructura de la política

Consulta google.iam.v1.Policy

De forma intencional, esta no es una API de estilo CRUD porque las políticas de control de acceso se crean y borran implícitamente con los recursos a los que están vinculados.

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

Permite obtener la política de control de acceso de un recurso. Muestra una política vacía si el recurso existe y no cuenta con un conjunto de políticas.

Alcances de autorización

Requiere el siguiente alcance de OAuth:

  • https://www.googleapis.com/auth/cloud-platform

Para obtener más información, consulta Descripción general de la autenticación.

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

Permite configurar la política de control de acceso en el recurso especificado. Reemplaza todas las políticas existentes.

Puede mostrar errores NOT_FOUND, INVALID_ARGUMENT y PERMISSION_DENIED.

Alcances de autorización

Requiere el siguiente alcance de OAuth:

  • https://www.googleapis.com/auth/cloud-platform

Para obtener más información, consulta Descripción general de la autenticación.

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

Muestra los permisos que tiene un emisor para un recurso específico. Si el recurso no existe, se mostrará un conjunto vacío de permisos, en lugar de un error NOT_FOUND.

Nota: Esta operación se diseñó a fin de usarse en la creación de IU adaptadas a los permisos y de herramientas de línea de comandos, y no para la verificación de la autorización. La operación puede provocar un “fail open” sin mostrar advertencias.

Alcances de autorización

Requiere el siguiente alcance de OAuth:

  • https://www.googleapis.com/auth/cloud-platform

Para obtener más información, consulta Descripción general de la autenticación.

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 los dos AuditConfigs para ese servicio: se habilitan los log_types especificados en cada AuditConfig, y se hacen exenciones para los exempted_members en cada AuditLogConfig.

Ejemplo de una política con varios AuditConfigs:

{
  "audit_configs": [
    {
      "service": "allServices",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ",
          "exempted_members": [
            "user:jose@example.com"
          ]
        },
        {
          "log_type": "DATA_WRITE"
        },
        {
          "log_type": "ADMIN_READ"
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ"
        },
        {
          "log_type": "DATA_WRITE",
          "exempted_members": [
            "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.

Campos
service

string

Especifica un servicio que se habilitará para el registro de auditoría. Por ejemplo: storage.googleapis.com, cloudsql.googleapis.com. allServices es un valor especial que abarca todos los servicios.

audit_log_configs[]

AuditLogConfig

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:

{
  "audit_log_configs": [
    {
      "log_type": "DATA_READ",
      "exempted_members": [
        "user:jose@example.com"
      ]
    },
    {
      "log_type": "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.

Campos
log_type

AuditLogConfig.LogType

El tipo de registro que habilita esta configuración.

exempted_members[]

string

Especifica las identidades que no provocan registros para este tipo de permiso. Sigue el mismo formato de Binding.members.

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

Vinculación

Asocia members o principales con un role.

Campos
role

string

Rol que se asigna a la lista de members o principales. Por ejemplo, roles/viewer, roles/editor o roles/owner.

members[]

string

Especifica las principales que solicitan acceso para un recurso de Google Cloud. members puede tener los siguientes valores:

  • allUsers: un identificador especial que representa a cualquier persona que esté en Internet; independientemente de si tienen una Cuenta de Google o no.

  • allAuthenticatedUsers: un identificador especial que representa a cualquier persona que esté autenticada con una Cuenta de Google o una cuenta de servicio. No incluye las identidades que provienen de proveedores de identidad externos (IdP) a través de la federación de identidades.

  • user:{emailid}: una dirección de correo electrónico que representa una Cuenta de Google específica. Por ejemplo, alice@example.com.

  • serviceAccount:{emailid}: una dirección de correo electrónico que representa una cuenta de servicio de Google. Por ejemplo, my-other-app@appspot.gserviceaccount.com.

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: un identificador para 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 a un grupo de Google. Por ejemplo, admins@example.com.

  • domain:{domain}: el dominio de G Suite (principal) 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}: Identidad única en un grupo de identidad de personal.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}: Todas las identidades del personal de un grupo.

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

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

  • principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: Identidad única en un grupo de identidades para cargas de trabajo.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}: Un grupo de grupos de identidades para cargas de trabajo.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: Todas las identidades de un grupo de Workload Identity con un atributo determinado.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*: Todas las identidades en un grupo de Workload Identity.

  • deleted:user:{emailid}?uid={uniqueid}: Una dirección de correo electrónico (más el identificador único) que representa a un usuario que se borró en los últimos días. Por ejemplo, alice@example.com?uid=123456789012345678901. Si el usuario se recupera, este valor se revierte a user:{emailid}, y el usuario recuperado conserva la función en la vinculación.

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: Una dirección de correo electrónico (más el identificador único) que representa a una cuenta de servicio que se borró en los últimos días. Por ejemplo, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Si la cuenta se recupera, este valor se revierte a serviceAccount:{emailid}, y la cuenta recuperada conserva el rol en la vinculación.

  • deleted:group:{emailid}?uid={uniqueid}: Una dirección de correo electrónico (más el identificador único) que representa a un grupo de Google que se borró en los últimos días. Por ejemplo, admins@example.com?uid=123456789012345678901. Si el grupo se recupera, este valor se revierte 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}: Identidad única eliminada en un grupo de identidad de personal. Por ejemplo, deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value.

condition

Expr

La condición asociada a esta vinculación.

Si la condición se evalúa como true, esta vinculación 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 roles diferente puede otorgar el mismo rol a una o más de las principales de esta vinculación.

Para saber qué recursos admiten condiciones en sus políticas de IAM, consulta la documentación de IAM.

GetIamPolicyRequest

Mensaje de solicitud para el método GetIamPolicy.

Campos
resource

string

OBLIGATORIO. El recurso para el cual se solicita la política. Consulta Nombres de recursos a fin de conocer el valor adecuado para este campo.

options

GetPolicyOptions

OPCIONAL: Un objeto GetPolicyOptions para especificar opciones en GetIamPolicy.

GetPolicyOptions

Encapsula la configuración proporcionada a GetIamPolicy.

Campos
requested_policy_version

int32

Opcional. La versión máxima de la política que se usará para dar formato a la política.

Los valores válidos son 0, 1 y 3. Se rechazarán las solicitudes que especifiquen un valor no válido.

Las solicitudes de políticas con vinculaciones de roles condicionales deben especificar la versión 3. Las políticas sin vinculaciones de roles condicionales pueden especificar cualquier valor válido o dejar el campo sin configurar.

La política en la respuesta puede usar la versión de la política que especificaste o una versión anterior. Por ejemplo, si especificas la versión 3, pero la política no tiene vinculaciones de roles condicionales, la respuesta usa la versión 1.

Para saber qué recursos admiten condiciones en sus políticas de IAM, consulta la documentación de IAM.

Política

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

Campos
version

int32

Especifica el formato de la política.

Los valores válidos son 0, 1 y 3. Las solicitudes que especifican un valor no válido se rechazan.

Las operaciones que afecten las vinculaciones de funciones condicionales deben especificar la versión 3. Este requisito se aplica a las siguientes operaciones:

  • Obtener una política que incluya una vinculación de funciones condicional
  • Agregar una vinculación de funciones condicional a una política
  • Cambiar una vinculación de funciones condicional en una política
  • Quitar cualquier vinculación de funciones, con o sin condición, de una política que incluya condiciones

Importante: Si usas Condiciones de IAM, debes incluir el campo etag cuando llames a setIamPolicy. Si omites este campo, IAM te permite reemplazar una política de versión 3 por una de versión 1, y se pierden todas las condiciones de la política de versión 3.

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[]

Binding

Asocia una lista de members o principales, con un role. De forma alternativa, puede especificar una condition que determine cómo y cuándo se aplicarán las bindings. Cada bindings deben contener al menos una principal.

Las bindings de una Policy pueden hacer referencia hasta a 1,500 principales; hasta 250 de estas principales pueden ser Grupos de Google. Cada caso de una principal se tiene en cuenta para estos límites. Por ejemplo, si las bindings otorgan 50 roles diferentes a user:alice@example.com y a ninguna otra principal, puedes agregar otras 1,450 principales a las bindings en la Policy.

audit_configs[]

AuditConfig

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

etag

bytes

etag se usa para el control de simultaneidad optimista, como una forma de evitar que las actualizaciones simultáneas de una política se reemplacen entre sí. Se recomienda que los sistemas usen la etag en el ciclo de lectura, modificación y escritura para realizar actualizaciones de políticas a fin de evitar condiciones de carrera: se muestra una etag en la respuesta a getIamPolicy, y se espera que los sistemas incluyan esa ETag en la solicitud a setIamPolicy para garantizar que el cambio se aplique a la misma versión de la política.

Importante: Si usas Condiciones de IAM, debes incluir el campo etag cuando llames a setIamPolicy. Si omites este campo, IAM te permite reemplazar una política de versión 3 por una de versión 1, y se pierden todas las condiciones de la política de versión 3.

SetIamPolicyRequest

Mensaje de solicitud para el método SetIamPolicy.

Campos
resource

string

OBLIGATORIO. El recurso para el que se especifica la política. Consulta Nombres de recursos para conocer el valor adecuado para este campo.

policy

Policy

OBLIGATORIO. La política completa que se debe aplicar al resource. El tamaño de la política se limita a unas pocas decenas de KB. Las políticas vacías se consideran válidas, pero algunos servicios de Google Cloud (como los proyectos) podrían rechazarlas.

update_mask

FieldMask

OPCIONAL. Una FieldMask que especifica los campos de la política que se deben modificar. Solo se modificarán los campos de la máscara. Si no se proporciona una, se usa la siguiente máscara predeterminada:

paths: "bindings, etag"

TestIamPermissionsRequest

Mensaje de solicitud para el método TestIamPermissions.

Campos
resource

string

OBLIGATORIO. El recurso para el que se solicitan los detalles de la política. Consulta Nombres de recursos para conocer el valor adecuado para este campo.

permissions[]

string

Corresponde al conjunto de permisos que se debe comprobar para el resource. No se permiten los permisos con comodines (como * o storage.*). Para obtener más información, consulta la Descripción general de IAM.

TestIamPermissionsResponse

Mensaje de respuesta para el método TestIamPermissions.

Campos
permissions[]

string

Un subconjunto de TestPermissionsRequest.permissions que posee el emisor.