Pular para o conteúdo principal

gerenciar o acesso ao serviço de nuvem externo usando credenciais de serviço

Este artigo descreve como criar um objeto de credencial de serviço em Unity Catalog que permite que o senhor controle o acesso de Databricks a serviços de nuvem externos, como AWS Glue ou AWS Secrets Manager. Uma credencial de serviço em Unity Catalog encapsula uma credencial de nuvem de longo prazo que concede acesso a esse serviço.

As credenciais de serviço não se destinam a controlar o acesso ao armazenamento em nuvem que é usado como um local de armazenamento gerenciar Unity Catalog ou local de armazenamento externo. Para esses casos de uso, use uma credencial de armazenamento. Veja como gerenciar o acesso ao armazenamento em nuvem usando Unity Catalog.

nota

As credenciais de serviço são a alternativa Unity Catalog ao perfil de instância, com a vantagem de que o acesso não está vinculado a um recurso compute específico, mas sim a usuários, grupos ou entidades de serviço.

Para criar uma credencial de serviço para acesso ao serviço AWS, o senhor cria um IAM role que autoriza o acesso ao serviço e faz referência a esse IAM role na definição da credencial de serviço.

Antes de começar

Antes de criar uma credencial de serviço, o senhor deve atender aos seguintes requisitos:

No Databricks:

  • Um workspace do Databricks ativado para o Unity Catalog.
  • CREATE SERVICE CREDENTIAL privilégio no metastore Unity Catalog anexado ao workspace. Os administradores de conta e os administradores de metastore têm esse privilégio em default. Se o seu workspace foi ativado automaticamente para Unity Catalog, os administradores do workspace também têm esse privilégio.

Na sua conta da AWS:

  • Um serviço AWS na mesma região que o espaço de trabalho do qual o senhor deseja acessar os dados.
  • A capacidade de criar IAM roles.

Criar uma credencial de serviço que faça referência a um site AWS IAM role

Esta seção descreve como:

  • Crie um IAM role que atenda aos requisitos do Databricks para acessar um serviço AWS.
  • Como criar um objeto securizável de credencial de serviço no Unity Catalog que pode ser usado para acessar o serviço AWS a partir do Databricks.

Etapa 1: Criar um IAM role

Em AWS, crie um IAM role que dê acesso ao serviço que o senhor deseja que seus usuários acessem. Esse IAM role deve ser definido no mesmo account que o serviço.

dica

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.

  1. Crie um IAM role que permitirá o acesso ao serviço.

    A criação de funções é um processo de duas etapas. Nesta etapa, o usuário cria a função, adicionando uma política de relação de confiança temporária e um ID externo de espaço reservado que será modificado após a criação da credencial de serviço no Databricks.

    Você deve modificar a política de confiança depois de criar a função, pois sua função deve ser presunçosa (ou seja, deve ser configurada para confiar em si mesma). Portanto, 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. Para obter informações sobre a política de imposição de função autônoma do site Databricks, consulte Política de imposição de função autônoma.

    Para criar a política, você deve usar uma ID externa de placeholder.

    1. Crie a IAM role com uma policy de confiança personalizada .

    2. No campo Policy de confiança personalizada , cole o JSON da policy a seguir.

      Essa política estabelece uma relação de confiança entreaccount para que Unity Catalog possa assumir a função de acessar o serviço em nome dos usuários de Databricks. Isso é especificado pelo ARN na seção Principal. É um valor estático que faz referência a uma função criada pela Databricks. Observe que a política é ligeiramente diferente se o senhor usar Databricks on AWS GovCloud ou AWS GovCloud DOD.

      A política define a ID externa como 0000 como espaço reservado. O senhor atualiza isso para a ID externa da sua credencial de serviço em uma etapa posterior.

JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
  1. Ignore a configuração da policy de permissões. Você voltará para adicioná-la em uma passo posterior.

  2. Salve a IAM role.

  3. Crie uma política IAM no mesmo account que o serviço.

    Aqui estão dois exemplos de políticas que você pode usar como diretrizes. Um exemplo de política é para uma credencial de serviço que se conecta ao AWS Glue. O outro faz referência ao AWS Secrets Manager. As ações e os recursos reais que o senhor adiciona dependem do serviço ao qual está se conectando e do nível de acesso necessário. Consulte a documentação do AWS IAM para seu serviço.

    A ação sts:AssumeRole é a mesma, independentemente do serviço.

