Como faço para compartilhar bancos de dados e tabelas do AWS Glue Data Catalog entre contas usando o AWS Lake Formation?

10 minuto de leitura
0

Quero compartilhar bancos de dados e tabelas do AWS Glue Data Catalog entre contas usando o AWS Lake Formation.

Resolução

Com o atributo de contas cruzadas do Lake Formation, é possível conceder acesso a outras contas da AWS para gravar e compartilhar dados de ou para o data lake. Os recursos podem ser compartilhados por meio de controle de acesso baseado em tags ou recursos nomeados. Este artigo se concentra em conceder acesso entre contas aos recursos do Data Catalog usando o método de recurso nomeado.

Certifique-se de que os pré-requisitos sejam atendidos

Lembre-se dos seguintes pré-requisitos antes de compartilhar seus recursos do Data Catalog com outra conta ou acessar recursos compartilhados de outra conta:

Revogue as permissões do Lake Formation

Revogue todas as permissões do Lake Formation do grupo IAMAllowedPrincipals para o recurso do Data Catalog.

Impeça que novas tabelas tenham permissões Super

Para bancos de dados do Data Catalog que contêm tabelas que é possível compartilhar, evite que novas tabelas tenham uma concessão padrão de Super para IAMAllowedPrincipals:

  1. Abra o console do AWS Lake Formation.
  2. No painel de navegação, em Data Catalog, escolha Bancos de dados.
  3. Selecione o banco de dados que você deseja atualizar.
  4. Escolha Ações, em seguida, escolha Editar.
  5. Em Permissões padrão para tabelas recém-criadas, desmarque Usar somente o controle de acesso do IAM para novas tabelas neste banco de dados.
  6. Escolha Salvar.

Para mais informações, consulte Super.

Adicione as permissões necessárias para acesso entre contas

Se a política de recursos do AWS Glue Data Catalog já estiver ativada na conta, será possível remover a política ou adicionar novas permissões à política que são necessárias para concessões entre contas. Veja a seguir um exemplo de política de recursos para fornecer acesso entre contas do AWS Glue à conta 5555666677778888 a partir da conta 1111222233334444.

Para obter mais informações, consulte Conceder acesso entre contas.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ram.amazonaws.com"
      },
      "Action": "glue:ShareResource",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::5555666677778888:root"
      },
      "Action": "glue:*",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    }
  ]
}

Ative o compartilhamento com organizações

Se os recursos do Data Catalog forem compartilhados entre organizações, ative o compartilhamento com o AWS Organizations usando o console de RAM da AWS. O usuário ou perfil do AWS Identity and Access Management (AWS IAM) que ativa essa opção deve ter a permissão ram:EnableSharingWithAwsOrganization do IAM.

Para obter mais informações, consulte Pré-requisitos de acesso entre contas.

Conceda as permissões de IAM necessárias

Conta de origem: Para usar o método de recursos nomeados para conceder permissões entre contas, você deve ter as permissões de IAM necessárias para o AWS Glue e o AWS Resource Access Manager (AWS RAM). É possível escolher a política gerenciada pela AWS AWSLakeFormationCrossAccountManager que concede essas permissões ou criar uma nova política com base nessa política.

Conta de destino: Os administradores de data lake em contas de destino devem ter a seguinte política adicional. Essa política permite que o administrador aceite os convites de compartilhamento de recursos do AWS RAM e ative o compartilhamento de recursos com organizações:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation",
        "ram:RejectResourceShareInvitation",
        "ec2:DescribeAvailabilityZones",
        "ram:EnableSharingWithAwsOrganization"
      ],
      "Resource": "*"
    }
  ]
}

Observação: O usuário ou perfil do IAM que recebe o convite de compartilhamento de recursos no RAM da AWS deve ter as permissões do IAM necessárias para glue:PutResourcePolicy.

Compartilhe um banco de dados e suas tabelas com a conta de destino

Para compartilhar um banco de dados e todas as tabelas do banco de dados com a conta de destino que não faz parte da organização, faça o seguinte:

Observação: Se você compartilhar todas as tabelas em um banco de dados na conta de origem, qualquer nova tabela criada na conta de origem será automaticamente compartilhada com a conta de destino.

Na conta de origem, faça o seguinte:

  1. Abra o console do Lake Formation e faça login como administrador do data lake.
  2. No painel de navegação, selecione Bancos de dados.
  3. Selecione o banco de dados que você deseja compartilhar.
  4. Escolha Ações, em seguida, escolha Conceder.
  5. Selecione Conta externa.
  6. Em ID da conta da AWS ou ID da organização da AWS, insira o ID da conta de destino.
  7. Em Tabela, certifique-se de que a opção Todas as tabelas esteja selecionada.
  8. Em Permissões de tabela e Permissões concedidas, selecione as permissões de acesso que você deseja conceder.
  9. Escolha Conceder.

Na conta de destino, faça o seguinte:

  1. Abra o console do AWS RAM.
  2. No painel de navegação, em Compartilhado comigo, escolha Compartilhamentos de recursos.
  3. Analise a lista de compartilhamentos de recursos aos quais você recebeu acesso.
  4. Para aceitar o convite para o recurso compartilhado da conta de origem, selecione o ID do compartilhamento de recursos e escolha Aceitar compartilhamento de recursos.
  5. Abra o console do AWS Lake Formation.
  6. No painel de navegação, selecione Bancos de dados.
    É possível visualizar o banco de dados compartilhado na listagem. O ID da conta do proprietário desse banco de dados mostra o ID da conta de origem.
  7. Selecione o banco de dados compartilhado e escolha Ações.
  8. Escolha Criar link do recurso.
  9. Na página Criar link de recurso, faça o seguinte:
    Em Nome do link do recurso, insira o nome do link do recurso.
    Em Banco de dados compartilhado, certifique-se de que o nome do banco de dados compartilhado esteja selecionado.
    Em ID do proprietário do banco de dados compartilhado, insira o ID da conta de origem.
  10. Escolha Criar.
    O link do recurso é criado.

