Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como criar credenciais de armazenamento no Catálogo do Unity para se conectar ao AWS S3. O suporte para S3 no Azure Databricks é somente leitura.
Uma credencial de armazenamento contém uma credencial de nuvem de longo prazo com acesso ao armazenamento em nuvem. Você faz referência a uma credencial de armazenamento e ao caminho de armazenamento em nuvem ao criar locais externos no Catálogo do Unity para controlar o acesso ao armazenamento externo.
Para obter mais informações sobre credenciais de armazenamento e locais externos, consulte Conectar-se ao armazenamento de objetos de nuvem usando o Catálogo do Unity.
Para obter informações sobre outras opções de armazenamento em nuvem compatíveis com o Catálogo do Unity, consulte as opções de armazenamento em nuvem compatíveis com o Catálogo do Unity.
Observação
Os encargos de transferência de dados entre nuvens podem ser aplicados. Ao usar a computação sem servidor, você é cobrado de acordo com a política de transferência e conectividade de dados do Databricks.
Criar a credencial de armazenamento
Para criar uma credencial de armazenamento para acesso a um bucket S3, crie uma função IAM do AWS que autorize o acesso ao caminho do bucket S3 e faça referência à função IAM na definição de credencial de armazenamento.
Requisitos
No Azure Databricks:
- Workspace do Azure Databricks habilitado para o Catálogo do Unity.
- Privilégio
CREATE STORAGE CREDENTIALno metastore do Catálogo do Unity anexado ao workspace. Os administradores de conta e administradores de metastore têm esse privilégio por padrão.
Em sua conta do AWS:
Um bucket S3 que atende aos seguintes requisitos:
- Não use notação de ponto (por exemplo,
incorrect.bucket.name.notation) em nomes de bucket S3. Embora o AWS permita pontos em nomes de bucket, o Azure Databricks não dá suporte a buckets do S3 com notação de ponto. Buckets que contêm pontos podem causar problemas de compatibilidade com recursos como o Compartilhamento Delta devido a falhas de validação de certificado SSL. Para obter mais informações, consulte as práticas recomendadas de nomenclatura do bucket do AWS. - O bucket não pode ter uma lista de controle de acesso do S3 anexada a ele.
- Não use notação de ponto (por exemplo,
A capacidade de criar funções IAM.
Etapa 1: Criar uma função de IAM
No AWS, crie uma função IAM que dê acesso ao bucket S3 que você deseja que seus usuários acessem. Essa função IAM deve ser definida na mesma conta que o bucket S3.
Dica
Se você já criou uma função IAM que fornece esse acesso, ignore esta etapa e vá direto para a Etapa 2: forneça ao Azure Databricks os detalhes da função IAM.
Crie uma função IAM que permita o acesso ao bucket S3.
A criação de função é um processo de duas etapas. Nesta etapa, você criará a função, adicionando uma política de relação de confiança temporária e uma ID externa de espaço reservado que você modificará depois de criar a credencial de armazenamento no Azure Databricks.
Você deve modificar a política de confiança depois de criar a função, porque sua função deve ser auto-assumível (ou seja, ela deve ser configurada para confiar em si mesma). Portanto, a função deve existir antes de adicionar a instrução de autopressuposição. Para obter informações sobre funções de autopressuposição, consulte este artigo no blog da Amazon.
Importante
O Databricks bloqueia credenciais de armazenamento novas e existentes com base em funções IAM que não são autossustensiosas. Para obter detalhes, consulte Política de imposição de função de autopressuposição.
Para criar a política, você deve usar um identificador externo provisório.
Crie a função IAM com uma Política de Confiança Personalizada.
No campo Política de Confiança Personalizada , cole o JSON da política a seguir.
Essa política estabelece uma relação de confiança entre contas para que o Catálogo do Unity possa assumir a função de acessar os dados no bucket em nome dos usuários do Databricks. Isso é especificado pelo ARN na
Principalseção. É um valor estático que faz referência a uma função criada pelo Databricks.A política define a ID externa como
0000como um espaço reservado. Você atualizará isso para o ID externo da sua credencial de armazenamento em uma etapa posterior.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q"] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "0000" } } } ] }Ignore a configuração da política de permissões. Você voltará para adicioná-la em uma etapa posterior.
Salve a função IAM.
Crie a seguinte política de IAM na mesma conta que o bucket S3, substituindo os seguintes valores:
-
<BUCKET>: o nome do bucket S3. <KMS-KEY>: opcional. Se a criptografia estiver habilitada, forneça o nome da chave KMS que criptografa o conteúdo do bucket S3. Se a criptografia estiver desabilitada, remova toda a seção KMS da política de IAM.<AWS-ACCOUNT-ID>: a ID da conta da AWS (não sua conta do Databricks).<AWS-IAM-ROLE-NAME>: o nome da função IAM do AWS que você criou na etapa anterior.
Essa política de IAM concede acesso de leitura e gravação. Você também pode criar uma política que conceda somente acesso de leitura. No entanto, isso pode ser desnecessário porque você pode marcar a credencial de armazenamento como somente leitura, e qualquer acesso de gravação concedido por essa função IAM será ignorado.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"], "Effect": "Allow" }, { "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"], "Resource": ["arn:aws:kms:<KMS-KEY>"], "Effect": "Allow" }, { "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"], "Effect": "Allow" } ] }Observação
Se você precisar de uma política de IAM mais restritiva para o Catálogo do Unity, entre em contato com sua equipe de conta do Azure Databricks para obter assistência.
-
Crie uma política de IAM para eventos de arquivo na mesma conta do bucket S3.
Observação
Esta etapa é opcional, mas altamente recomendada. Se não conceder acesso ao Azure Databricks para configurar eventos de arquivo em seu nome, você deverá configurar eventos de arquivo manualmente para cada local. Caso contrário, você terá acesso limitado a recursos críticos que o Databricks poderá lançar no futuro. Para obter mais informações sobre eventos de arquivo, consulte (Recomendado) Habilitar eventos de arquivo para um local externo.
A política do IAM concede permissão ao Azure Databricks para atualizar a configuração das notificações de eventos do bucket, criar um tópico SNS, criar uma fila SQS e associar a fila SQS ao tópico SNS. Esses são recursos necessários para recursos que usam eventos de arquivo. Substitua
<BUCKET>pelo nome do bucket S3.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManagedFileEventsSetupStatement", "Effect": "Allow", "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:CreateTopic", "sns:TagResource", "sns:Publish", "sns:Subscribe", "sqs:CreateQueue", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:SetQueueAttributes", "sqs:TagQueue", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue" ], "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsListStatement", "Effect": "Allow", "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsTeardownStatement", "Effect": "Allow", "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] } ] }Anexe as políticas de IAM à função IAM.
Na guia Permissão da Função, anexe as políticas de IAM que você acabou de criar.
Etapa 2: fornecer ao Azure Databricks os detalhes da função IAM
No Azure Databricks, faça login em um espaço de trabalho vinculado ao metastore do Catálogo do Unity.
Você precisa ter o privilégio
CREATE STORAGE CREDENTIAL. As funções de administrador do metastore e administrador da conta incluem esse privilégio.Clique no
Catálogo.
Na página Acesso rápido, clique no botão Dados externos >, vá para a guia Credenciais e selecione Criar credencial.
Selecione um tipo de credencial de função IAM do AWS.
Insira um nome para a credencial, o ARN da função IAM que autoriza o Unity Catalog a acessar o local de armazenamento no seu locatário de nuvem e um comentário opcional.
(Opcional) Se você quiser que os usuários tenham acesso somente leitura aos locais externos que usam essa credencial de armazenamento, em Opções avançadas, selecione Somente leitura. Para obter mais informações, confira Marcar uma credencial de armazenamento como somente leitura.
Observação
Como o Azure Databricks fornece apenas acesso somente leitura a buckets S3 usando credenciais de armazenamento, não é necessário definir essa opção.
Clique em Criar.
Na caixa de diálogo Credencial de armazenamento criada, copie a ID externa.
Clique em Concluído.
(Opcional) Associe a credencial de armazenamento a workspaces específicos.
Por padrão, qualquer usuário privilegiado pode usar a credencial de armazenamento em qualquer workspace anexado ao metastore. Se você quiser permitir o acesso apenas de workspaces específicos, acesse a guia Workspaces e atribua workspaces. Consulte (Opcional) Atribuir a credencial de armazenamento a workspaces específicos.
Você também pode criar uma credencial de armazenamento usando o provedor Terraform do Databricks e databricks_storage_credential.
Etapa 3: Atualizar a política de relação de confiança da função IAM
No AWS, modifique a política de relação de confiança para adicionar a ID externa da credencial de armazenamento e torne-a autossustensiosa.
Retorne para a função IAM salva e vá para a guia Relações de Confiança.
Edite a política de relação de confiança da seguinte maneira:
Adicione o ARN a seguir à instrução "Allow". Substitua
<YOUR-AWS-ACCOUNT-ID>e<THIS-ROLE-NAME>pelos valores reais do ID da conta e da função IAM."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"Na instrução
"sts:AssumeRole", atualize a ID externa do espaço reservado para a ID externa da credencial de armazenamento copiada na etapa anterior."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"Sua política agora deve ser semelhante à seguinte, com o texto de substituição atualizado para usar a ID externa da credencial de armazenamento, a ID da conta e os valores da função IAM:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q", "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>" } } } ] }
Etapa 4: Validar a credencial de armazenamento
Depois de fazer as alterações na política de confiança de função do IAM na Etapa 3: atualize a política de relação de confiança de função do IAM, verifique se a função IAM está configurada corretamente para ser usada como uma credencial de armazenamento.
Observação
Para validar a configuração, você deve ser o proprietário da credencial de armazenamento, um administrador de metastore ou ter CREATE EXTERNAL LOCATION permissões na credencial de armazenamento.
No Azure Databricks, faça login em um workspace vinculado ao metastore.
Clique no
Catálogo.
Na página acesso rápido, clique no botão Dados >Externos e vá para a guia Credenciais.
Como alternativa, você pode clicar no ícone de engrenagem
na parte superior do painel Catálogo e selecionar Credenciais.
Selecione a credencial de armazenamento que você deseja validar.
Clique no
.Se alguma das verificações falhar, retorne à Etapa 3: atualize a política de relação de confiança de função do IAM e examine a política de confiança da função IAM para configurá-las corretamente.
Quando a credencial de armazenamento é validada, você pode usá-la para criar um local externo.
Política de imposição de função de autopressuposição
Em 30 de junho de 2023, a AWS atualizou sua política de confiança de função IAM para exigir que as funções IAM confiassem explicitamente em si mesmas para chamadas de STS:AssumeRole. Como resultado, o Databricks requer que as funções IAM da AWS para credenciais de armazenamento sejam autopressumíveis. Para obter detalhes, consulte esta postagem no blog da comunidade.
Em 20 de janeiro de 2025, o Databricks começou a bloquear o uso de credenciais de armazenamento existentes com funções IAM não auto-assumidas. Essa proibição pode interromper cargas de trabalho e trabalhos que são executados usando credenciais que não são de autopressuposição.
Para verificar se uma função do IAM da AWS para uma credencial de armazenamento é autoassumida, siga as instruções na Etapa 4: Validar a credencial de armazenamento. Se a verificação Autopressupor Função falhar, visite novamente a Etapa 3: Atualizar a política de relação de confiança da função IAM e reconfigure a política de confiança da função IAM para confiar em si próprio.
Se você tiver várias credenciais de armazenamento em um metastore que deseja verificar, use o bloco de anotações a seguir para verificar os recursos autossutensiosos de todas as credenciais de armazenamento em seu metastore:
Notebook de verificação de credenciais de armazenamento autopressumível
(Opcional) Atribuir a credencial de armazenamento a espaços de trabalho específicos
Por padrão, uma credencial de armazenamento é acessível de todos os workspaces no metastore. Isso significa que, se um usuário recebeu um privilégio (como CREATE EXTERNAL LOCATION) nessa credencial de armazenamento, poderá exercer esse privilégio de qualquer workspace anexado ao metastore. Se você usar espaços de trabalho para isolar o acesso a dados do usuário, convém permitir o acesso a uma credencial de armazenamento somente de espaços de trabalho específicos. Essa funcionalidade é conhecida como associação de workspace ou isolamento de credencial de armazenamento. Para obter instruções, consulte (Opcional) Atribuir uma credencial de armazenamento a workspaces específicos.
Limitações
- Em workspaces que usam o controle de saída sem servidor, o acesso multiplataforma aos buckets do AWS S3 deve ser configurado usando a API de políticas de rede.
Próximas etapas
Exiba, atualize, exclua e conceda a outros usuários permissão para usar uma credencial de armazenamento. Confira Gerenciar credenciais de armazenamento.
Defina locais externos usando uma credencial de armazenamento. Confira Crie um local externo para conectar o armazenamento em nuvem ao Azure Databricks.