Administra las ACL de tablas del catálogo de REST de Iceberg de Lakehouse

Lakehouse para Apache Iceberg admite el control de acceso a nivel de la tabla para las tablas de Apache Iceberg en Cloud Storage que usan el catálogo de entornos de ejecución de Lakehouse.

El catálogo del entorno de ejecución de Lakehouse administra los metadatos de la tabla, mientras que las políticas de Identity and Access Management (IAM) definen los permisos. La CLI de gcloud proporciona los comandos necesarios para obtener y establecer estas políticas de IAM.

Antes de comenzar

  1. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

  2. Habilita la API de BigLake.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar la API

  3. Descarga y, luego, inicializa el SDK de Google Cloud:
  4. Verifica que tengas un extremo y un espacio de nombres existentes del catálogo REST de Apache Iceberg.
  5. Verifica que tengas una tabla de Lakehouse Iceberg existente en el catálogo y el espacio de nombres especificados.

Roles obligatorios

Para obtener los permisos que necesitas para administrar las listas de control de acceso (ACL) de las tablas de Iceberg, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Todos: Administrador de BigLake (roles/biglake.admin) activado para el proyecto

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Cómo funciona

Las políticas de IAM definen qué principales tienen roles y permisos específicos para un recurso. Puedes administrar el acceso a tus recursos obteniendo y configurando estas políticas.

Roles de IAM pertinentes

Puedes aplicar los siguientes roles comunes de IAM a los recursos de Lakehouse:

  • roles/biglake.admin: Proporciona control total sobre los recursos de Lakehouse.
  • roles/biglake.user: Permite que las entidades principales usen recursos de Lakehouse, lo que incluye leer y escribir datos de tablas.
  • roles/biglake.viewer: Permite que las entidades principales vean los recursos de Lakehouse y lean los datos de la tabla.

Prácticas recomendadas

  • Privilegio mínimo: Otorga solo los permisos necesarios a los usuarios y las cuentas de servicio.
  • Usa etiquetas ETag: Siempre incluye la etiqueta etag de una llamada get-iam-policy reciente en tu archivo de política cuando uses set-iam-policy para evitar reemplazos no deseados.
  • Registros de auditoría: Asegúrate de que los Registros de auditoría de Cloud estén habilitados para hacer un seguimiento de los cambios en las políticas de IAM.
  • Control de versión: Almacena tus archivos de políticas en un sistema de control de versión.

Aplica roles de LCA a las tablas

En la siguiente sección, se muestra cómo aplicar LCA a las tablas.

Obtén la política de IAM

Para ver la política de IAM actual en una tabla de Iceberg de Lakehouse, usa el comando gcloud biglake iceberg tables get-iam-policy.

  1. Para obtener la política de IAM, ejecuta el siguiente comando:

    gcloud biglake iceberg tables get-iam-policy TABLE_NAME \
        --catalog=CATALOG_NAME \
        --namespace=NAMESPACE_NAME \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • TABLE_NAME: Es el nombre de la tabla de Iceberg de Lakehouse de destino.
    • CATALOG_NAME: Es el nombre del extremo del catálogo de REST de Apache Iceberg.
    • NAMESPACE_NAME: Es el nombre del espacio de nombres dentro del catálogo.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud.
  2. El comando genera la política de IAM en formato YAML, que muestra las vinculaciones y los miembros de roles actuales.

Configura la política de IAM

Para actualizar la política de IAM en una tabla de Iceberg de Lakehouse, usa el comando gcloud biglake iceberg tables set-iam-policy. Este comando usa un archivo JSON o YAML local que contiene la política que deseas aplicar.

  1. Crea un archivo de política local en formato JSON o YAML. El archivo de política debe contener las vinculaciones y un etag. El valor de etag proporciona un control de simultaneidad optimista para evitar que se reemplacen los cambios. Para obtener el etag actual, primero ejecuta el comando get-iam-policy.

    En el siguiente ejemplo, se muestra un archivo de política llamado policy.json:

    {
      "bindings": [
        {
          "role": "roles/biglake.viewer",
          "members": [
            "user:test-user@example.com"
          ]
        },
        {
          "role": "roles/biglake.user",
          "members": [
            "user:someone@example.com"
          ]
        }
      ],
      "etag": "BwYXa9UuR8w=",
      "version": 3
    }
    
  2. Para configurar la política de IAM, ejecuta el siguiente comando:

    gcloud biglake iceberg tables set-iam-policy TABLE_NAME POLICY_FILE \
        --catalog=CATALOG_NAME \
        --namespace=NAMESPACE_NAME \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • TABLE_NAME: Es el nombre de la tabla de Iceberg de Lakehouse de destino.
    • POLICY_FILE: Es la ruta de acceso a tu archivo de política local.
    • CATALOG_NAME: Es el nombre del extremo del catálogo de REST de Apache Iceberg.
    • NAMESPACE_NAME: Es el nombre del espacio de nombres dentro del catálogo.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .

¿Qué sigue?