Replace the following values:

  • <AWS-ACCOUNT-ID>: The Account ID of your AWS account (not your Databricks account).

  • <AWS-IAM-ROLE-NAME>: The name of the AWS IAM role that you created in the previous step.

JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue"],
"Resource": ["arn:aws:secretsmanager:us-west-2:111122223333:secret:aes128-1a2b3c"],
"Effect": "Allow"
},
{
"Action": ["sts:AssumeRole"],
"Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"],
"Effect": "Allow"
}
]
}
  1. Anexe a policy de IAM à IAM role.

    Na tab Permissão da função, anexe a IAM Policy que você acabou de criar.

Etapa 2: Forneça a Databricks os detalhes de IAM role

Permissões necessárias : O privilégio CREATE SERVICE CREDENTIAL. As funções de administrador do metastore e administrador do account incluem esse privilégio. Os administradores de espaço de trabalho no espaço de trabalho que foram ativados para Unity Catalog automaticamente também têm esse privilégio.

  1. No Databricks, faça login em um workspace vinculado ao metastore.

  2. Clique em Ícone de catálogo Catálogo .

  3. Na página Quick access (Acesso rápido ), clique no botão External data (Dados externos) > , acesse Credentials (Credenciais ) tab e selecione Create credential (Criar credencial ).

  4. Selecione Service Credential (Credencial de serviço ).

  5. Digite um nome de credencial , a função IAM ARN que autoriza Unity Catalog a acessar o serviço em sua nuvem tenant e um comentário opcional.

  6. Clique em Criar .

  7. Na caixa de diálogo Credencial de serviço criada , copie a ID externa .

    O senhor também pode acessar view a ID externa a qualquer momento na página de detalhes da credencial de serviço. Ver visualizar uma credencial de serviço.

  8. Clique em Concluído .

Etapa 3: Atualizar a política do site IAM role

No AWS, modifique a política de relacionamento de confiança para adicionar o ID externo da credencial de serviço e torná-la autônoma.

  1. Retorne à sua IAM role salva e vá para a tab Relações de confiança .

  2. 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 declaração "sts:AssumeRole", atualize o ID externo do espaço reservado para o ID externo da credencial de serviço que o senhor copiou na etapa anterior.

    "sts:ExternalId": "<SERVICE-CREDENTIAL-EXTERNAL-ID>"

    Sua política agora deve ser parecida com a seguinte, com o texto de substituição atualizado para usar os valores de ID externo da credencial de serviço, account ID e IAM role:

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": [
    "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
    "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
    ]
    },
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": "<SERVICE-CREDENTIAL-EXTERNAL-ID>"
    }
    }
    }
    ]
    }

Etapa 4: Validar a credencial do serviço

Depois que o senhor tiver feito as alterações na política de confiança IAM role na Etapa 3: Atualizar a política IAM role, verifique se o IAM role está configurado corretamente para ser usado como credencial de serviço:

  1. No Databricks, faça login em um workspace vinculado ao metastore.
  2. Clique em Ícone de catálogo Catálogo .
  3. Na página Quick access (Acesso rápido ), clique no botão External Data > (Dados externos) e vá para Credentials (Credenciais ) tab.
  4. Selecione a credencial de serviço que o senhor deseja validar.
  5. Clique Botão &quot;Validar configuração&quot;.
  6. Se alguma das verificações falhar, retorne à Etapa 3: Atualizar a política do IAM role e revise a política de confiança do IAM rolepara configurá-la corretamente.

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 confie em si mesma para chamadas STS:AssumeRole. Como resultado, o site Databricks exige que a função AWS IAM para credenciais de serviço seja autônoma e, em breve, proibirá credenciais de serviço não autônomas. Para obter detalhes, consulte esta postagem no blog da comunidade.

Databricks começará a proibir a criação de credenciais de serviço com função não autônoma AWS IAM em 20 de setembro de 2024 . As credenciais de serviço existentes com função não autônoma IAM continuarão a funcionar, mas o senhor não poderá criar novas credenciais de serviço usando essas funções.

Em 20 de janeiro de 2025 , o site Databricks começará a bloquear o uso de credenciais de serviço existentes com a função IAM não autônoma. Isso pode potencialmente interromper cargas de trabalho e trabalhos que são executados usando credenciais não autônomas.

