Configure o acesso entre contas a um catálogo de dados AWS Glue compartilhado usando o Amazon Athena - Recomendações da AWS

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á.

Configure o acesso entre contas a um catálogo de dados AWS Glue compartilhado usando o Amazon Athena

Criado por Denis Avdonin () AWS

Ambiente: produção

Tecnologias: DataLakes; Análise; Big data

Workload: todas as outras workloads

AWSserviços: Amazon Athena; Glue AWS

Resumo

Esse padrão fornece step-by-step instruções, incluindo exemplos de políticas de AWS Identity and Access Management (IAM), para configurar o compartilhamento entre contas de um conjunto de dados armazenado em um bucket do Amazon Simple Storage Service (Amazon S3) usando o Glue Data Catalog. AWS Você pode armazenar o conjunto de dados em um bucket do S3. Os metadados são coletados por um rastreador AWS Glue e colocados no AWS Glue Data Catalog. O bucket do S3 e o AWS Glue Data Catalog residem em uma AWS conta chamada de conta de dados. Você pode fornecer acesso aos IAM diretores em outra AWS conta chamada de conta do consumidor. Os usuários podem consultar os dados na conta do consumidor usando o mecanismo de consulta de tecnologia sem servidor Amazon Athena.

Pré-requisitos e limitações

Pré-requisitos

Versões do produto

Esse padrão funciona somente com a versão 2 do mecanismo Athena e a versão 3 do mecanismo Athena. Recomendamos que você faça upgrade para a versão 3 do mecanismo Athena. Se você não conseguir fazer o upgrade da versão 1 do Athena Engine para a versão 3 do Athena Engine, siga a abordagem do acesso entre contas do AWSGlue Data Catalog com o Amazon Athena no blog de Big Data. AWS

Arquitetura

Pilha de tecnologias de destino

  • Amazon Athena

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Glue

  • AWSIdentity and Access Management (IAM)

  • AWSServiço de gerenciamento de chaves (AWSKMS)

O diagrama a seguir mostra uma arquitetura que usa IAM permissões para compartilhar dados em um bucket do S3 em uma AWS conta (conta de dados) com outra conta (AWSconta de consumidor) por meio do AWS Glue Data Catalog.

Compartilhar um conjunto de dados em um bucket do S3 entre uma conta de dados e uma conta de consumidor usando o AWS Glue Data Catalog.

O diagrama mostra o seguinte fluxo de trabalho:

  1. A política de bucket do S3 na conta de dados concede permissões para uma IAM função na conta do consumidor e para a função de serviço do rastreador AWS Glue na conta de dados.

  2. A política AWS KMS principal na conta de dados concede permissões para a IAM função na conta do consumidor e para a função de serviço do rastreador AWS Glue na conta de dados.

  3. O rastreador AWS Glue na conta de dados descobre o esquema dos dados armazenados no bucket do S3.

  4. A política de recursos do AWS Glue Data Catalog na conta de dados concede acesso à IAM função na conta do consumidor.

  5. Um usuário cria uma referência de catálogo nomeada na conta do consumidor usando um AWS CLI comando.

  6. Uma IAM política concede a uma IAM função na conta do consumidor acesso aos recursos na conta de dados. A política de confiança da IAM função permite que os usuários na conta do consumidor assumam a IAM função.

  7. Um usuário na conta do consumidor assume a IAM função e acessa objetos no catálogo de dados usando SQL consultas.

  8. O mecanismo sem servidor do Athena executa as consultas. SQL

Observação: as IAM melhores práticas recomendam que você conceda permissões a uma IAM função e use a federação de identidades.

Ferramentas

  • O Amazon Athena é um serviço de consulta interativo que ajuda você a analisar dados diretamente no Amazon S3 usando o padrão. SQL

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • AWSO Glue é um serviço totalmente gerenciado de extração, transformação e carregamento (ETL). Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.

  • AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • AWSO Key Management Service (AWSKMS) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.

Épicos

TarefaDescriçãoHabilidades necessárias

Conceder acesso aos dados no bucket do S3.

Crie uma política de bucket do S3 com base no modelo a seguir e atribua a política ao bucket em que os dados estão armazenados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }

A política de bucket concede permissões para a IAM função na conta do consumidor e para a função de serviço do rastreador AWS Glue na conta de dados.

Administrador de nuvem

(Se necessário) Conceder acesso à chave de criptografia de dados.

Se o bucket do S3 for criptografado por uma AWS KMS chave, conceda kms:Decrypt permissão na chave para a IAM função na conta do consumidor e para a função de serviço do rastreador AWS Glue na conta de dados.

Atualize a política de chave com a seguinte instrução:

{ "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrador de nuvem

Conceder ao crawler o acesso aos dados.

Anexe a seguinte IAM política à função de serviço do rastreador:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" } ] }
Administrador de nuvem

(Se necessário) Conceder ao crawler o acesso à chave de criptografia de dados.

Se o bucket do S3 for criptografado por uma AWS KMS chave, conceda kms:Decrypt permissão sobre a chave à função de serviço do rastreador anexando a ela a seguinte política:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrador de nuvem

Conceda à IAM função na conta do consumidor e ao rastreador acesso ao catálogo de dados.

  1. Faça login no AWS Management Console e abra o console AWS Glue.

  2. No painel de navegação, em Catálogo de dados, escolha Configurações.

  3. Na seção Permissões, adicione a seguinte declaração e escolha Salvar.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : [ "arn:aws:iam::<consumer account id>:role/<role name>", "arn:aws:iam::<data account id>:role/service-role/AWSGlueServiceRole-data-bucket-crawler" ] }, "Action" : "glue:*", "Resource" : [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Essa política permite todas as ações do AWS Glue em todos os bancos de dados e tabelas na conta de dados. Você pode personalizar a política para conceder somente as permissões necessárias aos consumidores das entidades principais. Por exemplo, você pode fornecer acesso somente de leitura a tabelas ou visualizações específicas em um banco de dados.

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias

Criar uma referência nomeada para o catálogo de dados.

Para criar uma referência de catálogo de dados nomeada, use CloudShellou um instalado localmente AWS CLI para executar o seguinte comando:

aws athena create-data-catalog --name <shared catalog name> --type GLUE --parameters catalog-id=<data account id>
Administrador de nuvem

Conceda à IAM função na conta do consumidor acesso aos dados.

Anexe a política a seguir à IAM função na conta do consumidor para conceder à função acesso cruzado aos dados:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::data-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::data-bucket" }, { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:<region>:<data account id>:catalog", "arn:aws:glue:<region>:<data account id>:database/*", "arn:aws:glue:<region>:<data account id>:table/*" ] } ] }

Em seguida, use o modelo a seguir para especificar quais usuários podem aceitar a IAM função em sua política de confiança:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<consumer account id>:user/<IAM user>" }, "Action": "sts:AssumeRole" } ] }

Por fim, conceda permissões ao usuário para assumir a IAM função anexando a mesma política ao grupo de usuários ao qual ele pertence.

Administrador de nuvem

(Se necessário) Conceda à IAM função na conta do consumidor acesso à chave de criptografia de dados.

Se o bucket do S3 for criptografado por uma AWS KMS chave, conceda kms:Decrypt permissão sobre a chave para a IAM função na conta do consumidor anexando a ela a seguinte política:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:<region>:<data account id>:key/<key id>" }
Administrador de nuvem

Mude para a IAM função na conta do consumidor para acessar os dados.

Como consumidor de dados, mude para a IAM função de acessar os dados na conta de dados.

Consumidor de dados

Acessar os dados.

Dados da consulta usando o Athena. Por exemplo, abra o editor de consultas do Athena e execute a seguinte consulta:

SELECT * FROM <shared catalog name>.<database name>.<table name>

Em vez de usar uma referência de catálogo nomeada, você também pode se referir ao catálogo pelo nome de recurso da Amazon (ARN).

Observação: se você usar uma referência de catálogo dinâmico em uma consulta ou visualização, coloque a referência entre aspas duplas escapadas (\”). Por exemplo:

SELECT * FROM \"glue:arn:aws:glue:<region>:<data account id>:catalog\".<database name>.<table name>

Para obter mais informações, consulte Acesso entre contas aos catálogos de dados do AWS Glue no Guia do usuário do Amazon Athena.

Consumidor de dados

Recursos relacionados

Mais informações

Usando o Lake Formation como uma alternativa para compartilhamento entre contas

Você também pode usar o AWS Lake Formation para compartilhar o acesso aos objetos do catálogo AWS Glue entre contas. O Lake Formation fornece controle de acesso refinado em nível de coluna e linha, controle de acesso baseado em tags, tabelas controladas para ACID transações e outras funcionalidades. Embora o Lake Formation esteja bem integrado ao Athena, ele requer configuração adicional em comparação com a abordagem exclusiva desse padrãoIAM. Recomendamos que você considere a decisão de usar Lake Formation ou IAM apenas controles de acesso dentro do contexto mais amplo da arquitetura geral da solução. As considerações incluem quais outros serviços estão envolvidos e como eles se integram às duas abordagens.