Gerenciar ACLs de tabelas do catálogo REST do Lakehouse Iceberg

O Lakehouse para Apache Iceberg oferece suporte ao controle de acesso no nível da tabela para tabelas do Apache Iceberg no Cloud Storage que usam o catálogo do ambiente de execução do Lakehouse.

O catálogo do ambiente de execução do Lakehouse gerencia os metadados da tabela, enquanto as políticas do Identity and Access Management (IAM) definem as permissões. A CLI gcloud fornece os comandos necessários para receber e definir essas políticas do IAM.

Antes de começar

  1. Verifique se o faturamento está ativado para o Google Cloud projeto.

  2. Ative a API BigLake.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

  3. Instale e inicialize o SDK Google Cloud.
  4. Verifique se você tem um endpoint e um namespace do catálogo REST do Apache Iceberg.
  5. Verifique se você tem uma tabela do Lakehouse Iceberg no catálogo e namespace especificados.

Funções exigidas

Para receber as permissões necessárias para gerenciar listas de controle de acesso (ACLs, na sigla em inglês) para tabelas do Iceberg, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Todos: admin do BigLake (roles/biglake.admin) no projeto

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

Como funciona

As políticas do IAM definem quais principais têm papéis e permissões específicos para um recurso. É possível gerenciar o acesso aos seus recursos recebendo e definindo essas políticas.

Papéis relevantes do IAM

É possível aplicar os seguintes papéis comuns do IAM aos recursos do Lakehouse:

  • roles/biglake.admin: fornece controle total sobre os recursos do Lakehouse.
  • roles/biglake.user: permite que os principais usem recursos do Lakehouse, incluindo a leitura e gravação de dados da tabela.
  • roles/biglake.viewer: permite que os principais visualizem recursos do Lakehouse e leiam dados da tabela.

Práticas recomendadas

  • Privilégio mínimo: conceda apenas as permissões necessárias a usuários e contas de serviço.
  • Usar Etags: sempre inclua a etag de uma chamada get-iam-policy recente no arquivo de política ao usar set-iam-policy para evitar substituições não intencionais.
  • Registro de auditoria: verifique se os registros de auditoria do Cloud estão ativados para rastrear mudanças nas políticas do IAM.
  • Controle de versões: armazene seus arquivos de política em um sistema de controle de versões.

Aplicar papéis de ACL a tabelas

A seção a seguir mostra como aplicar ACLs a tabelas.

Receber a política do IAM

Para visualizar a política do IAM atual em uma tabela do Lakehouse Iceberg, use o gcloud biglake iceberg tables get-iam-policy comando.

  1. Para receber a política do IAM, execute o seguinte comando:

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

    Substitua:

    • TABLE_NAME: o nome da tabela do Lakehouse Iceberg de destino.
    • CATALOG_NAME: o nome do endpoint do catálogo REST do Apache Iceberg.
    • NAMESPACE_NAME: o nome do namespace no catálogo.
    • PROJECT_ID: o Google Cloud ID do projeto.
  2. O comando gera a política do IAM no formato YAML, que mostra as vinculações e os membros do papel atuais.

Definir a política do IAM

Para atualizar a política do IAM em uma tabela do Lakehouse Iceberg, use o comando gcloud biglake iceberg tables set-iam-policy. Esse comando usa um arquivo JSON ou YAML local que contém a política que você quer aplicar.

  1. Crie um arquivo de política local no formato JSON ou YAML. O arquivo de política precisa conter as vinculações e uma etag. O valor etag fornece controle de simultaneidade otimista para evitar a substituição de mudanças. Para receber a etag atual, execute o comando get-iam-policy primeiro.

    O exemplo a seguir mostra um arquivo de política chamado 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 definir a política do IAM, execute o seguinte comando:

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

    Substitua:

    • TABLE_NAME: o nome da tabela do Lakehouse Iceberg de destino.
    • POLICY_FILE: o caminho para o arquivo de política local.
    • CATALOG_NAME: o nome do endpoint do catálogo REST do Apache Iceberg.
    • NAMESPACE_NAME: o nome do namespace no catálogo.
    • PROJECT_ID: o Google Cloud ID do projeto.

A seguir