Administra las ACL de REST de Lakehouse Iceberg

Lakehouse para Apache Iceberg admite el control de acceso a nivel del catálogo, del espacio de nombres y 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 de tiempo de ejecución de Lakehouse administra los metadatos, mientras que las políticas de Identity and Access Management (IAM) definen los permisos. Puedes usar la consola deGoogle Cloud o la CLI de gcloud 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 (LCA) de los catálogos, los espacios de nombres y las tablas de Iceberg, pídele a tu administrador que te otorgue los siguientes roles de IAM:

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.

Alcance de los roles de IAM

Puedes otorgar roles de IAM en diferentes niveles de la jerarquía de recursos:

  • Nivel del proyecto: Otorga acceso a todos los recursos de Lakehouse en el proyecto.
  • Nivel del catálogo: Otorga acceso a los recursos que pertenecen al catálogo especificado.
  • Nivel de espacio de nombres: Otorga acceso a los recursos que pertenecen al espacio de nombres especificado.
  • Nivel de tabla: Otorga acceso solo a la tabla especificada.

Roles de IAM pertinentes

En la siguiente lista, se muestran algunos de los roles de IAM comunes que puedes aplicar a los recursos de Lakehouse. Para obtener una lista completa de los roles disponibles y sus permisos asociados, consulta Roles de IAM 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 versiones: Almacena tus archivos de políticas en un sistema de control de versión.

Aplica roles de ACL a los catálogos

En la siguiente sección, se muestra cómo aplicar LCA a los catálogos.

gcloud

Obtén la política de IAM

Para ver la política de IAM actual en un catálogo de Iceberg de Lakehouse, usa el comando gcloud alpha biglake iceberg catalogs get-iam-policy.

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

    gcloud alpha biglake iceberg catalogs get-iam-policy CATALOG_NAME \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • CATALOG_NAME: Es el nombre del extremo del catálogo de REST de Apache Iceberg.
    • PROJECT_ID: 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 un catálogo de Lakehouse para Iceberg, usa el comando gcloud alpha biglake iceberg catalogs 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 alpha biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

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

Aplica roles de LCA a espacios de nombres

En la siguiente sección, se muestra cómo aplicar ACL a los espacios de nombres.

La consola de Google Cloud no muestra ni administra las políticas de IAM heredadas.

Console

  1. En la consola de Google Cloud , abre la página Lakehouse.

    Ir a Lakehouse

  2. Selecciona un catálogo existente o crea uno si no tienes.

  3. En la tabla Detalles del espacio de nombres, selecciona un espacio de nombres y expande las opciones del menú ().

  4. Haz clic en Administrar permisos.

    Aparecerá el diálogo Share permissions.

  5. Haz clic en Agregar principal.

  6. En el campo Principales nuevas, ingresa la cuenta principal a la que deseas asignar roles.

  7. En Selecciona un rol, elige un rol para asignarle a la cuenta principal.

  8. Haz clic en Guardar.

  9. Haz clic en Cerrar.

gcloud

Obtén la política de IAM

Para ver la política de IAM actual en un espacio de nombres de Iceberg de Lakehouse, usa el comando gcloud alpha biglake iceberg namespaces get-iam-policy.

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

    gcloud alpha biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \
        --catalog=CATALOG_NAME \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • NAMESPACE_NAME: Es el nombre del espacio de nombres de destino dentro del catálogo.
    • CATALOG_NAME: Es el nombre del extremo del catálogo de REST de Apache Iceberg.
    • PROJECT_ID: 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 un espacio de nombres de Iceberg de Lakehouse, usa el comando gcloud alpha biglake iceberg namespaces 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 alpha biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \
        --catalog=CATALOG_NAME \
        --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • NAMESPACE_NAME: Es el nombre del espacio de nombres de destino dentro del catálogo.
    • 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.
    • PROJECT_ID: Es el ID del proyecto de Google Cloud .

Aplica roles de LCA a las tablas

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

La consola de Google Cloud no muestra ni administra las políticas de IAM heredadas.

Console

  1. En la consola de Google Cloud , abre la página Lakehouse.

    Ir a Lakehouse

  2. Selecciona un catálogo existente o crea uno si no tienes.

  3. En la tabla Detalles del espacio de nombres, haz clic en el nombre del espacio de nombres que contiene tu tabla.

  4. En la página Detalles de la tabla, selecciona una tabla y expande las opciones del menú ().

  5. Haz clic en Administrar permisos.

    Aparecerá el diálogo Share permissions.

  6. Haz clic en Agregar principal.

  7. En el campo Principales nuevas, ingresa la cuenta principal a la que deseas asignar roles.

  8. En Selecciona un rol, elige un rol para asignarle a la cuenta principal.

  9. Haz clic en Guardar.

  10. Haz clic en Cerrar.

gcloud

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: 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?