Como compartilho 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 recurso de várias contas do Lake Formation, você pode 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 etiqueta ou recursos nomeados. Este artigo concentra-se 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 os recursos do Data Catalog com outra conta ou acessar recursos compartilhados de outra conta:

Gerenciar permissões do Lake Formation

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

Impedir que novas tabelas tenham super permissões

Para bancos de dados do Data Catalog que contenham tabelas que você possa compartilhar, evite que novas tabelas tenham uma concessão padrão de Super para IAMAllowedPrincipals:

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

Para obter mais informações, consulte Super.

Adicione permissões necessárias para acesso entre contas

Se a política de recursos do AWS Glue Data Catalog já estiver habilitada na conta, então você poderá 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 da conta 1111222233334444.

Para obter mais informações, consulte Concessão de 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"
      ]
    }
  ]
}

Permitir o compartilhamento com organizações

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

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

Conceder as permissões do 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). Você pode escolher a política gerenciada da 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 nas contas de destino devem ter a seguinte política adicional. Essa política permite que o administrador aceite os convites de compartilhamento de recursos da AWS RAM e habilite 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 a função do IAM que recebe o convite de compartilhamento de recursos na 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 no 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á compartilhada automaticamente 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, escolha Databases (Bancos de dados).
  3. Selecione o banco de dados que você deseja compartilhar.
  4. Escolha Ações e, em seguida, escolha Conceder.
  5. Selecione Conta externa.
  6. Para ID da conta da AWS ou ID da organização da AWS, insira o ID da conta de destino.
  7. Para Tabela, certifique-se de que Todas as tabelas estejam selecionadas.
  8. Para Permissões de tabela e Permissões concedíveis, 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 Accept resource share (Aceitar compartilhamento de recursos).
  5. Abra o console do Lake Formation.
  6. No painel de navegação, escolha Databases (Bancos de dados).
    Você pode 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 de 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.
    Para Banco de dados compartilhado, certifique-se de que o nome do banco de dados compartilhado esteja selecionado.
    Para ID do proprietário do banco de dados compartilhado, insira o ID da conta de origem.
  10. Escolha Criar.
    O link do recurso é criado.

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 compartilhados e tabelas de outras contas da AWS. Eles ajudam a permitir o acesso entre contas aos dados no data lake. Depois que o link de recurso é criado, você pode consultar as tabelas no banco de dados compartilhado com o acesso de administrador do data lake.

Para conceder acesso aos usuários/entidades principais 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 os usuários/entidades principais 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, escolha Databases (Bancos de dados).
  3. Selecione o link do recurso que você criou.
  4. Escolha Actions (Ações) e, em seguida, escolha Grant (Conceder).
  5. Em Principals (Entidades principais), selecione IAM users and roles (Usuários e funções do IAM).
  6. Para IAM users and roles (Usuários e funções do IAM), selecione o usuário/entidade principal para o qual você deseja conceder acesso.
  7. Em Resource link permissions (Permissões do link do recurso), selecione Describe (Descrever).
  8. Escolha Grant (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, escolha Databases (Bancos de dados).
  3. Selecione o banco de dados compartilhado.
  4. Escolha Actions (Ações) e, em seguida, escolha Grant (Conceder).
  5. Em Principals (Entidades principais), selecione IAM users and roles (Usuários e funções do IAM).
  6. Para IAM users and roles (Usuários e funções do IAM), selecione o usuário/entidade principal para o qual você deseja conceder acesso.
  7. Em Database permissions (Permissões do banco de dados), selecione Describe (Descrever).
    Observação: esta etapa fornece as permissões mínimas para os usuários visualizarem o banco de dados compartilhado.
  8. Escolha Grant (Conceder).

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

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

Observação: você pode conceder somente as permissões selecionadas para permissões Concedíveis na conta de origem.

Depois de conceder as permissões necessárias, você pode consultar com êxito a tabela no Athena usando a conta de destino.

Compartilhe apenas 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 no 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 AWS RAM para acessar a tabela compartilhada no console do Lake Formation.
  • Crie um link do recurso para a tabela compartilhada. Depois que o link de recurso for criado, você poderá consultar a tabela compartilhada com o acesso de administrador do data lake.
  • Para conceder acesso aos usuários/principais do IAM para a tabela compartilhada, você deve conceder permissões para o link do recurso.

Analise as considerações adicionais

  • Ao conceder permissões na tabela, você pode restringir o acesso somente para as colunas específicas da tabela. Se você fizer isso, a conta de destino poderá visualizar somente essas colunas na tabela compartilhada.
  • Certifique-se de que os usuários/entidades principais 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 da conta de origem, a conta de destino não poderá acessar o banco de dados/tabela compartilhados. 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 na 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

Exibir tabelas e bancos de dados compartilhados do Data Catalog

Criar links de recursos

Granting data location permissions (external account) (Conceder permissões de localização de dados [conta externa])

Granting and revoking permissions on Data Catalog resources (Conceder e revogar permissões em recursos do Data Catalog)

How AWS Lake Formation cross-account feature works (Como o recurso entre contas do AWS Lake Formation funciona)

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos