Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como criar credenciais de armazenamento no Unity Catalog para se conectar ao AWS S3. O suporte ao S3 no Azure Databricks é de leitura apenas.
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 Unity Catalog 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 na nuvem usando o Unity Catalog.
Para obter informações sobre outras opções de armazenamento em nuvem suportadas pelo Unity Catalog, consulte Opções de armazenamento em nuvem suportadas pelo Unity Catalog.
Observação
Podem ser aplicadas taxas de transferência de dados entre nuvens. Quando você usa computação sem servidor, é cobrado de acordo com a política de transferência de dados e conectividade do Databricks.
Criar a credencial de armazenamento
Para criar uma credencial de armazenamento para acesso a um bucket do S3, crie uma função do AWS IAM que autorize o acesso ao caminho do bucket do S3 e faça referência a essa função do IAM na definição de credencial de armazenamento.
Requerimentos
No Azure Databricks:
- Espaço de trabalho do Azure Databricks ativado para o Unity Catalog.
-
CREATE STORAGE CREDENTIAL
privilégio no metastore do Unity Catalog associado ao espaço de trabalho. Os administradores de conta e os administradores de metastore têm esse privilégio por padrão.
Na sua conta da AWS:
Um bucket S3 que atenda aos seguintes requisitos:
- Não use notação de ponto (por exemplo,
incorrect.bucket.name.notation
) em nomes de bucket do S3. Embora a AWS permita pontos em nomes de bucket, o Azure Databricks não oferece suporte a buckets do S3 com notação de pontos. Buckets contendo pontos podem causar problemas de compatibilidade com funcionalidades, como Delta Sharing, devido a falhas na validação do certificado SSL. Para obter mais informações, consulte as práticas recomendadas de nomenclatura de bucket da 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 do IAM.
Etapa 1: Criar uma função do IAM
Na AWS, crie uma função do IAM que dê acesso ao bucket do S3 que você deseja que seus usuários acessem. Essa função do IAM deve ser definida na mesma conta que o bucket do S3.
Sugestão
Se você já criou uma função do IAM que fornece esse acesso, pode ignorar esta etapa e ir direto para a Etapa 2: Fornecer ao Azure Databricks os detalhes da função do IAM.
Crie uma função do IAM que permita o acesso ao bucket do S3.
A criação de funções é um processo em duas etapas. Nesta etapa, você cria 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ê modifica 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 autoassumida (ou seja, deve ser configurada para confiar em si mesma). A função deve, portanto, existir antes de adicionar a declaração de auto-suposição. Para obter informações sobre auto-assunção de funções, consulte este artigo do blog da Amazon.
Importante
O Databricks bloqueia credenciais de armazenamento novas e existentes com base em funções do IAM que não são autoassumidas. Para obter mais informações, consulte Política de aplicação de funções de autoassunção.
Para criar a política, é necessário usar um identificador externo de substituição.
Crie a função do IAM com uma política de confiança personalizada.
No campo Política de Confiança Personalizada , cole o seguinte JSON de política.
Esta política estabelece uma relação de confiança entre contas para que o Unity Catalog possa assumir a função de acessar os dados no bucket em nome dos usuários do Databricks. Isso é especificado pelo ARN na seção
Principal
. É um valor estático que faz referência a uma função criada pelo Databricks.A política define o ID externo para
0000
como um marcador de posição. Você atualiza isso para a ID externa de 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 adicionar isso em uma etapa posterior.
Guarde o papel do IAM.
Crie a seguinte política de IAM na mesma conta que o bucket S3, substituindo os valores a seguir:
-
<BUCKET>
: O nome do bucket do S3. -
<KMS-KEY>
: Opcional. Se a criptografia estiver habilitada, forneça o nome da chave KMS que criptografa o conteúdo do bucket do S3. Se a criptografia estiver desabilitada, remova toda a seção KMS da política do IAM. -
<AWS-ACCOUNT-ID>
: o ID da conta da sua conta da AWS (não da sua conta do Databricks). -
<AWS-IAM-ROLE-NAME>
: o nome da função do AWS IAM que você criou na etapa anterior.
Esta política do IAM concede permissões de leitura e escrita. Você também pode criar uma política que conceda acesso somente 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 do 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 do IAM mais restritiva para o Unity Catalog, entre em contato com sua equipe de conta do Azure Databricks para obter assistência.
-
Crie uma política IAM para eventos de ficheiro na mesma conta que o bucket S3.
Observação
Esta etapa é opcional, mas altamente recomendada. Se você não conceder acesso ao Azure Databricks para configurar eventos de arquivo em seu nome, deverá configurar eventos de arquivo manualmente para cada local. Se você não fizer isso, você terá acesso limitado a recursos críticos que o Databricks pode 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 de notificação de eventos do bucket, criar um tópico SNS, criar uma fila SQS e inscrever a fila SQS no 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 do IAM ao papel do IAM.
Na guia Permissão da função, anexe as políticas do IAM que você acabou de criar.
Etapa 2: Fornecer ao Azure Databricks os detalhes da função do IAM
No Azure Databricks, inicie sessão num espaço de trabalho associado ao metastore do Catálogo Unity.
Deve ter o privilégio
CREATE STORAGE CREDENTIAL
. As funções de administrador de metastore e administrador de conta incluem esse privilégio.Clique no
Catálogo.
Na página de Acesso rápido , clique no botão Dados externos >, vá para o separador Credenciais e selecione Criar credencial.
Selecione um tipo de credencial de função do AWS IAM.
Insira um nome para a credencial, o ARN de função do IAM que autoriza o Unity Catalog a acessar o local de armazenamento em seu locatário de nuvem e um comentário opcional.
(Opcional) Se desejar 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, consulte Marcar uma credencial de armazenamento como somente de leitura.
Observação
Como o Azure Databricks fornece apenas acesso somente leitura a buckets do S3 usando credenciais de armazenamento, não há necessidade de 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 espaços de trabalho específicos.
Por padrão, qualquer usuário privilegiado pode usar a credencial de armazenamento em qualquer espaço de trabalho anexado ao metastore. Se quiser permitir o acesso apenas a partir de espaços de trabalho específicos, aceda ao separador
Espaços de Trabalho e atribua espaços de trabalho. Consulte (Opcional) Atribuir a credencial de armazenamento a espaços de trabalho específicos.
Você também pode criar uma credencial de armazenamento usando o provedor Databricks Terraform e databricks_storage_credential.
Etapa 3: Atualizar a política de relacionamento de confiança da função de IAM
Na AWS, modifique a política de relacionamento de confiança para adicionar o ID externo da sua credencial de armazenamento e torná-la autoassumida.
Volte à sua função IAM guardada e vá para o separador Relações de confiança.
Edite a política de relação de confiança da seguinte maneira:
Adicione o seguinte ARN à instrução "Allow". Substitua
<YOUR-AWS-ACCOUNT-ID>
e<THIS-ROLE-NAME>
pelo ID da conta real e pelos valores de função do IAM."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
"sts:AssumeRole"
Na instrução, atualize o ID externo do espaço reservado para o ID externo da credencial de armazenamento que você copiou na etapa anterior."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
Sua política agora deve ter a seguinte aparência, com o texto de substituição atualizado para usar o ID externo, o ID da conta e os valores de função do IAM da credencial de armazenamento:
{ "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 da função do IAM na Etapa 3: atualizar a política de relação de confiança da função do IAM, verifique se sua função do 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 logon em um espaço de trabalho 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
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: atualizar a política de relacionamento de confiança da função do IAM e revise a política de confiança da função do IAM para configurá-la corretamente.
Quando a credencial de armazenamento é validada, você pode usá-la para criar um local externo.
Política de aplicação de papéis autoassumidos
Em 30 de junho de 2023, a AWS atualizou a sua política de confiança das funções do IAM para exigir que as funções do IAM tenham confiança própria explicita para STS:AssumeRole
chamadas. Como resultado, o Databricks exige que as funções do AWS IAM para credenciais de armazenamento sejam auto-assumíveis. Para obter detalhes, consulte esta postagem do 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 do IAM que não se autoautenticam. Essa proibição pode interromper cargas de trabalho e tarefas executadas usando credenciais que não se auto-assumem.
Para verificar se uma função do AWS IAM para uma credencial de armazenamento é autoassumida, siga as instruções em Etapa 4: validar a credencial de armazenamento. Se a verificação Self Assume Role falhar, revisite a Etapa 3: atualizar a política de relacionamento de confiança da função do IAM e reconfigure a política de confiança da função do IAM para confiar em si mesma.
Se você tiver várias credenciais de armazenamento em um metastore que deseja verificar, use o seguinte bloco de anotações para verificar os recursos de auto-assunção de todas as credenciais de armazenamento em seu metastore:
Caderno de verificação de credenciais de armazenamento autoassumido
(Opcional) Atribuir a credencial de armazenamento a espaços de trabalho específicos
Por padrão, uma credencial de armazenamento é acessível a partir de todos os espaços de trabalho no metastore. Isso significa que, se um usuário tiver recebido um privilégio (como CREATE EXTERNAL LOCATION
) nessa credencial de armazenamento, ele poderá exercer esse privilégio de qualquer espaço de trabalho anexado ao metastore. Se você usar espaços de trabalho para isolar o acesso aos dados do usuário, convém permitir o acesso a uma credencial de armazenamento somente de espaços de trabalho específicos. Esse recurso é conhecido como vinculação de espaço de trabalho ou isolamento de credenciais de armazenamento. Para obter instruções, consulte (Opcional) Atribuir uma credencial de armazenamento a espaços de trabalho específicos.
Limitações
- Em espaços de trabalho que usam controle de saída sem servidor, o acesso entre plataformas a buckets do AWS S3 deve ser configurado usando a API de políticas de rede.
Próximos passos
Exibir, atualizar, excluir e conceder permissão a outros usuários para usar uma credencial de armazenamento. Consulte Gerenciar credenciais de armazenamento.
Defina locais externos usando uma credencial de armazenamento. Consulte Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.