Federar para Databricks Unity Catalog - AWS Lake Formation

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

Federar para Databricks Unity Catalog

AWS Glue Data Catalog federa para Databricks usar as OAuth2 credenciais de um diretor de Databricks serviço. Esse mecanismo de autenticação permite AWS Glue Data Catalog acessar os metadados de vários objetos (como catálogos, bancos de dados e tabelas) emDatabricks Unity Catalog, com base nos privilégios associados ao principal do serviço. Para garantir o acesso aos objetos certos, é essencial conceder ao responsável pelo serviço as permissões necessárias Databricks para ler os metadados desses objetos.

Em seguida, a federação de catálogos permite a descoberta e a consulta de Iceberg tabelas em seu catálogo do Databricks Unity. Para ler tabelas delta, certifique-se de que Iceberg os metadados estejam disponíveis para o uso Uniform dessas tabelas. Siga o Databricks tutorial e a documentação para criar o principal de serviço e os privilégios associados em seu espaço Databricks de trabalho.

Pré-requisitos

Antes de criar um catálogo federado no Catálogo de Dados que seja controlado pelo Lake Formation, verifique se você tem as seguintes permissões:

Seu diretor do IAM (usuário ou função) deve ter as seguintes permissões:

  • Permissões do Lake Formationlakeformation:RegisterResource, lakeformation:DescribeResource

  • AWS Glue permissõesglue:CreateConnection,glue:CreateCatalog,glue:GetConnection, glue:PassConnection

  • Permissões do Secrets Managersecretsmanager:CreateSecret, secretsmanager:GetSecretValue

  • Permissões do IAMiam:CreateRole,iam:AttachRolePolicy, iam:PassRole

Você deve ser administrador do data lake do Lake Formation ou ter CREATE_CATALOG permissão no catálogo de dados.

