Controle de acesso a metadados - AWS Lake Formation

Controle de acesso a metadados

Para controle de acesso aos recursos do catálogo de dados, a discussão a seguir pressupõe controle de acesso de alta granularidade com permissões do Lake Formation e controle de acesso de baixa granularidade com políticas do IAM.

Há dois métodos distintos para conceder permissões do Lake Formation nos recursos do catálogo de dados:

  • Controle de acesso a recursos nomeados – Com esse método, você concede permissões em bancos de dados ou tabelas específicos especificando nomes de bancos de dados ou tabelas. As concessões têm o seguinte formato:

    Conceda Permissões a entidades principais sobre recursos [com opção de concessão].

    Com a opção de concessão, você pode permitir que o beneficiário conceda as permissões a outras entidades principais.

  • Controle de acesso baseado em tags – Com esse método, você atribui uma ou mais tags do LF aos bancos de dados, tabelas e colunas do catálogo de dados e concede permissões em uma ou mais tags do LF às entidades principais. Cada tag do LF é um par de chave-valor, como department=sales. Uma entidade principal que tenha tags do LF que correspondam às tags do LF em um recurso do catálogo de dados pode acessar esse recurso. Esse método é recomendado para data lakes com um grande número de bancos de dados e tabelas. Isso é explicado em detalhes em Controle de acesso baseado em tags do Lake Formation.

As permissões que uma entidade principal tem sobre um recurso são a união das permissões concedidas pelos dois métodos.

A tabela a seguir resume as permissões disponíveis do Lake Formation nos recursos do catálogo de dados. Os títulos das colunas indicam o recurso no qual a permissão é concedida.

Catálogo Banco de dados Tabela
CREATE_DATABASE CREATE_TABLE ALTER
ALTER DROP
DROP DESCRIBE
DESCRIBE SELECT*
INSERT*
DELETE*

Por exemplo, a permissão CREATE_TABLE é concedida em um banco de dados. Isso significa que a entidade principal tem permissão para criar tabelas nesse banco de dados.

As permissões com um asterisco (*) são concedidas nos recursos do catálogo de dados, mas se aplicam aos dados subjacentes. Por exemplo, a permissão DROP em uma tabela de metadados permite que você remova a tabela do catálogo de dados. No entanto, a permissão DELETE concedida na mesma tabela permite que você exclua os dados subjacentes da tabela no Amazon S3, usando, por exemplo, uma instrução DELETE do SQL. Com essas permissões, você também pode visualizar a tabela no console do Lake Formation e recuperar informações sobre a tabela com a API do AWS Glue. Portanto, SELECT, INSERT e DELETE são permissões do catálogo de dados e permissões de acesso aos dados.

Ao conceder SELECT em uma tabela, você pode adicionar um filtro que inclua ou exclua uma ou mais colunas. Isso permite um controle de acesso de alta granularidade nas colunas da tabela de metadados, limitando as colunas que os usuários de serviços integrados podem ver ao executar consultas. Esse recurso não está disponível usando apenas as políticas do IAM.

Também há uma permissão especial chamada Super. A permissão Super permite que uma entidade principal execute todas as operações suportadas do Lake Formation no banco de dados ou na tabela em que ela foi concedida. Essa permissão pode coexistir com as outras permissões do Lake Formation. Por exemplo, você pode conceder Super, SELECT e INSERT em uma tabela de metadados. A entidade principal pode realizar todas as ações suportadas na tabela e, quando você revoga Super, as permissões SELECT e INSERT permanecem.

Para obter detalhes sobre cada permissão, consulte Referência de permissões do Lake Formation.

Importante

Para poder ver uma tabela do catálogo de dados criada por outro usuário, você deve ter pelo menos uma permissão do Lake Formation na tabela. Se você tiver pelo menos uma permissão na tabela, também poderá ver o banco de dados que contém a tabela.

Você pode conceder ou revogar as permissões do catálogo de dados usando o console do Lake Formation, a API ou o AWS Command Line Interface (AWS CLI). Veja a seguir um exemplo de um comando AWS CLI que concede ao usuário permissão datalake_user1 para criar tabelas no banco de dados retail.

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'

Veja a seguir um exemplo de uma política do IAM de controle de acesso de baixa granularidade que complementa o controle de acesso de alta granularidade com as permissões do Lake Formation. Ele permite todas as operações em qualquer banco de dados ou tabela de metadados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*" ], "Resource": "*" } ] }

O próximo exemplo também é de baixa granularidade, mas um pouco mais restritivo. Ele permite operações somente para leitura em todos os bancos de dados e tabelas de metadados no catálogo de dados na conta e região designadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTables", "glue:SearchTables", "glue:GetTable", "glue:GetDatabase", "glue:GetDatabases" ], "Resource": "arn:aws:glue:us-east-1:111122223333:*" } ] }

Compare essas políticas com a política a seguir, que implementa o controle de acesso de alta granularidade baseado em IAM. Ele concede permissões somente em um subconjunto de tabelas no banco de dados de metadados de gerenciamento de relacionamento com o cliente (CRM) na conta e região designadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTables", "glue:SearchTables", "glue:GetTable", "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/CRM", "arn:aws:glue:us-east-1:111122223333:table/CRM/P*" ] } ] }

Para obter mais exemplos de políticas de controle de acesso de baixa granularidade, consulte Referência de personas e permissões do IAM do Lake Formation.