Considerações e limitações ao usar o Athena para consultar dados registrados no Lake Formation - Amazon Athena

Considerações e limitações ao usar o Athena para consultar dados registrados no Lake Formation

Considere as questões a seguir ao usar o Athena para consultar dados registrados no Lake Formation. Para obter informações adicionais, consulte Problemas conhecidos do AWS Lake Formation no Guia do desenvolvedor do AWS Lake Formation.

Metadados de coluna visíveis para usuários não autorizados em algumas circunstâncias com Avro e SerDe personalizado

A autorização no nível da coluna do Lake Formation impede que os usuários acessem os dados nas colunas para as quais eles não tenham permissões do Lake Formation. No entanto, em determinadas situações, os usuários podem acessar metadados que descrevem todas as colunas na tabela, incluindo as colunas para as quais eles não têm permissões para os dados.

Isso ocorre quando os metadados da coluna são armazenados nas propriedades das tabelas usando o formato de armazenamento Apache Avro ou um serializador/desserializador (SerDe) personalizado no qual o esquema da tabela é definido nas propriedades da tabela juntamente com a definição do SerDe. Ao usar o Athena com o Lake Formation, recomendamos revisar o conteúdo das propriedades da tabela que você registrou no Lake Formation e, sempre que possível, limitar as informações armazenadas nas propriedades da tabela para impedir que metadados confidenciais fiquem visíveis aos usuários.

Trabalhar com permissões do Lake Formation para visualizações

Para dados registrados no Lake Formation, um usuário do Athena poderá criar um VIEW somente se tiver permissões do Lake Formation para as tabelas, as colunas e os locais de dados de origem do Amazon S3 nos quais a VIEW se baseia. Depois que uma VIEW é criada no Athena, as permissões do Lake Formation podem ser aplicadas à VIEW. As permissões no nível da coluna não estão disponíveis para uma VIEW. Os usuários com permissões do Lake Formation para uma VIEW, mas sem permissões para a tabela e as colunas nas quais a visualização foi baseada, não podem usar a VIEW para consultar dados. No entanto, os usuários com essa combinação de permissões podem usar instruções como DESCRIBE VIEW, SHOW CREATE VIEW e SHOW COLUMNS para ver metadados VIEW. Por esse motivo, alinhe as permissões do Lake Formation a cada VIEW com as permissões subjacentes da tabela. Filtros de células definidos em uma tabela não se aplicam a um VIEW para essa tabela. Os nomes de links de recursos devem ter o mesmo nome que o recurso na conta de origem. Há limitações adicionais ao se trabalhar com visualizações em uma configuração entre contas. Para obter mais informações sobre como configurar permissões para visualizações compartilhadas entre contas, consulte Acesso ao catálogo de dados entre contas.

Controle de acesso detalhado do Lake Formation e grupos de trabalho do Athena

Os usuários do mesmo grupo de trabalho do Athena podem visualizar os dados que o controle de acesso detalhado do Lake Formation configurou para serem acessíveis ao grupo de trabalho. Para obter mais informações sobre como usar o controle de acesso detalhado no Lake Formation, consulte Gerenciar o controle de acesso detalhado usando o AWS Lake Formation no AWS Big Data Blog.

Local dos resultados de consultas do Athena no Amazon S3 não registrado no Lake Formation

O local dos resultados de consultas do Athena no Amazon S3 não pode ser registrado no Lake Formation. As permissões do Lake Formation não limitam o acesso a esses locais. A menos que você limite o acesso, os usuários do Athena podem acessar arquivos de resultados de consulta e metadados mesmo sem permissões do Lake Formation para os dados. Para evitar isso, recomendamos que você use grupos de trabalho para especificar o local dos resultados das consultas e alinhe a associação do grupo de trabalho com as permissões do Lake Formation. Depois disso, você pode usar as políticas de permissões do IAM para limitar o acesso aos locais de resultados de consultas. Para obter mais informações sobre resultados de consultas, veja Trabalhar com resultados de consultas, consultas recentes e arquivos de saída.

Usar grupos de trabalho do Athena para limitar o acesso ao histórico de consultas

O histórico de consultas do Athena expõe uma lista de consultas salvas e strings de consulta completas. A menos que você use grupos de trabalho para separar o acesso a históricos de consultas, os usuários do Athena que não estão autorizados a consultar os dados no Lake Formation poderão visualizar as strings de consultas executadas nesses dados, incluindo nomes de coluna, critérios de seleção e etc. Recomendamos que você use grupos de trabalho para separar históricos de consultas e alinhar a associação do grupo de trabalho do Athena com as permissões do Lake Formation para limitar o acesso. Para ter mais informações, consulte Usar grupos de trabalho para controlar o acesso a consultas e os custos.

Acesso ao catálogo de dados entre contas

Para acessar um catálogo de dados em outra conta, você pode usar o recurso do AWS Glue entre contas do Athena ou configurar o acesso entre contas no Lake Formation.

Acesso ao catálogo de dados entre contas do Athena

Você pode usar o recurso de catálogo do AWS Glue entre contas do Athena para registrar o catálogo em sua conta. Esse recurso está disponível somente no mecanismo Athena versão 2 e posteriores e está limitado ao uso entre contas na mesma região. Para ter mais informações, consulte Registrar um AWS Glue Data Catalog de outra conta.

