O Lakehouse para Apache Iceberg oferece suporte ao controle de acesso no nível do catálogo, do namespace e 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, enquanto as políticas do Identity and Access Management (IAM) definem as permissões. É possível usar o
Google Cloud console do Google Cloud ou a gcloud CLI para receber e definir essas políticas do IAM.
Antes de começar
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
-
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ãoserviceusage.services.enable. Saiba como conceder papéis. - Instale e inicialize o SDK Google Cloud.
- Verifique se você tem um endpoint e um namespace do catálogo REST do Apache Iceberg.
- Verifique se você tem uma tabela do Lakehouse Iceberg no catálogo e namespace especificados.
Funções exigidas
Para ter as permissões necessárias para gerenciar listas de controle de acesso (ACLs) para catálogos, namespaces e tabelas do Iceberg, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Todos:
administrador 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 com papéis personalizados ou outros papéis predefinidos.
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 recursos recebendo e definindo essas políticas.
Escopo dos papéis do IAM
É possível conceder papéis do IAM em diferentes níveis da hierarquia de recursos:
- Nível do projeto: concede acesso a todos os recursos do Lakehouse no projeto.
- Nível do catálogo: concede acesso a recursos pertencentes ao catálogo especificado.
- Nível do namespace: concede acesso a recursos pertencentes ao namespace especificado.
- Nível da tabela: concede acesso apenas à tabela especificada.
Papéis relevantes do IAM
A lista a seguir mostra alguns dos papéis comuns do IAM que podem ser aplicados aos recursos do Lakehouse. Para uma lista completa de papéis disponíveis e as permissões associadas, consulte Papéis do IAM 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
etagde uma chamadaget-iam-policyrecente no arquivo de política ao usarset-iam-policypara 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 os arquivos de política em um sistema de controle de versões.
Aplicar papéis de ACL a catálogos
A seção a seguir mostra como aplicar ACLs a catálogos.
gcloud
Receber a política do IAM
Para visualizar a política do IAM atual em um catálogo do Lakehouse
Iceberg, use o gcloud alpha biglake iceberg catalogs
get-iam-policy
comando.
Para receber a política do IAM, execute o seguinte comando:
gcloud alpha biglake iceberg catalogs get-iam-policy CATALOG_NAME \ --project=PROJECT_IDSubstitua:
CATALOG_NAME: o nome do endpoint do catálogo REST do Apache Iceberg.PROJECT_ID: o ID do seu Google Cloud projeto.
O comando gera a política do IAM no formato YAML, que mostra as vinculações e os membros atuais do papel.
Definir a política do IAM
Para atualizar a política do IAM em um catálogo do Lakehouse Iceberg, use o gcloud alpha biglake iceberg catalogs set-iam-policy comando.
Esse comando usa um arquivo JSON ou YAML local que contém a política que você quer aplicar.
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 valoretagfornece controle de simultaneidade otimista para evitar a substituição de mudanças. Para receber aetagatual, execute o comandoget-iam-policyprimeiro.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 }Para definir a política do IAM, execute o seguinte comando:
gcloud alpha biglake iceberg catalogs set-iam-policy CATALOG_NAME POLICY_FILE \ --project=PROJECT_IDSubstitua:
CATALOG_NAME: o nome do endpoint do catálogo REST do Apache Iceberg.POLICY_FILE: o caminho para o arquivo de política local.PROJECT_ID: o ID do projeto do. Google Cloud
Aplicar papéis de ACL a namespaces
A seção a seguir mostra como aplicar ACLs a namespaces.
O Google Cloud console do Google Cloud não mostra nem gerencia políticas do IAM herdadas.
Console
No Google Cloud console do Google Cloud, abra a página Lakehouse.
Selecione um catálogo ou crie um, se você não tiver.
Na tabela Detalhes do namespace, selecione um namespace e expanda as opções de menu ().
Clique em Gerenciar permissões.
A caixa de diálogo Compartilhar permissões aparece.
Clique em Adicionar principal.
No campo Novos principais, insira a conta principal a que você quer atribuir papéis.
Em Selecionar um papel, escolha um papel para atribuir à conta principal.
Clique em Salvar.
Clique em Fechar.
gcloud
Receber a política do IAM
Para visualizar a política do IAM atual em um namespace do Lakehouse
Iceberg, use o gcloud alpha biglake iceberg namespaces
get-iam-policy
comando.
Para receber a política do IAM, execute o seguinte comando:
gcloud alpha biglake iceberg namespaces get-iam-policy NAMESPACE_NAME \ --catalog=CATALOG_NAME \ --project=PROJECT_IDSubstitua:
NAMESPACE_NAME: o nome do namespace de destino no catálogo.CATALOG_NAME: o nome do endpoint do catálogo REST do Apache Iceberg.PROJECT_ID: o ID do seu Google Cloud projeto.
O comando gera a política do IAM no formato YAML, que mostra as vinculações e os membros atuais do papel.
Definir a política do IAM
Para atualizar a política do IAM em um namespace do Lakehouse Iceberg, use o comando gcloud alpha biglake iceberg namespaces set-iam-policy.
Esse comando usa um arquivo JSON ou YAML local que contém a política que você quer aplicar.
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 valoretagfornece controle de simultaneidade otimista para evitar a substituição de mudanças. Para receber aetagatual, execute o comandoget-iam-policyprimeiro.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 }Para definir a política do IAM, execute o seguinte comando:
gcloud alpha biglake iceberg namespaces set-iam-policy NAMESPACE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --project=PROJECT_IDSubstitua:
NAMESPACE_NAME: o nome do namespace de destino no catálogo.POLICY_FILE: o caminho para o arquivo de política local.CATALOG_NAME: o nome do endpoint do catálogo REST do Apache Iceberg.PROJECT_ID: o ID do projeto do. Google Cloud
Aplicar papéis de ACL a tabelas
A seção a seguir mostra como aplicar ACLs a tabelas.
O Google Cloud console do Google Cloud não mostra nem gerencia políticas do IAM herdadas.
Console
No Google Cloud console do Google Cloud, abra a página Lakehouse.
Selecione um catálogo ou crie um, se você não tiver.
Na tabela Detalhes do namespace, clique no nome do namespace que contém a tabela.
Na página Detalhes da tabela, selecione uma tabela e expanda as opções de menu ().
Clique em Gerenciar permissões.
A caixa de diálogo Compartilhar permissões aparece.
Clique em Adicionar principal.
No campo Novos principais, insira a conta principal a que você quer atribuir papéis.
Em Selecionar um papel, escolha um papel para atribuir à conta principal.
Clique em Salvar.
Clique em Fechar.
gcloud
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.
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_IDSubstitua:
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 ID do seu Google Cloud projeto.
O comando gera a política do IAM no formato YAML, que mostra as vinculações e os membros atuais do papel.
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.
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 valoretagfornece controle de simultaneidade otimista para evitar a substituição de mudanças. Para receber aetagatual, execute o comandoget-iam-policyprimeiro.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 }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_IDSubstitua:
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 ID do projeto do. Google Cloud
A seguir
- Saiba mais sobre IAM.
- Consulte a lista completa de papéis e permissões do IAM do Lakehouse.
- Saiba mais sobre os conceitos do Lakehouse .