Criar catálogo federado

  1. Faça login no console e abra o console do Lake Formation em https://console.aws.amazon.com/lakeformation/.

  2. Escolha a AWS região preferida na seção superior direita da página.

  3. No painel de navegação à esquerda, selecione Catálogos.

  4. Escolha Criar catálogo para abrir o fluxo de trabalho Criar catálogo.

  5. Na etapa Escolher fonte de dados, Databricks selecione entre as opções disponíveis.

  6. Na etapa Definir detalhes do catálogo, você fornece três informações: detalhes do catálogo, detalhes da conexão e detalhes do registro.

  7. No contêiner de detalhes do catálogo, forneça um nome exclusivo para seu catálogo AWS Glue federado e insira o nome do Databricks catálogo existente.

  8. No contêiner de detalhes de conexões, você pode escolher entre uma conexão existente à qual você tem acesso ou fornecer configuração para criar um novo conector.

  9. As novas configurações de conexão incluem:

    • Nome da conexão — Um nome exclusivo do objeto de AWS Glue conexão.

    • URL do espaço de trabalho — O URL do endpoint do seu espaço de trabalho existenteDatabricks.

    • Autenticação — Especifique a configuração de autenticação AWS Glue usada para se conectar ao servidor de catálogo remoto. AWS Glue suporta tanto a autenticação OAuth2 quanto a autenticação personalizada.

    • URL do token — especifique a URL do provedor de identidade do catálogo remoto.

    • OAuth2 ID do cliente — especifique o ID do cliente da OAuth2 credencial associada ao seu catálogo remoto.

    • Segredo — Armazene e use o segredo OAuth2 do cliente usando AWS Secrets Manager ou insira o valor secreto na caixa de texto. Quando você insere o segredo manualmente no console, AWS Glue cria o segredo em seu nome.

    • Escopo do URL do token — Especifique o OAuth escopo da autenticação.

  10. Crie uma função do IAM que AWS Glue os diretores de serviço do Lake Formation possam usar para acessar locais secretos e locais de tabelas Iceberg remotas no Amazon S3, respectivamente. Selecione a função do IAM no menu suspenso de registro. Consulte as etapas 2 e 3 na seção CLI a seguir para obter detalhes da política do IAM.

  11. Selecione Testar conexão para testar se suas propriedades de conexão e o acesso à função do IAM estão configurados corretamente. A funcionalidade de teste de conexão não está disponível ao se conectar Databricks usando a Amazon VPC.

  12. Selecione Avançar para revisar suas configurações.

  13. Selecione Criar catálogo na página de revisão.

  1. Crie um AWS Secrets Manager segredo

    O AWS Glue conector oferece suporte a dois tipos de autenticação: OAuth2e personalizada. Ao usar OAuth2 a opção, use AWS Secrets Manager para armazenar o segredo do cliente do principal do Databricks serviço. Posteriormente, você usará esse segredo ao criar a AWS Glue Conexão. Para autenticação personalizada, use AWS Secrets Manager para armazenar e recuperar o token de acesso.

    No exemplo a seguir, substitua<databricks-secret>,<client_secret>, <region> por suas próprias informações.

    aws secretsmanager create-secret \ --name <databricks-secret> \ --description "Databricks secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "<client_secret>" }' \ --region <region>
    nota

    USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETé uma palavra-chave reservada AWS Glue usada para se referir a um valor secreto do cliente no segredo. Use a mesma palavra-chave ao criar o segredo no console do Lake Formation também.

  2. Crie uma função do IAM que dê acesso ao objeto de AWS Glue conexão ao segredo criado na etapa anterior

    O objeto de AWS Glue conexão requer acesso ao AWS Secrets Manager segredo quando você o usa AWS Secrets Manager para armazenar, recuperar e atualizar seu token OAuth secreto. O objeto de AWS Glue conexão também requer acesso para criar, descrever e usar as interfaces de rede da Amazon VPC quando você usa um endpoint da Amazon VPC para restringir a conectividade ao seu espaço de trabalho. Databricks

    Crie uma política do IAM e anexe-a a uma função do IAM. Adicione o principal de AWS Glue serviço à política de confiança.

    No exemplo a seguir, substitua <your-secrets-manager-ARN><your-vpc-id>, e <your-subnet-id1> por suas próprias informações.

    exemplo Política do IAM
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue" ], "Resource": [ "<your-secrets-manager-ARN>" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/<your-vpc-id>", "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/<your-subnet-id1>"] } } } ] }
    exemplo Política de confiança
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. Crie uma política do IAM que dê à Lake Formation acesso de leitura à localização do catálogo no Amazon S3

    Como proprietário de um catálogo federado no Catálogo de Dados, você usa o Lake Formation para conceder acesso a tabelas de baixa granularidade, acesso refinado em nível de coluna, nível de linha e nível de célula e acesso baseado em tags às suas equipes de dados. O Lake Formation usa uma função do IAM que lhe dá acesso às localizações subjacentes do Amazon S3 de suas tabelas remotas do Iceberg. Esse acesso permite que a Lake Formation forneça credenciais de acesso com escopo definido para mecanismos de análise que consultam tabelas remotas.

    Crie uma política do IAM e anexe-a a uma função do IAM. Adicione o diretor de serviço do Lake Formation à política de confiança da função do IAM.

    No exemplo a seguir, substitua <your-s3-bucket-N> e <your-kms-key> por suas próprias informações.

    exemplo Política do IAM
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::<your-s3-bucket-1>/*", "arn:aws:s3:::<your-s3-bucket-2>/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<your-s3-bucket-1>", "arn:aws:s3:::<your-s3-bucket-2>" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": [ "<your-kms-key>" ] } ] }
    exemplo Política de confiança
    { "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
    nota

    Quando você usa o console do Lake Formation para criar um catálogo federado, o console usa uma única função do IAM com as duas políticas anexadas para concluir a configuração.

  4. Criar um objeto de AWS Glue conexão

    O Data Catalog suporta connectionTypeDATABRICKSICEBERGRESTCATALOG: para conectar o Data Catalog a. Databricks Esse AWS Glue conector oferece suporte OAuth2 a métodos de autenticação personalizados.

    O exemplo a seguir usa a configuração de OAuth2 autenticação para criar uma AWS Glue conexão. Substitua highlighed sections por suas informações.

    aws glue create-connection \ --connection-input '{ "Name": "<your-glue-connection-to-databricks-unity-account>", "ConnectionType": "DATABRICKSICEBERGRESTCATALOG", "ConnectionProperties": { "INSTANCE_URL": "<your-databricks-workspace-catalog-URL>", "ROLE_ARN": "<your-IAM-role-for-secrets-and-VPC-access>" }, "AuthenticationConfiguration": { "AuthenticationType": "OAUTH2", "OAuth2Properties": { "OAuth2GrantType": "CLIENT_CREDENTIALS", "TokenUrl": "<your-internal-or-external-token-server-url>", "OAuth2ClientApplication": { "UserManagedClientApplicationClientId": "<your-client-id>" }, "TokenUrlParametersMap": { "scope": "all-apis" } }, "SecretArn": "arn:aws:secretsmanager:<aws-region>:<your-aws-account-id>:secret:<databricks-secret>" } }'
  5. Registre AWS Glue a conexão como um recurso do Lake Formation

    Usando o objeto de AWS Glue conexão (criado na Etapa 4) e a função do IAM (criada na Etapa 3), agora você pode registrar o objeto de AWS Glue conexão como um recurso gerenciado do Lake Formation.

    Substitua <your-glue-connector-arn> e <your-IAM-role-ARN-having-LF-access> por suas informações.

    aws lakeformation register-resource \ --resource-arn <your-glue-connector-arn> \ --role-arn <your-IAM-role-ARN-having-LF-access> \ --with-federation \ --with-privileged-access
  6. Crie um catálogo federado no Catálogo de Dados

    Depois de criar um objeto de AWS Glue conexão e registrá-lo no Lake Formation, você pode criar um catálogo federado no Catálogo de Dados:

    Forneça ao catálogo federado um nome exclusivo em<your-federated-catalog-name>, faça referência ao catálogo Databricks em "<catalog-name-in-Databricks> e insira o nome da conexão criada anteriormente em"<your-glue-connection-name>.

    aws glue create-catalog \ --name <your-federated-catalog-name> \ --catalog-input '{ "FederatedCatalog": { "Identifier": "<catalog-name-in-Databricks>", "ConnectionName": "<your-glue-connection-name>" }, "CreateTableDefaultPermissions": [], "CreateDatabaseDefaultPermissions": [] }'

Considerações ao integrar com Databricks

  • Quando você coloca recursos (como bancos de dados e tabelas) noDatabricks, o Lake Formation não revoga automaticamente as permissões concedidas nesse recurso federado. Para remover as permissões de acesso, você precisa revogar explicitamente as permissões que foram concedidas anteriormente no recurso federado usando o Lake Formation.

  • Você pode consultar tabelas do Iceberg armazenadas no Amazon S3 usando essa integração. Ao usar qualquer outro formato de tabela ou armazenamento de objetos, você pode federar metadados em catálogos remotos AWS Glue e listar seus bancos de dados e tabelas, mas operações de consulta, como SELECT ColumnFoo from TableBar ocorrerão falhas durante a consulta com o erro “Falha ao ler a tabela”. Apache Iceberg O local de armazenamento de objetos não é suportado. '

  • Você pode reutilizar a mesma AWS Glue conexão para criar vários catálogos federados. A exclusão de um catálogo não excluirá o objeto de conexão associado. Para excluir um objeto de conexão, use o aws glue delete-connection comando AWS CLI e certifique-se de que todos os catálogos associados sejam excluídos primeiro.