Controle de acesso a dados subjacente - AWS Lake Formation

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Controle de acesso a dados subjacente

Quando um AWS serviço integrado solicita acesso aos dados em um local do Amazon S3 que é controlado pelo acesso, o Lake AWS Lake Formation Formation fornece credenciais temporárias para acessar os dados.

Para permitir que o Lake Formation controle o acesso aos dados subjacentes em um local do Amazon S3, você registra esse local no Lake Formation.

Depois de registrar uma localização no Amazon S3, você pode começar a conceder as seguintes permissões do Lake Formation:

  • Permissões de acesso aos dados (SELECT, INSERT e DELETE) nas tabelas do catálogo de dados que apontam para esse local.

  • Permissões de localização de dados nesse local.

As permissões de localização de dados do Lake Formation controlam a capacidade de criar recursos do catálogo de dados que apontam para locais específicos do Amazon S3. As permissões de localização de dados fornecem uma camada extra de segurança aos locais dentro do data lake. Ao conceder a permissão CREATE_TABLE ou ALTER a uma entidade principal, você também concede permissões de localização de dados para limitar os locais para os quais a entidade principal pode criar ou alterar tabelas de metadados.

Os locais do Amazon S3 são buckets ou prefixos em um bucket, mas não objetos individuais do Amazon S3.

Você pode conceder permissões de localização de dados a uma entidade principal usando o console do Lake Formation, a API ou a AWS CLI. A forma geral de uma subvenção é a seguinte:

grant DATA_LOCATION_ACCESS to principal on S3 location [with grant option]

Se você incluir with grant option, o beneficiário poderá conceder as permissões a outras entidades principais.

Lembre-se de que as permissões do Lake Formation sempre funcionam em combinação com as permissões AWS Identity and Access Management (IAM) para um controle de acesso refinado. Para permissões de leitura/gravação em dados subjacentes do Amazon S3, as permissões do IAM são concedidas da seguinte forma:

Ao registrar um local, você especifica um perfil do IAM que concede permissões de leitura/gravação nesse local. A Lake Formation assume essa função ao fornecer credenciais temporárias para serviços integrados. AWS Uma função típica pode ter a seguinte política anexada, em que o local registrado é o bucket awsexamplebucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::awsexamplebucket" ] } ] }

O Lake Formation fornece uma função vinculada ao serviço que você pode usar durante o registro para criar automaticamente políticas como essa. Para ter mais informações, consulte Usar perfis vinculados ao serviço para o Lake Formation.

Portanto, registrar um local do Amazon S3 concede as permissões necessárias s3: do IAM nesse local, onde as permissões são especificadas pela função usada para registrar o local.

Importante

Evite registrar um bucket do Amazon S3 que tenha o Solicitante paga ativado. Para buckets registrados no Lake Formation, a função usada para registrar o bucket é sempre vista como solicitante. Se o bucket for acessado por outra AWS conta, o proprietário do bucket será cobrado pelo acesso aos dados se a função pertencer à mesma conta do proprietário do bucket.

Para acesso de leitura/gravação aos dados subjacentes, além das permissões do Lake Formation, as entidades principais também precisam da seguinte permissão do IAM:

lakeformation:GetDataAccess

Com essa permissão, o Lake Formation concede a solicitação de credenciais temporárias para acessar os dados.

nota

O Amazon Athena exige que o usuário tenha a permissão lakeformation:GetDataAccess. Outros serviços integrados exigem que sua função de execução subjacente tenha a permissão lakeformation:GetDataAccess.

Essa permissão está incluída nas políticas sugeridas no Referência de personas e permissões do IAM do Lake Formation.

Resumindo, para permitir que as entidades principais do Lake Formation leiam e gravem dados subjacentes com acesso controlado pelas permissões do Lake Formation:

  • Registre os locais do Amazon S3 que contêm os dados com o Lake Formation.

  • As entidades principais que criam tabelas do catálogo de dados que apontam para locais de dados subjacentes devem ter permissões de localização de dados.

  • As entidades principais que leem e gravam dados subjacentes devem ter permissões de acesso aos dados do Lake Formation nas tabelas do catálogo de dados que apontam para os locais de dados subjacentes.

  • As entidades principais que leem e gravam dados subjacentes devem ter a permissão lakeformation:GetDataAccess do IAM quando o local dos dados subjacentes é registrado no Lake Formation.

nota

O modelo de permissões do Lake Formation não impede o acesso aos locais do Amazon S3 por meio da API ou do console do Amazon S3 se você tiver acesso a eles por meio de políticas do IAM ou do Amazon S3. Você pode anexar políticas do IAM às entidades principais para bloquear esse acesso.

Saiba mais sobre permissões de localização de dados

As permissões de localização de dados governam o resultado das operações de criação e atualização nos bancos de dados e tabelas do catálogo de dados. As regras são as seguintes:

  • Uma entidade principal deve ter permissões de localização de dados explícitas ou implícitas em um local do Amazon S3 para criar ou atualizar um banco de dados ou tabela que especifique esse local.

  • A permissão explícita DATA_LOCATION_ACCESS é concedida usando o console, a API ou AWS CLI.

  • As permissões implícitas são concedidas quando um banco de dados tem uma propriedade de localização que aponta para um local registrado, a entidade principal tem a permissão CREATE_TABLE no banco de dados e a entidade principal tenta criar uma tabela nesse local ou em um local secundário.

  • Se uma entidade principal receber permissões de localização de dados em um local, a entidade principal terá permissões de localização de dados em todos os locais secundários.

  • Uma entidade principal não precisa de permissões de localização de dados para realizar operações de leitura/gravação nos dados subjacentes. É suficiente ter as permissões de acesso aos dados SELECT ou INSERT. As permissões de localização de dados se aplicam somente à criação de recursos do catálogo de dados que apontam para o local.

Considere o cenário mostrado no diagrama a seguir.

Hierarquia de pastas e dois bancos de dados, banco de dados A e B, com o banco de dados B apontando para a pasta de atendimento ao cliente.

Neste diagrama:

  • Os buckets do Amazon S3 Products, Finance e Customer Service estão registrados no Lake Formation.

  • Database A não tem propriedade de localização e Database B tem uma propriedade de localização que aponta para o bucket Customer Service.

  • O usuário datalake_user tem CREATE_TABLE nos dois bancos de dados.

  • O usuário datalake_user recebeu permissões de localização de dados somente no bucket Products.

A seguir estão os resultados quando o usuário datalake_user tenta criar uma tabela de catálogo em um banco de dados específico em um determinado local.

Local onde datalake_user tenta criar uma tabela
Banco de dados e localização Sucesso ou falha Motivo
Banco de dados A em Finance/Sales Falha Sem permissão de localização de dados
Banco de dados A em Products Sucesso Possui permissão de localização de dados
Banco de dados A em HR/Plans Sucesso O local não está registrado
Banco de dados B em Customer Service/Incidents Sucesso O banco de dados tem propriedade de localização em Customer Service

Para mais informações, consulte: