Concessão de acesso entre contas - AWS Glue

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

Concessão de acesso entre contas

Conceder acesso aos recursos do Data Catalog entre contas permite que seus trabalhos de extração, transformação e carregamento (ETL) consultem e juntem dados de contas diferentes.

Métodos de concessão de acesso entre contas no AWS Glue

Você pode conceder acesso aos seus dados a contas externas da AWS usando métodos do AWS Glue ou concessões entre contas do AWS Lake Formation. Os métodos do AWS Glue usam políticas do AWS Identity and Access Management (IAM) para obter um controle de acesso minucioso. O Lake Formation usa um modelo de permissões GRANT/REVOKE mais simples semelhante aos comandos GRANT/REVOKE em um sistema de banco de dados relacional.

Esta seção descreve o uso de métodos do AWS Glue. Para mais informações sobre como usar concessões entre contas do Lake Formation, consulte Conceder permissões do Lake Formation no Guia do desenvolvedor do AWS Lake Formation.

Há dois métodos do AWS Glue para conceder acesso entre contas a um recurso:

  • Usar uma política de recursos do Data Catalog

  • Usar uma função do IAM

Usar uma política de recursos para conceder acesso entre contas

A seguir estão as etapas gerais para conceder acesso entre contas usando uma política de recursos do Data Catalog:

  1. Um administrador (ou outra identidade autorizada) na conta A anexa uma política de recursos ao Data Catalog na conta A. Essa política concede à conta B permissões específicas entre contas para executar operações em um recurso no catálogo da conta A.

  2. Um administrador na conta B anexa uma política do IAM a uma identidade do IAM na conta B que delega as permissões recebidas da conta A.

    A identidade na conta B agora tem acesso ao recurso especificado na conta A.

    O usuário precisa de permissão de ambos, o proprietário do recurso (conta A) e a conta superior (conta B), para poder acessar o recurso.

Conceder acesso entre contas utilizando uma função do IAM

A seguir estão as etapas gerais para conceder acesso entre contas usando uma função do IAM:

  1. Um administrador (ou outra identidade autorizada) na conta que possui o recurso (conta A) cria uma função do IAM.

  2. Um administrador na Conta A anexa uma política à função que concede permissões entre contas para acesso ao recurso em questão.

  3. O administrador na conta A anexa uma política de confiança à função que identifica uma identidade do IAM em outra conta (conta B) como a entidade principal que pode assumir a função.

    A entidade principal da política de confiança também pode ser a entidade principal de um produto da AWS, se você desejar conceder permissão a um produto da AWS para que ele assuma a função.

  4. Um administrador na conta B agora delega permissões para uma ou mais identidades do IAM na conta B, para que elas possam assumir essa função. Isso fornece às identidades na Conta B acesso ao recurso na conta A.

Para obter mais informações sobre o uso do IAM para delegar permissões, consulte Gerenciamento de acesso no Manual do usuário do IAM. Para obter mais informações sobre usuários, grupos, funções e permissões, consulte Identities (users, groups, and roles) no Guia do usuário do IAM.

Para obter uma comparação entre essas duas abordagens, consulte Como as funções do IAM diferem de políticas baseadas em recurso no Guia do usuário do IAM. O AWS Glue é compatível com ambas as opções, com a restrição de que uma política de recurso só pode conceder acesso aos recursos do Data Catalog.

Por exemplo, para conceder ao perfil Dev na conta B acesso ao banco de dados db1 na conta A, anexe a política de recurso a seguir ao catálogo na conta A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase" ], "Principal": {"AWS": [ "arn:aws:iam::account-B-id:role/Dev" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-A-id:catalog", "arn:aws:glue:us-east-1:account-A-id:database/db1" ] } ] }

Além disso, a conta B deve anexar a seguinte política do IAM ao perfil Devpara poder realmente ter acesso ao db1 na conta A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:account-A-id:catalog", "arn:aws:glue:us-east-1:account-A-id:database/db1" ] } ] }

Adição ou atualização da política de recursos do catálogo de dados

