Configurar o acesso a bancos de dados e tabelas no AWS Glue Data Catalog
Se você usar o AWS Glue Data Catalog com o Amazon Athena, poderá definir políticas no nível do recurso para os objetos bancos de dados e tabelas do Catálogo de dados, que são usados no Athena.
nota
Este tópico aborda segurança no nível de bancos de dados e tabelas. Para obter informações sobre a configuração de segurança no nível de colunas, linhas e células, consulte Data filtering and cell-level security in Lake Formation.
Você define as permissões no nível do recurso nas políticas baseadas em identidade do IAM.
Importante
Esta seção aborda as permissões no nível do recurso nas políticas baseadas em identidade do IAM. Elas são diferentes das políticas com base em recursos. Para obter mais informações sobre as diferenças, consulte Políticas baseadas em identidade e em recurso no Guia do usuário do IAM.
Consulte os seguintes tópicos para essas tarefas:
Para executar essa tarefa | Consulte o tópico a seguir |
---|---|
Criar uma política do IAM que defina o acesso aos recursos | Criação de políticas do IAM no Guia do usuário do IAM. |
Saiba mais sobre as políticas baseadas em identidade do IAM usadas no AWS Glue | Políticas baseadas em identidades (políticas do IAM) no Guia do desenvolvedor do AWS Glue. |
Nesta seção
Limitações
Leve em conta as seguintes limitações quando usar o controle de acesso no nível de bancos de dados e tabelas para o AWS Glue Data Catalog e o Athena:
-
Os grupos de trabalho do Athena habilitados para o Centro de Identidade do IAM requerem que o Lake Formation seja configurado para usar as identidades do Centro de Identidade do IAM. Para obter mais informações, consulte Integrating IAM Identity Center no Guia do desenvolvedor do AWS Lake Formation.
-
Você pode limitar o acesso apenas a bancos de dados e tabelas. Esses controles são aplicados no nível de tabelas. Você não pode limitar o acesso a partições individuais em uma tabela. Para ter mais informações, consulte Sobre o controle de acesso para partições e versões de tabela no AWS Glue.
-
O AWS Glue Data Catalog contém os seguintes recursos:
CATALOG
,DATABASE
,TABLE
eFUNCTION
.nota
Nessa lista, os recursos em comum entre o Athena e o AWS Glue Data Catalog são
TABLE
,DATABASE
eCATALOG
para cada conta.Function
é específico de AWS Glue. Para as ações de exclusão no Athena, você deve incluir permissões para as ações do AWS Glue. Consulte Exemplos de permissões no nível de bancos de dados e tabelas.A hierarquia é a seguinte:
CATALOG
é um ancestral de todos osDATABASES
em cada conta, e cadaDATABASE
é um ancestral para todas as suasTABLES
eFUNCTIONS
. Por exemplo, para uma tabela chamadatable_test
que pertence a um banco de dadosdb
no catálogo em sua conta, seus ancestrais sãodb
e catálogo na sua conta. Para o banco de dadosdb
, seu ancestral é o catálogo em sua conta e seus descendentes são tabelas e funções. Para obter mais informações sobre a estrutura hierárquica de recursos, consulte Lista de ARNs no catálogo de dados no Guia do desenvolvedor do AWS Glue. -
Para qualquer ação do Athena que não seja de exclusão em um recurso, como
CREATE DATABASE
,CREATE TABLE
,SHOW DATABASE
,SHOW TABLE
ouALTER TABLE
, você precisa de permissões para chamar essa ação no recurso (tabela ou banco de dados) e em todos os ancestrais do recurso no Catálogo de dados. Por exemplo, para uma tabela, seus ancestrais são o banco de dados ao qual ela pertence e o catálogo da conta. Para um banco de dados, seu ancestral é o catálogo da conta. Consulte Exemplos de permissões no nível de bancos de dados e tabelas. -
Para uma ação de exclusão no Athena, como
DROP DATABASE
ouDROP TABLE
, você também precisa de permissões para chamar a ação em todos os ancestrais e descendentes do recurso no catálogo de dados. Por exemplo, para excluir um banco de dados, você precisa de permissões no banco de dados, no catálogo, que é seu ancestral, e em todas as tabelas e funções definidas pelo usuário, que são seus descendentes. Uma tabela não tem descendentes. Para executarDROP TABLE
, você precisa de permissões para essa ação na tabela, no banco de dados ao qual ela pertence e no catálogo. Consulte Exemplos de permissões no nível de bancos de dados e tabelas.
Configurar o acesso do AWS Glue ao catálogo e ao banco de dados por Região da AWS
Para que o Athena funcione com o AWS Glue, é necessária uma política que conceda acesso ao banco de dados e ao AWS Glue Data Catalog em sua Região da AWS conta. Para criar bancos de dados, a permissão CreateDatabase
também é necessária. No exemplo de política a seguir, substitua a Região da AWS, o ID da Conta da AWS e o nome do banco de dados por seus próprios dados.
{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:
us-east-1
:123456789012
:catalog", "arn:aws:glue:us-east-1
:123456789012
:database/default
" ] }
Sobre o controle de acesso para partições e versões de tabela no AWS Glue
No AWS Glue, tabelas podem ter partições e versões. As versões e partições de tabelas não são consideradas recursos independentes no AWS Glue. O acesso a versões e partições de tabela é garantido concedendo acesso na tabela e em recursos ancestrais da tabela.
Para os fins de controle de acesso, as seguintes permissões de acesso se aplicam:
-
Os controles são aplicados no nível de tabelas. Você pode limitar o acesso apenas a bancos de dados e tabelas. Por exemplo, se você permitir acesso a uma tabela particionada, esse acesso se aplicará a todas as partições na tabela. Você não pode limitar o acesso a partições individuais em uma tabela.
Importante
Para executar as ações do AWS Glue em partições, são necessárias permissões para ações de partição nos níveis do catálogo, do banco de dados e da tabela. Ter acesso às partições em uma tabela não é suficiente. Por exemplo, para executar
GetPartitions
em uma tabelamyTable
no banco de dadosmyDB
, você deve conceder permissões deglue:GetPartitions
no catálogo, no banco de dadosmyDB
e nos recursos demyTable
. -
Os controles de acesso não são aplicados às versões de tabelas. Assim como ocorre com as partições, o acesso a versões anteriores de uma tabela é concedido por meio de acesso às APIs da versão da tabela do AWS Glue na tabela e aos ancestrais da tabela.
Para obter informações sobre permissões para as ações do AWS Glue, consulte Permissões da API do AWS Glue: referência de ações e recursos no Guia do desenvolvedor do AWS Glue.
Exemplos de permissões no nível de bancos de dados e tabelas
A tabela a seguir lista exemplos das políticas baseadas em identidade do IAM que permitem acesso aos bancos de dados e às tabelas do Athena. Recomendamos começar com esses exemplos e, de acordo com as suas necessidades, ajustá-los para permitir ou negar ações específicas a determinados bancos de dados e tabelas.
Esses exemplos incluem acesso a bancos de dados e catálogos para que Athena e o AWS Glue possam funcionar juntos. Para várias regiões da AWS, inclua políticas similares para cada um dos catálogos e bancos de dados, sendo uma linha para cada região.
Nesses exemplos, substitua o banco de dados example_db
e os nomes das tabelas test
pelos nomes dos seus próprios bancos de dados e tabelas.
Instrução DDL | Exemplo de uma política de acesso do IAM que concede acesso ao recurso |
---|---|
ALTER DATABASE | Permite que você modifique as propriedades do banco de dados do example_db .
|
CREATE DATABASE | Permite que você crie o banco de dados chamado example_db .
|
CRIAR TABELA | Permite que você crie uma tabela chamada test no banco de dados do example_db .
|
DROP DATABASE | Permite que você elimine o banco de dados do example_db incluindo todas as suas tabelas.
|
DESCARTAR TABELA | Permite que você elimine uma tabela particionada chamada test no banco de dados do example_db . Se a tabela não tiver partições, não inclua ações de partição.
|
MSCK REPAIR TABLE | Permite que você atualize os metadados do catálogo depois de adicionar partições compatíveis com o Hive à tabela chamada test no banco de dados example_db .
|
SHOW DATABASES | Permite que você liste todos os bancos de dados no AWS Glue Data Catalog.
|
SHOW TABLES | Permite que você liste todas as tabelas no banco de dados do example_db .
|