Se o catálogo de dados a ser compartilhado tiver uma política de recursos configurada no AWS Glue, ele deverá ser atualizado para permitir acesso ao AWS Resource Access Manager e conceder permissões à conta B para usar o catálogo de dados da conta A, como no exemplo a seguir.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:<REGION>:<ACCOUNT-A>:table/*/*", "arn:aws:glue:<REGION>:<ACCOUNT-A>:database/*", "arn:aws:glue:<REGION>:<ACCOUNT-A>:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT-B>:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:<REGION>:<ACCOUNT-A>:table/*/*", "arn:aws:glue:<REGION>:<ACCOUNT-A>:database/*", "arn:aws:glue:<REGION>:<ACCOUNT-A>:catalog" ] } ] }

Para ter mais informações, consulte Acesso aos catálogos de dados do AWS Glue entre contas.

Configurar o acesso entre contas no Lake Formation

O AWS Lake Formation permite que você use uma única conta para gerenciar um catálogo de dados central. Você pode usar esse recurso para implementar o acesso entre contas a metadados do catálogo de dados e aos dados subjacentes. Por exemplo, uma conta de proprietário pode conceder à outra conta (destinatário) a permissão SELECT em uma tabela.

Para que um banco de dados ou uma tabela compartilhada apareça no editor de consultas do Athena, crie um link de recurso no Lake Formation para o banco de dados ou a tabela compartilhada. Quando a conta de destinatário no Lake Formation consulta a tabela do proprietário, o CloudTrail adiciona o evento de acesso a dados aos logs das contas tanto de destinatário quanto de proprietário.

Para visualizações compartilhadas, lembre-se dos seguintes pontos:

  • As consultas são executadas nos links dos recursos de destino, não na visualização ou tabela de origem. Em seguida, a saída é compartilhada com a conta de destino.

  • Não basta compartilhar apenas a visualização. Todas as tabelas envolvidas na criação da visualização devem fazer parte do compartilhamento entre contas.

  • O nome do link do recurso criado nos recursos compartilhados deve corresponder ao nome do recurso na conta do proprietário. Se o nome não corresponder, será gerada uma mensagem de erro semelhante a Failed analyzing stored view 'awsdatacatalog.my-lf-resource-link.my-lf-view': line 3:3: Schema schema_name does not exist (Falha na análise da visualização compartilhada “awsdatacatalog.my-lf-resource-link.my-lf-view”: linha 3:3: o esquema schema_name não existe).

Para obter mais informações sobre o acesso entre contas no Lake Formation, consulte os seguintes recursos no Guia do desenvolvedor do AWS Lake Formation:

Acesso entre contas

How resource links work in Lake Formation (Como os links de recursos funcionam no Lake Formation)

Cross-account CloudTrail logging (Registro em log no CloudTrail entre contas)

Locais do Amazon S3 criptografados por CSE-KMS e registrados no Lake Formation

Tabelas em Open Table Format (OTF), como do Apache Iceberg, que têm as seguintes características, não podem ser consultadas com o Athena:

  • As tabelas são baseadas nos locais de dados do Amazon S3 que estão registrados no Lake Formation.

  • Os objetos no Amazon S3 são criptografados usando a criptografia do lado do cliente (CSE).

  • A criptografia usa chaves do AWS KMS gerenciadas pelo cliente (CSE_KMS).

Para consultar tabelas não OTF criptografadas com uma chave CSE_KMS, adicione o bloco a seguir à política da chave AWS KMS que você usa para criptografia CSE. <KMS_KEY_ARN> indica o ARN da chave AWS KMS que criptografa os dados. <IAM-ROLE-ARN> indica o ARN do perfil do IAM que registra a localização do Amazon S3 no Lake Formation.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "<KMS-KEY-ARN>", "Condition": { "ArnLike": { "aws:PrincipalArn": "<IAM-ROLE-ARN>" } } }

Locais de dados particionados registrados no Lake Formation devem estar em subdiretórios de tabela

As tabelas particionadas registradas no Lake Formation devem ter dados particionados em diretórios que são subdiretórios da tabela no Amazon S3. Por exemplo, uma tabela com o local s3://DOC-EXAMPLE-BUCKET/mytable e as partições s3://DOC-EXAMPLE-BUCKET/mytable/dt=2019-07-11, s3://DOC-EXAMPLE-BUCKET/mytable/dt=2019-07-12 etc. pode ser registrada no Lake Formation e consultada com o Athena. Por outro lado, uma tabela com o local s3://DOC-EXAMPLE-BUCKET/mytable e as partições localizadas em s3://DOC-EXAMPLE-BUCKET/dt=2019-07-11, s3://DOC-EXAMPLE-BUCKET/dt=2019-07-12 etc. não pode ser registrada no Lake Formation. Como essas partições não são subdiretórios de s3://DOC-EXAMPLE-BUCKET/mytable, elas também não podem ser lidas pelo Athena.

Consultas Create Table As Select (CTAS) exigem permissões de gravação do Amazon S3

As Create Table As Statements (CTAS) exigem acesso de gravação ao local das tabelas do Amazon S3. Para executar consultas CTAS em dados registrados no Lake Formation, os usuários do Athena devem ter as permissões do IAM para gravar nos locais de tabela do Amazon S3 e as devidas permissões do Lake Formation para ler os locais de dados. Para ter mais informações, consulte Criar uma tabela a partir de resultados de consultas (CTAS).

A permissão DESCRIBE é necessária no banco de dados padrão

A permissão DESCRIBE do Lake Formation é necessária no banco de dados default. O comando da AWS CLI de exemplo a seguir concede a permissão DESCRIBE no banco de dados default ao usuário datalake_user1 na conta da AWS 111122223333.

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

Para obter mais informações, consulte Lake Formation Permissions Reference (Referência de permissões do Lake Formation) no Guia do desenvolvedor do AWS Lake Formation.