Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation - Amazon Simple Storage Service

Gerenciar o acesso a uma tabela ou a um banco de dados com o Lake Formation

Depois que os buckets de tabela são integrados aos serviços de analytics da AWS, o Lake Formation gerencia o acesso aos recursos da tabela. O Lake Formation usa um modelo de permissões próprio (permissões do Lake Formation) que permite um controle de acesso detalhado aos recursos do Catálogo de Dados. O Lake Formation exige que cada entidade principal do IAM (usuário ou perfil) seja autorizada a realizar ações nos recursos gerenciados pelo Lake Formation. Para obter mais informações, consulte “Overview of Lake Formation permissions” (Visão geral das permissões do Lake Formation) no Guia do desenvolvedor do AWS Lake Formation. Consulte informações sobre o compartilhamento de dados entre contas em Cross-account data sharing in Lake Formation no Guia do desenvolvedor do AWS Lake Formation.

Para que as entidades principais do IAM possam acessar tabelas nos serviços de analytics da AWS, você deve conceder a elas permissões do Lake Formation nesses recursos.

nota

Se você é o usuário que realizou a integração do bucket de tabela, já tem permissões do Lake Formation para as tabelas. Se você é a única entidade principal que acessará as tabelas, pode ignorar esta etapa. Você só precisa conceder permissões do Lake Formation em suas tabelas a outras entidades principais do IAM. Isso permite que outras entidades principais acessem a tabela ao executar consultas. Para obter mais informações, consulte Conceder permissão ao Lake Formation em uma tabela ou um banco de dados.

É necessário conceder a outras entidades principais do IAM as permissões do Lake Formation nos recursos de tabela para trabalhar com eles nos seguintes serviços:

  • Amazon Redshift

  • Amazon Data Firehose

  • Amazon QuickSight

  • Amazon Athena

Conceder permissão ao Lake Formation em uma tabela ou um banco de dados

Você pode conceder a uma entidade principal permissões do Lake Formation em uma tabela ou um banco de dados em um bucket de tabela por meio do console do Lake Formation ou da AWS CLI.

nota

Quando você concede permissões do Lake Formation em um recurso do catálogo de dados para uma conta externa ou diretamente para uma entidade principal do IAM em outra conta, o Lake Formation usa o serviço do AWS Resource Access Manager (AWS RAM) para compartilhar o recurso. Se a conta do concedido estiver na mesma organização da conta do concedente, o recurso compartilhado estará disponível imediatamente para o concedido. Se a conta do concedido não estiver na mesma organização, o AWS RAM envia um convite à conta do concedido para aceitar ou rejeitar a concessão do recurso. Em seguida, para disponibilizar o recurso compartilhado, o administrador do data lake deve usar o console AWS RAM ou AWS CLI para aceitar o convite na conta do concedido. Consulte mais informações sobre o compartilhamento de dados entre contas em Cross-account data sharing in Lake Formation no Guia do desenvolvedor do AWS Lake Formation.

Console
  1. Abra o console do AWS Lake Formation em https://console.aws.amazon.com/lakeformation/ e faça login como administrador do data lake. Consulte mais informações sobre como criar um administrador de data lake em Create a data lake administrator no Guia do desenvolvedor do AWS Lake Formation.

  2. No painel de navegação, escolha Permissões de dados e Conceder.

  3. Na página Conceder permissões, em Entidades principais, execute um dos seguintes procedimentos:

    • Para o Amazon Athena ou o Amazon Redshift, escolha Usuários e perfis do IAM e selecione a entidade principal do IAM que você usa para consultas.

    • Para o Amazon Data Firehose, escolha Usuários e perfis do IAM e selecione o perfil de serviço que você criou para fazer streaming para as tabelas.

    • Para o QuickSight, escolha Usuários e grupos SAML e insira o nome do recurso da Amazon (ARN) do usuário administrador do QuickSight.

    • Para acesso ao endpoint Iceberg REST do AWS Glue, escolha Usuários e perfis do IAM e selecione um perfil do IAM que você criou para seu cliente. Para obter mais informações, consulte Criar um perfil do IAM para o cliente.

  4. Em Tags do LF ou recursos de catálogo, escolha Recursos do catálogo de dados nomeados.

  5. Em Catálogos, escolha o subcatálogo que você criou ao integrar seu bucket de tabela; por exemplo, account-id:s3tablescatalog/amzn-s3-demo-bucket.

  6. Em Bancos de dados, escolha o namespace do bucket de tabela do S3 que você criou.

  7. (Opcional) Em Tabelas, escolha a tabela do S3 que você criou no bucket de tabela.

    nota

    Se você estiver criando uma tabela no editor de consultas do Athena, não selecione uma tabela.

  8. Execute um destes procedimentos:

    • Se você especificou uma tabela na etapa anterior, em Permissões de tabela, escolha Super.

    • Se você não especificou uma tabela na etapa anterior, acesse Permissões do banco de dados. Para o compartilhamento de dados entre contas, não é possível escolher Super para conceder à outra entidade principal todas as permissões no banco de dados. Em vez disso, escolha permissões mais detalhadas, como Descrever.

  9. Selecione Conceder.

CLI
  1. Você deve executar os comandos da AWS CLI a seguir como administrador do data lake. Consulte mais informações em Create a data lake administrator no Guia do desenvolvedor do AWS Lake Formation.

  2. Execute o comando a seguir para conceder permissões do Lake Formation em uma tabela no bucket de tabela do S3 a uma entidade principal do IAM para acessar a tabela. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

    aws lakeformation grant-permissions \ --region us-east-1 \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role" }, "Resource": { "Table": { "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket", "DatabaseName": "S3 table bucket namespace, for example, test_namespace", "Name": "S3 table bucket table name, for example test_table" } }, "Permissions": [ "ALL" ] }'