Você pode adicionar ou atualizar a política de recursos do catálogo de dados do AWS Glue usando o console, a API ou a AWS Command Line Interface (AWS CLI).

Importante

Se você já tiver feito concessões de permissão entre contas da sua conta com o AWS Lake Formation, adicionar ou atualizar a política de recursos do Data Catalog exigirá uma etapa extra. Para obter mais informações, consulte Gerenciar permissões entre contas usando o AWS Glue e o Lake Formation no Guia do desenvolvedor do AWS Lake Formation.

Para determinar se existem concessões entre contas do Lake Formation, use a operação de API glue:GetResourcePolicies ou a AWS CLI. Se glue:GetResourcePolicies retornar qualquer outra política, exceto uma política já existente do Data Catalog, será porque existem concessões do Lake Formation. Para obter mais informações, consulte Visualizar todas as concessões entre contas usando a operação de API GetResourcePolicies no Guia do desenvolvedor do AWS Lake Formation.

Para adicionar ou atualizar a política de recursos do Data Catalog (console)
  1. Abra o console do AWS Glue em https://console.aws.amazon.com/glue/.

    Faça login como um usuário administrativo do AWS Identity and Access Management (IAM) que tem a permissão de glue:PutResourcePolicy.

  2. No painel de navegação, selecione Configurações.

  3. Na página Data catalog settings (Configurações de catálogo de dados), em Permissions (Permissões), cole uma política de recursos na área de texto. Em seguida, escolha Salvar.

    Se o console exibir um alerta informando que as permissões na política serão adicionais às permissões concedidas usando o Lake Formation, escolha Proceed (Continuar).

Para adicionar ou atualizar a política de recursos do Data Catalog (AWS CLI)

Realização de uma chamada de API entre contas

Todas as operações do AWS Glue Data Catalog têm um campo CatalogId. Se as permissões necessárias foram concedidas para habilitar o acesso entre contas, um autor da chamada pode fazer chamadas de API do Data Catalog entre contas. O autor da chamada faz isso transmitindo o ID da conta da AWS de destino no CatalogId para acessar o recurso nessa conta de destino.

Se nenhum valor de CatalogId for fornecido, o AWS Glue usará o ID da conta do próprio chamador por padrão, e a chamada não será entre contas.

Realização de uma chamada de ETL entre contas

Algumas APIs de PySpark e Scala do AWS Glue têm um campo de ID do catálogo. Se todas as permissões necessárias forem concedidas para habilitar o acesso entre contas, um trabalho de ETL poderá fazer chamadas de PySpark e Scala às operações da API entre contas transmitindo o ID da conta da AWS de destino no campo de ID do catálogo para acessar os recursos do Data Catalog em uma conta de destino.

Se nenhum valor de ID de catálogo for fornecido, o AWS Glue usará o ID da conta do próprio chamador por padrão, e a chamada não será entre contas.

Para APIs do PySpark que oferecem suporte ao catalog_id, consulte Classe GlueContext. Para APIs do Scala que oferecem suporte ao catalogId, consulte APIs GlueContext em Scala do AWS Glue.

O exemplo a seguir mostra as permissões exigidas pelo usuário autorizado para executar um trabalho de ETL. Neste exemplo, grantee-account-id é o catalog-id do cliente que executa a tarefa e grantor-account-id é o proprietário do recurso. Este exemplo concede permissão a todos os recursos do catálogo na conta do concessor. Para limitar o escopo de recursos concedidos, você pode fornecer ARNs específicos para o catálogo, o banco de dados, a tabela e a conexão.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetConnection", "glue:GetDatabase", "glue:GetTable", "glue:GetPartition" ], "Principal": {"AWS": ["arn:aws:iam::grantee-account-id:root"]}, "Resource": [ "arn:aws:glue:us-east-1:grantor-account-id:*" ] } ] }
nota

Se uma tabela na conta do concessor apontar para um local do Amazon S3 que também está na conta do concessor, a função do IAM usada para executar um trabalho de ETL na conta do usuário autorizado deverá ter permissão para listar e obter objetos da conta do concessor.

