Gerenciar o acesso ao serviço externo cloud usando credenciais de serviço

Prévia

Este recurso está em visualização pública.

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 externos de cloud, como AWS Glue ou AWS Secrets Manager. Uma credencial de serviço em Unity Catalog encapsula uma credencial cloud 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 cloud que é usado como 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 cloud usando Unity Catalog.

Observação

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

Passo 1: criar uma 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 você já criou uma IAM role que oferece esse acesso, pode pular esta passo e ir direto para a passo 2: dar ao Databricks os detalhes da IAM role.

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

    A criação de funções é um processo de duas etapas. Neste passo, o senhor cria a função, adicionando uma política de relacionamento 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 em 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. A política usa o ARN do AWS da Databricks arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL. Se o senhor estiver usando Databricks on AWS GovCloud use o endereço Databricks on AWS GovCloud ARN arn:aws-us-gov:iam::044793339203:role/unity-catalog-prod-UCMasterRole-1QRFA8SGY15OJ.

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

      {
        "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"
            }
          }
        }]
      }
      
    3. Ignore a configuração da policy de permissões. Você voltará para adicioná-la em uma passo posterior.

    4. Salve a IAM role.

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

    Substitua os seguintes valores:

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

    {
      "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"
          }
        ]
    }
    

    Substitua os seguintes valores:

    • <AWS-GLUE-REGION>: A região do site AWS account que contém o catálogo AWS Glue. Esse valor mais sua ID AWS account constituem a ID do catálogo AWS Glue.

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

    Observação

    Se o senhor estiver usando o site AWS Lake Formation, também deverá conceder ao IAM role acesso ao recurso Lake Formation. Consulte https://docs.aws.amazon.com/lake-formation/latest/dg/hybrid-access-mode.html.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "GrantCatalogAccessToGlue",
          "Effect": "Allow",
          "Action": [
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:GetTable",
            "glue:GetTables",
            "glue:GetUserDefinedFunction",
            "glue:GetUserDefinedFunctions",
            "glue:BatchGetPartition"
          ],
          "Resource": [
            "arn:aws:glue:<AWS-GLUE-REGION>:<AWS-ACCOUNT-ID>*",
          ]
        },
        {
          "Action": [
            "sts:AssumeRole"
          ],
          "Resource": [
            "arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"
          ],
          "Effect": "Allow"
        }
      ]
    }
    
  3. Anexe a policy de IAM à IAM role.

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

passo 2: informar ao Databricks os detalhes da 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 seu cloud 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 view a ID externa a qualquer momento na página de detalhes da credencial de serviço. Consulte Exibir uma credencial de serviço.

  8. Clique em Concluído.

Etapa 3: atualizar a policy da 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 no passo 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:

    {
      "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>"
            }
          }
        }
      ]
    }
    

Política de imposição de função autoassumida

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 se autoconfie explicitamente 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.

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

Prévia

Este recurso está em visualização pública.

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 do cloud configura uma credencial de serviço usando uma credencial de produção cloud account e o senhor deseja garantir que os usuários do Databricks usem essa credencial para acessar um serviço externo cloud somente no workspace de produção.

Para obter mais informações sobre a vinculaçã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.

Observação

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óximos passos

Limitações

Aplicam-se as seguintes limitações:

  • O Databricks Runtime 15.4 LTS inclui apenas suporte a 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) exibe as credenciais de armazenamento e as credenciais de serviço, e INFORMATION_SCHEMA.STORAGE_CREDENTIAL_PRIVILEGES (obsoleto) exibe os privilégios que se aplicam às credenciais de armazenamento e às credenciais de serviço. Esse é um comportamento de visualização incorreto que será corrigido e você não deve depender dele para continuar. Em vez disso, o senhor deve usar INFORMATION_SCHEMA.CREDENTIALS e INFORMATION_SCHEMA.CREDENTIAL_PRIVILEGES para as credenciais de armazenamento e de serviço.