Para verificar se uma AWS IAM role para uma credencial de serviço é autônoma, siga as instruções na Etapa 4: Validar a credencial de serviço. Se a verificação do Self Assume Role falhar, volte à Etapa 3: Atualizar a política do IAM role e reconfigure a política de confiança do IAM rolepara confiar em si mesmo.

(Opcional) Atribuir uma credencial de serviço a um espaço de trabalho específico

Em default, uma credencial de serviço pode ser acessada de todos os espaços de trabalho no metastore. Isso significa que, se um usuário tiver recebido um privilégio nessa credencial de serviço, ele poderá exercer esse privilégio em qualquer workspace anexado ao metastore. Se o senhor usar o espaço de trabalho para isolar o acesso aos dados do usuário, talvez queira permitir o acesso a uma credencial de serviço somente a partir de um espaço de trabalho específico. Esse recurso é conhecido como workspace binding ou isolamento de credenciais de serviço.

Um caso de uso típico para vincular uma credencial de serviço a um espaço de trabalho específico é o cenário em que um administrador de nuvem configura uma credencial de serviço usando uma credencial de nuvem de produção account e o senhor deseja garantir que os usuários de Databricks usem essa credencial para acessar um serviço de nuvem externo somente na produção workspace.

Para obter mais informações sobre a associação workspace, consulte (Opcional) Atribuir uma credencial de armazenamento a um espaço de trabalho específico e Limitar o acesso ao catálogo a um espaço de trabalho específico.

Vincular uma credencial de serviço a um ou mais espaços de trabalho

Para atribuir uma credencial de serviço a um espaço de trabalho específico, use o Catalog Explorer.

Permissões necessárias : Administrador do Metastore ou proprietário da credencial de serviço.

nota

Os administradores do metastore podem ver todas as credenciais de serviço em um metastore usando o Catalog Explorer, e os proprietários de credenciais de serviço podem ver todas as credenciais de serviço que possuem em um metastore, independentemente de a credencial de serviço estar atribuída ao site atual workspace. As credenciais de serviço que não estão atribuídas ao site workspace aparecem em cinza.

  1. Efetue login em um workspace vinculado ao metastore.

  2. Na barra lateral, clique em Ícone de catálogo Catálogo .

  3. Na página de acesso rápido , clique no botão External data > e vá para Credentials tab.

  4. Selecione a credencial de serviço e acesse o espaço de trabalho tab.

  5. Na guia Workspaces , desmarque a caixa de seleção Todos os workspaces têm acesso .

    Se sua credencial de serviço já estiver vinculada a um ou mais espaços de trabalho, essa caixa de seleção já estará desmarcada.

  6. Clique em Atribuir a workspaces e digite ou localize os workspaces que deseja atribuir.

Para revogar o acesso, vá para a tab Workspaces , selecione o workspace e clique em Revogar . Para permitir o acesso de todos os workspaces, marque a caixa de seleção Todos os workspaces têm acesso .

Próximas etapas

Limitações

Aplicam-se as seguintes limitações:

  • Databricks Runtime As versões 16.1 e abaixo suportam apenas Python.

  • Até que o serverless compute seja atualizado com o Databricks Runtime 16.2, ele será compatível apenas com o Python.

  • SQL não são suportados.

  • Alguns eventos de auditoria para ações executadas em credenciais de serviço não aparecerão na tabela system.access.audit. As informações de auditoria sobre quem criou, excluiu, atualizou, leu, listou ou usou uma credencial de serviço estarão disponíveis. Consulte a referência da tabela do sistema Audit log.

  • Durante a visualização das credenciais de serviço, INFORMATION_SCHEMA.STORAGE_CREDENTIALS (obsoleto) exibia as credenciais de armazenamento e as credenciais de serviço, e INFORMATION_SCHEMA.STORAGE_CREDENTIAL_PRIVILEGES (obsoleto) exibia privilégios que se aplicavam tanto às credenciais de armazenamento quanto às credenciais de serviço. Isso não é mais o caso. Em vez disso, o senhor deve usar INFORMATION_SCHEMA.CREDENTIALS e INFORMATION_SCHEMA.CREDENTIAL_PRIVILEGES para as credenciais de armazenamento e de serviço.