Os links de recursos são objetos do Data Catalog que são links para bancos de dados e tabelas de metadados, normalmente para bancos de dados e tabelas compartilhados de outras contas da AWS. Eles ajudam a permitir o acesso entre contas aos dados no data lake. Depois que o link do recurso for criado, será possível consultar as tabelas no banco de dados compartilhado com o acesso do administrador do data lake.

Para conceder acesso às entidades principais/usuários do IAM para o banco de dados compartilhado, conceda as permissões necessárias para o link do recurso e o banco de dados compartilhado. Isso permite que as entidades principais/diretores do IAM visualizem o banco de dados compartilhado e o link do recurso no console do Lake Formation. Os usuários do IAM também podem visualizar o banco de dados e o link do recurso no console do Amazon Athena ou no Amazon Redshift Spectrum.

Para conceder acesso aos usuários do IAM para o link do recurso, faça o seguinte:

  1. Abra o console do Lake Formation e faça login como administrador do data lake.
  2. No painel de navegação, selecione Bancos de dados.
  3. Selecione o link do recurso que você criou.
  4. Escolha Ações, em seguida, escolha Conceder.
  5. Em Entidades principais, selecione usuários e perfis do IAM.
  6. Em usuários e perfis do IAM, selecione a entidade principal ou usuário do IAM para o qual você precisa conceder acesso.
  7. Em Permissões do link de recursos, selecione Descrever.
  8. Escolha Conceder.

Para conceder acesso aos usuários do IAM para os bancos de dados compartilhados, faça o seguinte:

  1. Abra o console do Lake Formation e faça login como administrador do data lake.
  2. No painel de navegação, selecione Bancos de dados.
  3. Selecione o banco de dados compartilhado.
  4. Escolha Ações, em seguida, escolha Conceder.
  5. Em Entidades principais, selecione usuários e perfis do IAM.
  6. Em usuários e perfis do IAM, selecione a entidade principal ou usuário do IAM para o qual você precisa conceder acesso.
  7. Em Permissões do banco de dados, selecione Descrever.
    Observação: Essa etapa fornece as permissões mínimas para que os usuários visualizem o banco de dados compartilhado.
  8. Escolha Conceder.

Para conceder acesso a todas as tabelas ou a tabelas específicas no banco de dados, selecione a opção Todas as tabelas:

  1. Selecione o link do recurso.
  2. Escolha Ações, em seguida, escolha Conceder.
  3. Selecione usuários e perfis do IAM.
  4. Em usuários e perfis do IAM, selecione a entidade principal/usuário para o qual você deseja conceder acesso.
  5. Em LF-Tags ou recursos de catálogo, faça o seguinte:
    Para conceder acesso a todas as tabelas no banco de dados, em Tabelas — opcional, selecione Todas as tabelas.
    Para conceder acesso somente a tabelas específicas no banco de dados, em Tabelas — opcional, selecione as tabelas.
  6. Em Permissões de tabela e Permissões concedidas, selecione Selecionar e Descrever.
  7. Escolha Conceder.

Observação: É possível conceder somente as permissões que você selecionou para permissões concedidas na conta de origem.

Depois de conceder as permissões necessárias, é possível consultar com êxito a tabela no Athena a partir da conta de destino.

Compartilhe somente tabelas com a conta de destino

Para compartilhar tabelas individuais com a conta de destino, siga as instruções da seção anterior com as seguintes alterações.

Conta de origem:

Para conceder acesso à conta de destino a partir do console do Lake Formation, selecione as tabelas individuais em vez de selecionar o banco de dados.

Conta de destino:

  • Aceite o compartilhamento de recursos no console do RAM da AWS para acessar a tabela compartilhada no console do Lake Formation.
  • Crie um link de recurso para a tabela compartilhada. Depois que o link do recurso for criado, será possível consultar a tabela compartilhada com o acesso de administrador do data lake.
  • Para conceder acesso às entidades principais/usuários do IAM para a tabela compartilhada, você deve conceder permissões para o link do recurso.

Revisar considerações adicionais

  • Ao conceder permissões na tabela, é possível restringir o acesso somente às colunas específicas na tabela. Se você fizer isso, a conta de destino poderá visualizar somente essas colunas na tabela compartilhada.
  • Certifique-se de que as entidades principais/usuários do IAM da conta de destino tenham acesso ao caminho do Amazon Simple Storage Service (Amazon S3) na conta de origem.
  • Se você revogar as permissões concedidas anteriormente pela conta de origem, a conta de destino não poderá acessar o banco de dados/tabela compartilhado. No entanto, o link do recurso que você criou na conta de destino não é excluído automaticamente. Você deve excluir manualmente o link do recurso.
  • Quando você exclui um banco de dados/tabela, os compartilhamentos de recursos no AWS RAM não são excluídos automaticamente. Portanto, você deve revogar manualmente as permissões entre contas antes de excluir um banco de dados ou uma tabela compartilhada.

Informações relacionadas

Visualização de tabelas e bancos de dados compartilhados do Data Catalog

Criação de links de recursos

Conceder permissões de localização de dados (conta externa)

Conceder e revogar permissões em recursos do Data Catalog

Como funciona o atributo de contas cruzadas do AWS Lake Formation

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos