Crie uma credencial de armazenamento para se conectar ao AWS S3 (somente leitura)
Este artigo descreve como criar credenciais de armazenamento em Unity Catalog para se conectar a AWS S3. O suporte para S3 em Databricks on Google Cloud é somente leitura.
Uma credencial de armazenamento contém uma credencial de nuvem de longo prazo com acesso ao armazenamento em nuvem. O senhor faz referência a uma credencial de armazenamento e ao caminho de armazenamento em nuvem quando cria 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 Unity Catalog.
Para obter informações sobre outras opções de armazenamento em nuvem suportadas por Unity Catalog, consulte Opções de armazenamento em nuvem suportadas por Unity Catalog.
Podem ser aplicadas taxas de transferência de dados entre nuvens. Ao usar serverless compute, o senhor será cobrado de acordo com a política de conectividade & de transferência de dadosDatabricks.
Crie a credencial de armazenamento
Para criar uma credencial de armazenamento para acesso a um bucket S3, o senhor cria um AWS IAM role que autoriza o acesso ao caminho do bucket S3 e faz referência a esse IAM role na definição da credencial de armazenamento.
Requisitos
No Databricks:
- Um workspace do Databricks ativado para o Unity Catalog.
CREATE STORAGE CREDENTIAL
privilégio no metastore do Unity Catalog anexado ao workspace. Os administradores de contas e administradores do metastore têm esse privilégio por padrão.
Na sua conta da AWS:
-
Um bucket S3 que atende aos seguintes requisitos:
- O nome do bucket não pode incluir notação de ponto (por exemplo,
incorrect.bucket.name.notation
). Para mais orientações sobre nomenclatura de buckets, consulte as regras de nomenclatura de buckets da AWS. - O bucket não pode ter uma lista de controle de acesso S3 anexada a ele.
- O nome do bucket não pode incluir notação de ponto (por exemplo,
-
A capacidade de criar IAM roles.
Etapa 1: Criar um IAM role
Na AWS, crie uma IAM role que conceda acesso ao bucket S3 que você deseja que seus usuários acessem. Essa IAM role deve ser definida na mesma account que o bucket do S3.
Se o senhor já tiver criado um IAM role que forneça esse acesso, poderá pular esta etapa e ir direto para a Etapa 2:Databricks Fornecer os IAM role detalhes do ao.
-
Crie um IAM role que permita o acesso ao bucket S3.
O processo de criação de função divide-se em dois passos. Neste passo, você cria a função, adicionando uma policy de relacionamento de confiança temporária e um ID externo de placeholder que você modifica após criar a credencial de armazenamento no Databricks.
Você deve modificar a política de confiança depois de criar a função, porque sua função deve ser presunçosa (ou seja, deve ser configurada para confiar em si mesma). Por isso, a função deve existir antes de você adicionar a declaração de autosuposição. Para obter informações sobre papéis auto-assumidos, consulte este Amazon blogs artigos.
Databricks Bloqueia credenciais de armazenamento novas e existentes com base na função IAM que não são autoproclamadas. Para obter detalhes, consulte Política autopresumida de aplicação de funções.
Para criar a política, você deve usar uma ID externa de placeholder.
-
Crie a IAM role com uma policy de confiança personalizada .
-
No campo Policy de confiança personalizada , cole o JSON da policy a seguir.
Esta política estabelece uma relação de confiança entre contas para que o Unity Catalog possa assumir o papel 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.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCGCPMainRole-1UDE9F2YBJ8MD"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
} -
Ignore a configuração da policy de permissões. Você voltará para adicioná-la em uma passo posterior.
-
Salve a IAM role.
-
Crie a seguinte política de IAM na mesma account que o bucket S3, substituindo os seguintes valores:
<BUCKET>
: nome do depósito S3.<KMS-KEY>
: Opcional. Se a criptografia estiver habilitada, informe o nome da key KMS que criptografa o conteúdo do bucket do S3. Se a criptografia estiver desabilitada, remova toda a seção KMS da policy de IAM.<AWS-ACCOUNT-ID>
: ID de account da sua account da AWS (não da sua account do Databricks).<AWS-IAM-ROLE-NAME>
: nome da IAM role AWS que você criou na passo anterior.
Esta policy de IAM concede acesso de leitura e gravação. Você também pode criar uma policy que conceda acesso somente de leitura. No entanto, isso pode ser desnecessário, pois você pode marcar a credencial de armazenamento como somente leitura, e qualquer acesso de gravação concedido por essa IAM role será ignorado.
JSON{
"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"
}
]
}
Se você precisar de uma policy de IAM mais restritiva para o Unity Catalog, entre em contato com a equipe da sua account do Databricks para obter ajuda.
- Crie uma política IAM para eventos de arquivo no mesmo account que o bucket S3.
Essa etapa é opcional, mas altamente recomendada. Se o senhor não conceder acesso ao Databricks para configurar eventos de arquivo em seu nome, deverá configurar os eventos de arquivo manualmente para cada local. Caso contrário, o senhor terá acesso limitado a recursos críticos que o site Databricks poderá liberar no futuro. Para obter mais informações sobre eventos de arquivo, consulte ( Recomendado) Habilitar eventos de arquivo para um local externo.
A política de IAM concede à Databricks permissão para atualizar a configuração de notificação de eventos do seu bucket, criar um tópico de SNS, criar uma fila de SQS e assinar a fila de SQS no tópico de SNS. Esses são recursos necessários para os 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 site IAM ao site IAM role.
Na seção Permissão da função tab, anexe as políticas IAM que o senhor acabou de criar.
Etapa 2: Forneça ao site Databricks os detalhes do IAM role
-
Em Databricks, log in para um workspace que está vinculado ao metastore Unity Catalog.
Você deve ter o privilégio
CREATE STORAGE CREDENTIAL
. As funções de administrador do metastore e administrador da account incluem essa permissão. -
Clique em
Catálogo .
-
Na página Quick access (Acesso rápido ), clique no botão External data (Dados externos ) >, vá para Credentials (Credenciais ) tab e selecione Create credential (Criar credencial ).
-
Selecione um tipo de credencial de IAM role da AWS .
-
Insira um nome para a credencial, o ARN da IAM role que autoriza o Unity Catalog a acessar o local de armazenamento em seu locatário de nuvem e um comentário opcional.
-
(Opcional) Se você quiser que os usuários tenham acesso somente para 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 leitura.
Como o Databricks on Google Cloud fornece apenas acesso somente leitura aos buckets 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) Vincule a credencial de armazenamento a workspaces específicos.
Em default, qualquer usuário privilegiado pode usar a credencial de armazenamento em qualquer workspace anexado ao metastore. Se o senhor quiser permitir o acesso somente a partir de um espaço de trabalho específico, acesse o espaço de trabalho tab e atribua o espaço de trabalho. Consulte (Opcional) Atribuir a credencial de armazenamento a um espaço de trabalho específico.
O senhor 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 do site IAM role
No AWS, modifique a policy de relacionamento de confiança para adicionar a ID externa da sua credencial de armazenamento e torná-la autoassumida.
-
Retorne à sua IAM role salva e vá para a tab Relações de confiança .
-
Edite a policy de relacionamento de confiança da seguinte forma:
Adicione o seguinte ARN à declaração "Permitir". Substitua
<YOUR-AWS-ACCOUNT-ID>
e<THIS-ROLE-NAME>
pelos valores reais do seu account ID e IAM role."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
Na instrução
"sts:AssumeRole"
, atualize o ID externo do espaço reservado para o ID externo da sua credencial de armazenamento que você copiou no passo anterior."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
Sua policy agora deve ter esta aparência, com o texto de substituição atualizado para usar o ID externo, o ID da account e os valores de IAM role da sua credencial de armazenamento:
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::414351767826:role/unity-catalog-prod-UCGCPMainRole-1UDE9F2YBJ8MD",
"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 IAM role na Etapa 3: Atualizar a política de relacionamento de confiança IAM role, verifique se o IAM role está configurado corretamente para ser usado como credencial de armazenamento.
Para validar a configuração, você deve ser o proprietário da credencial de armazenamento, um administrador do metastore ou ter CREATE EXTERNAL LOCATION
permissões na credencial de armazenamento.
-
No Databricks, faça login em um workspace vinculado ao metastore.
-
Clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External Data (Dados externos ) > e vá para Credentials (Credenciais ) tab.
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
.
-
Se alguma das verificações falhar, volte à Etapa 3: Atualizar a política de relacionamento de confiança do site IAM role e revise a política de confiança do site IAM rolepara configurá-la corretamente.
Quando a credencial de armazenamento é validada, você pode usá-la para criar um local externo.
Política autopretensiosa de aplicação de funções
Em 30 de junho de 2023, o site AWS atualizou sua política de confiança IAM role para exigir que a função IAM explicitamente se autoconfie nas chamadas STS:AssumeRole
. Como resultado, o site Databricks exige que a função AWS IAM para as credenciais de armazenamento seja autônoma. Para obter detalhes, consulte esta postagem no blog da comunidade.
Em 20 de janeiro de 2025 , o site Databricks começou a bloquear o uso de credenciais de armazenamento existentes com a função IAM não autônoma. Essa proibição pode interromper cargas de trabalho e trabalhos que são executados usando credenciais não autônomas.
Para verificar se um AWS IAM role para uma credencial de armazenamento é autônomo, siga as instruções na Etapa 4: Validar a credencial de armazenamento. Se a verificação Self Assume Role falhar, repita a Etapa 3: Atualizar a política de relacionamento de confiança do IAM role e reconfigurar a política de confiança do IAM rolepara confiar em si mesmo.
Se você tiver várias credenciais de armazenamento em um metastore que deseja verificar, use o seguinte notebook para verificar as capacidades de autoassumir de todas as credenciais de armazenamento em seu metastore:
Verificação de credencial de armazenamento autônomo Notebook
(Opcional) Atribuir a credencial de armazenamento a um espaço de trabalho específico
Em default, uma credencial de armazenamento pode ser acessada 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 em qualquer workspace anexado ao metastore. Se o senhor usa o espaço de trabalho para isolar o acesso aos dados do usuário, talvez queira permitir o acesso a uma credencial de armazenamento somente a partir de um espaço de trabalho específico. Esse recurso é conhecido como workspace binding ou isolamento de credenciais de armazenamento. Para obter instruções, consulte (Opcional) Atribuir uma credencial de armazenamento a um espaço de trabalho específico.
Próximas etapas
-
visualizar, atualizar, excluir e conceder a outros usuários permissão 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 à Databricks.