Uma vez que o cliente na Conta A já tem permissão para criar e executar tarefas de ETL, as etapas básicas para configurar uma tarefa de ETL para acesso entre contas são:

  1. Permita acesso a dados entre contas (ignore esta etapa se o acesso entre contas do Amazon S3 já estiver configurado).

    1. Atualize a política do bucket do Amazon S3 na conta B para permitir o acesso entre contas na conta A.

    2. Atualizar a política do IAM na Conta A para permitir o acesso ao bucket na Conta B.

  2. Permita o acesso entre contas ao Data Catalog.

    1. Crie ou atualize a política de recursos anexada ao Data Catalog na conta B para permitir o acesso na conta A.

    2. Atualize a política do IAM na conta A para permitir o acesso ao Data Catalog na conta B.

Registro em log no CloudTrail entre contas

Quando um trabalho de extração, transformação e carregamento (ETL) do AWS Glue acessa os dados subjacentes de uma tabela do catálogo de dados compartilhada por concessões entre contas do AWS Lake Formation, há um comportamento de registro em log adicional do AWS CloudTrail.

Para efeitos desta discussão, a conta da AWS que compartilha a tabela é a conta de proprietário, já a conta com a qual a tabela é compartilhada é a conta de destinatário. Quando um trabalho de ETL na conta de destinatário acessa dados da tabela na conta de proprietário, o evento de acesso a dados do CloudTrail que é adicionado aos logs da conta de destinatário é copiado para os logs do CloudTrail da conta de proprietário. Isso é para que as contas de proprietário possam rastrear acessos a dados pelas várias contas de destinatários. Por padrão, os eventos do CloudTrail não incluem um identificador de entidade principal legível (ARN da entidade principal). Um administrador na conta de destinatário pode optar por incluir o ARN da entidade principal nos logs.

Para obter mais informações, consulte Registro em log entre contas do CloudTrail no Guia do desenvolvedor do AWS Lake Formation.

Propriedade e faturamento de recursos entre contas

Quando um usuário em uma conta da AWS (conta A) cria um novo recurso, como um banco de dados em outra conta (conta B), esse recurso é propriedade da conta B, a conta em que ele foi criado. Um administrador na Conta B automaticamente recebe permissões completas para acessar o novo recurso, incluindo leitura, gravação e concessão de permissões de acesso a uma conta de terceiros. O usuário na Conta A pode acessar o recurso que acabou de criar somente se tiver as permissões apropriadas concedidas pela Conta B.

Os custos de armazenamento e outros custos que estão diretamente associados ao novo recurso são cobrados da Conta B, a proprietária do recurso. O custo das solicitações do usuário que criou o recurso é faturado na conta do solicitante, a Conta A.

Para obter mais informações sobre faturamento e preços do AWS Glue, consulte Como funciona a definição de preços da AWS.

Limitações de acesso entre contas

O acesso entre contas do AWS Glue tem as seguintes limitações:

  • O acesso entre contas ao AWS Glue não é permitido se você criou bancos de dados e tabelas usando o Amazon Athena ou o Amazon Redshift Spectrum antes de uma região ter suporte ao AWS Glue e a conta do proprietário do recurso não ter migrado o catálogo de dados do Amazon Athena para o AWS Glue. Você pode encontrar o status atual da migração usando o GetCatalogImportStatus (get_catalog_import_status). Para obter mais detalhes sobre como migrar um catálogo do Athena para o AWS Glue, consulte Processo detalhado do upgrade para o AWS Glue Data Catalog no Guia do usuário do Amazon Athena.

  • O acesso entre contas é compatível somente para recursos do Data Catalog, incluindo bancos de dados, tabelas, funções definidas pelo usuário e conexões.

  • O acesso entre contas ao catálogo de dados do Athena exige que você registre o catálogo como um recurso do DataCatalog do Athena. Para obter instruções, consulte Registrar um AWS Glue Data Catalog de outra conta no Guia do usuário do Amazon Athena.