Share via


Obter tokens Microsoft Entra ID (anteriormente Azure Active Directory) para principais de serviço

Importante

Esta seção descreve como obter manualmente tokens do Microsoft Entra ID (anteriormente Azure Ative Directory) para entidades de serviço.

As entidades de serviço gerenciado do Azure Databricks são gerenciadas diretamente no Azure Databricks. As entidades de serviço gerenciadas do Microsoft Entra ID são gerenciadas no Microsoft Entra ID, o que requer permissões adicionais. O Databricks recomenda que você use entidades de serviço gerenciado do Azure Databricks para a maioria dos casos de uso. No entanto, o Databricks recomenda que você use entidades de serviço gerenciado do Microsoft Entra ID nos casos em que você deve se autenticar com o Azure Databricks e outros recursos do Azure ao mesmo tempo.

Para criar uma entidade de serviço gerenciado do Azure Databricks em vez de uma entidade de serviço gerenciado do Microsoft Entra ID, consulte Gerenciar entidades de serviço.

O Databricks não recomenda que você crie tokens do Microsoft Entra ID (anteriormente Azure Ative Directory) para entidades de serviço do Microsoft Entra ID manualmente. Isso ocorre porque cada token de ID do Microsoft Entra é de curta duração, normalmente expirando dentro de uma hora. Após esse período, você deve gerar manualmente um token de ID do Microsoft Entra de substituição. Em vez disso, use uma das ferramentas participantes ou SDKs que implementam o padrão de autenticação unificada do cliente Databricks. Essas ferramentas e SDKs geram e substituem automaticamente tokens de ID do Microsoft Entra expirados para você, aproveitando os seguintes tipos de autenticação Databricks:

Se você não tiver uma entidade de serviço, poderá provisioná-la seguindo um destes conjuntos de instruções:

Este artigo descreve como uma entidade de serviço definida no Microsoft Entra ID também pode atuar como uma entidade na qual as políticas de autenticação e autorização podem ser aplicadas no Azure Databricks. Os principais de serviço nas áreas de trabalho do Azure Databricks podem ter um controlo de acesso detalhado diferente dos utilizadores normais (principais de utilizador).

Uma entidade de serviço atua como uma função de cliente e usa o fluxo de credenciais do cliente OAuth 2.0 para autorizar o acesso aos recursos do Azure Databricks.

Você pode gerenciar entidades de serviço no Databricks ou usando o procedimento a seguir no portal do Azure.

Você também pode usar a Biblioteca de Autenticação da Microsoft (MSAL) para obter programaticamente um token de acesso do Microsoft Entra ID para um usuário em vez de uma entidade de serviço. Consulte Obter tokens do Microsoft Entra ID (anteriormente Azure Ative Directory) para usuários usando o MSAL.

Provisionar uma entidade de serviço no portal do Azure

  1. Inicie sessão no portal do Azure.

    Nota

    O portal a ser usado é diferente dependendo se seu aplicativo Microsoft Entra ID (anteriormente Azure Ative Directory) é executado na nuvem pública do Azure ou em uma nuvem nacional ou soberana. Para obter mais informações, consulte Nuvens nacionais.

  2. Se você tiver acesso a vários locatários, assinaturas ou diretórios, clique no ícone Diretórios + assinaturas (diretório com filtro) no menu superior para alternar para o diretório no qual deseja provisionar a entidade de serviço.

  3. Em Pesquisar recursos, serviços e documentos, procure e selecione Microsoft Entra ID.

  4. Clique em + Adicionar e selecione Registro do aplicativo.

  5. Em Nome, insira um nome para o aplicativo.

  6. Na seção Tipos de conta suportados, selecione Contas somente neste diretório organizacional (Locatário único).

  7. Clique em Registar.

  8. Na página Visão geral da página do aplicativo, na seção Essenciais, copie os seguintes valores:

    • ID do aplicativo (cliente)
    • ID do diretório (locatário)

    Visão geral do aplicativo registrado do Azure

  9. Para gerar um segredo do cliente, em Gerenciar, clique em Certificados & segredos.

    Nota

    Você usa esse segredo de cliente para gerar tokens de ID do Microsoft Entra para autenticar entidades de serviço do Microsoft Entra ID com o Azure Databricks. Para determinar se uma ferramenta ou SDK do Azure Databricks pode usar tokens de ID do Microsoft Entra, consulte a documentação da ferramenta ou do SDK.

  10. Na guia Segredos do cliente, clique em Novo segredo do cliente.

    Novo segredo do cliente

  11. No painel Adicionar um segredo do cliente, para Descrição, insira uma descrição para o segredo do cliente.

  12. Em Expira, selecione um período de expiração para o segredo do cliente e clique em Adicionar.

  13. Copie e armazene o valor do segredo do cliente em um local seguro, pois esse segredo do cliente é a senha do seu aplicativo.

Provisionar uma entidade de serviço com a CLI do Azure

Consulte Criar uma entidade de serviço do Microsoft Entra ID (anteriormente Azure Ative Directory) com a CLI do Azure.

Obter um token de acesso do Microsoft Entra ID com a API REST da plataforma de identidade da Microsoft

Importante

Esta seção descreve como obter manualmente um token de ID do Microsoft Entra para uma entidade de serviço usando a API REST da plataforma de identidade da Microsoft.

O Databricks não recomenda que você crie tokens do Microsoft Entra ID (anteriormente Azure Ative Directory) para entidades de serviço do Microsoft Entra ID manualmente. Isso ocorre porque cada token de ID do Microsoft Entra é de curta duração, normalmente expirando dentro de uma hora. Após esse período, você deve gerar manualmente um token de ID do Microsoft Entra de substituição. Em vez disso, use uma das ferramentas participantes ou SDKs que implementam o padrão de autenticação unificada do cliente Databricks. Essas ferramentas e SDKs geram e substituem automaticamente tokens de ID do Microsoft Entra expirados para você, aproveitando os seguintes tipos de autenticação Databricks:

Para acessar a API REST do Databricks com a entidade de serviço, você obtém e usa um token de acesso de ID do Microsoft Entra para a entidade de serviço. Para obter mais informações, consulte Primeiro caso: solicitação de token de acesso com um segredo compartilhado.

Gorjeta

Você também pode usar a CLI do Azure para obter o token de acesso do Microsoft Entra ID. Consulte Obter um token de acesso de ID do Microsoft Entra com a CLI do Azure.

  1. Recolha as seguintes informações:

    Parâmetro Description
    Tenant ID O Directory (tenant) ID para o aplicativo relacionado registrado no Microsoft Entra ID.
    Client ID O Application (client) ID para o aplicativo relacionado registrado no Microsoft Entra ID.
    Client secret O Value segredo do cliente para o aplicativo relacionado registrado no Microsoft Entra ID.
  2. Use as informações anteriores junto com curl para obter o token de acesso Microsoft Entra ID (anteriormente Azure Ative Directory).

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=<client-secret>'
    

    Substituir:

    • <tenant-id> com o ID de locatário do aplicativo registrado.
    • <client-id> com o ID de cliente da aplicação registada.
    • <client-secret> com o valor de segredo do cliente do aplicativo registrado.

    Não altere o scope valor do parâmetro. Ele representa a ID programática do Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) junto com o escopo padrão (/.default, codificado por URL como %2f.default).

    Por exemplo:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    O token de acesso do access_token Microsoft Entra ID está no valor dentro da saída da chamada.

Obter um token de acesso do Microsoft Entra ID com a CLI do Azure

Importante

Esta seção descreve como obter manualmente um token de ID do Microsoft Entra para uma entidade de serviço usando a CLI do Azure.

O Databricks não recomenda que você crie tokens do Microsoft Entra ID (anteriormente Azure Ative Directory) para entidades de serviço do Microsoft Entra ID manualmente. Isso ocorre porque cada token de ID do Microsoft Entra é de curta duração, normalmente expirando dentro de uma hora. Após esse período, você deve gerar manualmente um token de ID do Microsoft Entra de substituição. Em vez disso, use uma das ferramentas participantes ou SDKs que implementam o padrão de autenticação unificada do cliente Databricks. Essas ferramentas e SDKs geram e substituem automaticamente tokens de ID do Microsoft Entra expirados para você, aproveitando os seguintes tipos de autenticação Databricks:

Para acessar a API REST do Databricks com a entidade de serviço, você obtém e usa um token de acesso de ID do Microsoft Entra para a entidade de serviço.

  1. Recolha as seguintes informações:

    Parâmetro Description
    Tenant ID O Directory (tenant) ID para o aplicativo relacionado registrado no Microsoft Entra ID.
    Client ID O Application (client) ID para o aplicativo relacionado registrado no Microsoft Entra ID.
    Client secret O Value segredo do cliente para o aplicativo relacionado registrado no Microsoft Entra ID.
  2. Obtenha a ID de assinatura do Azure correta para a entidade de serviço do Microsoft Entra ID, se ainda não souber essa ID, seguindo um destes procedimentos:

    • Na barra de navegação superior do seu espaço de trabalho do Azure Databricks, clique no seu nome de utilizador e, em seguida, clique em Portal do Azure. Na página de recursos do espaço de trabalho do Azure Databricks exibida, clique em Visão geral na barra lateral. Em seguida, procure o campo ID da assinatura, que contém a ID da assinatura.

    • Use a CLI do Azure para executar o comando az databricks workspace list, usando as --query opções e ou --output-o para restringir os resultados. Substitua adb-0000000000000000.0.azuredatabricks.net pelo nome da instância do espaço de trabalho, não incluindo o https://arquivo . Neste exemplo, o 00000000-0000-0000-0000-000000000000 depois /subscriptions/ na saída é o ID da assinatura.

      az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv
      
      # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
      

      Se a seguinte mensagem for exibida, você está conectado ao locatário errado: The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. Para entrar no locatário correto, você deve executar o az login comando novamente, usando a -t opção ou --tenant para especificar o ID de locatário correto.

      Você pode obter a ID do locatário para um espaço de trabalho do Azure Databricks executando o comando curl -v <per-workspace-URL>/aad/auth e procurando na saída < location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000, onde 00000000-0000-0000-0000-000000000000 é a ID do locatário. Consulte também Obter IDs de assinatura e locatário no portal do Azure.

      az login -t <tenant-id>
      
  3. Depois de ter a ID de locatário do Azure, a ID do cliente, o segredo do cliente e a ID de assinatura corretos para sua entidade de serviço do Microsoft Entra ID, entre no Azure usando a CLI do Azure para executar o comando az login. Use a --service-principal opção junto com a especificação dos valores para os parâmetros de Tenant ID (Directory (tenant) ID), Client ID (Application (client) ID) e Client secret (Value) para o aplicativo relacionado registrado no Microsoft Entra ID (anteriormente Azure Ative Directory).

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  4. Confirme que você está conectado à assinatura correta para sua entidade de serviço Microsoft Entra ID conectada. Para fazer isso, execute o comando az account set , usando a -s opção ou --subscription para especificar o ID de assinatura correto.

    az account set -s <subscription-id>
    
  5. Gere o token de acesso do Microsoft Entra ID para a entidade de serviço do Microsoft Entra ID conectada executando o comando az account get-access-token . Use a --resource opção para especificar a ID de recurso exclusiva para o serviço Azure Databricks, que é 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d. Você pode exibir apenas o valor do token do Microsoft Entra ID (anteriormente Azure Ative Directory) na saída do comando usando as --query opções e -o ou --output .

    az account get-access-token \
    --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \
    --query "accessToken" \
    -o tsv
    

Use o token de acesso Microsoft Entra ID da entidade de serviço para acessar a API REST do Databricks

Importante

Esta seção descreve como usar curl o token de acesso Microsoft Entra ID de uma entidade de serviço para acessar a API REST do Databricks.

Em vez de , você pode usar uma das ferramentas participantes ou SDKs que implementam o padrão de curlautenticação unificada do cliente Databricks. Essas ferramentas e SDKs também geram e substituem automaticamente tokens de ID do Microsoft Entra expirados para você, aproveitando os seguintes tipos de autenticação Databricks:

Uma entidade de serviço que é um usuário do Databricks pode se autenticar na API REST do Databricks com tokens de ID do Microsoft Entra.

Uma entidade de serviço também pode adicionar-se como administrador de espaço de trabalho a uma área de trabalho se tiver a função de Colaborador ou Proprietário no recurso de espaço de trabalho de destino no Azure. Se a entidade de serviço for um Colaborador ou Proprietário no espaço de trabalho de destino e você quiser adicioná-lo a um espaço de trabalho usando seu token de ID do Microsoft Entra, vá para Acesso à API no nível do espaço de trabalho para entidades de serviço que não são usuários do Azure Databricks.

Caso contrário, continue para o acesso à API para entidades de serviço que são usuários e administradores do Azure Databricks.

Acesso à API para entidades de serviço que são usuários e administradores do Azure Databricks

Para concluir este procedimento, você deve primeiro adicionar a entidade de serviço à conta ou espaço de trabalho do Azure Databricks. Você pode adicionar sua entidade de serviço diretamente à sua conta, sem conceder-lhe acesso ao espaço de trabalho, usando a API SCIM (Conta).

Você pode adicionar sua entidade de serviço a um espaço de trabalho usando o ponto de extremidade da API de Entidades de Serviço. Isso também adicionará a entidade de serviço à sua conta do Azure Databricks. Por exemplo:

Usando a CLI do Databricks versão 0.205 ou superior (recomendado):

Adicione a entidade de serviço:

databricks service-principals create --application-id 12a34b56-789c-0d12-e3fa-b456789c0123 --display-name "My Service Principal" -p <profile-name-that-references-calling-users-access-token>

Atualize os direitos do espaço de trabalho da entidade de serviço:

databricks service-principals patch 1234567890123456 --json @update-service-principal.json -p <profile-name-that-references-access-token>

update-service-principal.json:

{
  "Operations": [
    {
      "op": "add",
      "path": "entitlements",
      "value": {
        "value": "workspace-acccess",
        "value": "allow-cluster-create",
        "value": "databricks-sql-access"
      }
    }
  ],
  "schema": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ]
}

Consulte Autenticação para a CLI do Databricks.

Utilizando curl:

curl -X POST \
-H 'Authorization: Bearer <access-token>' \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/preview/scim/v2/ServicePrincipals \
-H 'Content-type: application/scim+json' \
-d @create-service-principal.json

create-service-principal.json:

{
  "displayName": "My Service Principal",
  "applicationId": "12a34b56-789c-0d12-e3fa-b456789c0123",
  "entitlements": [
    {
      "value": "allow-cluster-create"
    }
  ],
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
  ],
  "active": true
}

Vá para o acesso à API no nível do espaço de trabalho para entidades de serviço que não são usuários do Azure Databricks se uma das seguintes opções for verdadeira:

  • A API REST DO Azure Databricks que você deseja chamar requer acesso de administrador do espaço de trabalho e a entidade de serviço é membro do espaço de trabalho, mas atualmente não tem acesso de administrador ao espaço de trabalho.
  • A entidade de serviço ainda não foi adicionada ao espaço de trabalho de destino do Azure Databricks.
  1. Recolha as seguintes informações.

    Parâmetro Description
    Token de acesso do Microsoft Entra ID O token de acesso de ID do Microsoft Entra retornado da solicitação em Obter um token de acesso de ID do Microsoft Entra com a API REST da plataforma de identidade da Microsoft ou Obter um token de acesso de ID do Microsoft Entra com a CLI do Azure.
  2. Use o token de acesso do Microsoft Entra ID junto com curl para chamar a API REST do Databricks. Por exemplo:

    Usando a CLI do Databricks versão 0.205 ou superior (recomendado):

    databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
    

    Consulte Autenticação para a CLI do Databricks.

    Utilizando curl:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://<databricks-instance>/api/2.0/clusters/list
    

    Substituir:

    • <access-token> com o token de acesso Microsoft Entra ID.
    • <databricks-instance> com a URL por espaço de trabalho da sua implantação do Azure Databricks.
    • GET e /api/2.0/clusters/list com a operação HTTP apropriada e o ponto de extremidade para a API REST do Databricks de destino.

    Por exemplo:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
    

Acesso à API no nível do espaço de trabalho para entidades de serviço que não são usuários do Azure Databricks

Siga este procedimento se alguma das seguintes situações for verdadeira:

  • A API REST DO Azure Databricks que você deseja chamar requer acesso de administrador do espaço de trabalho e a entidade de serviço é membro do espaço de trabalho, mas atualmente não tem acesso de administrador ao espaço de trabalho.
  • A entidade de serviço ainda não foi adicionada ao espaço de trabalho de destino do Azure Databricks.

Requisitos:

  • A entidade de serviço requer a função de Colaborador ou Proprietário no recurso de espaço de trabalho de destino no Azure.
  1. Recolha as seguintes informações:

    Parâmetro Description
    ID de Inquilino do A ID de diretório (locatário) para o aplicativo relacionado registrado no Microsoft Entra ID em Provisionar uma entidade de serviço no portal do Azure.
    ID de Cliente A ID do aplicativo (cliente) para o aplicativo relacionado registrado no Microsoft Entra ID.
    Segredo do cliente O Valor do segredo do cliente para o aplicativo relacionado registrado no Microsoft Entra ID, que você criou em Provisionar uma entidade de serviço no portal do Azure.
    Token de acesso do Microsoft Entra ID O token de acesso de ID do Microsoft Entra retornado da solicitação em Obter um token de acesso de ID do Microsoft Entra com a API REST da plataforma de identidade da Microsoft ou Obter um token de acesso de ID do Microsoft Entra com a CLI do Azure.
    ID de Subscrição A ID (não o nome) da assinatura do Azure associada ao espaço de trabalho de destino do Azure Databricks. Para aceder a esta e às seguintes informações, consulte Recursos abertos. Para abrir o recurso de destino, você pode pesquisar no tipo de serviço Azure Databricks e qualquer outra informação no Azure que você conheça sobre o espaço de trabalho do Azure Databricks de destino.
    Nome do grupo de recursos O nome do grupo de recursos do Azure associado ao espaço de trabalho de destino do Azure Databricks.
    Nome da área de trabalho O nome no Azure do espaço de trabalho de destino do Azure Databricks.
  2. Use algumas das informações anteriores para curl obter um token de acesso de ponto de extremidade de gerenciamento do Microsoft Entra ID.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=<client-secret>'
    

    Substituir:

    • <tenant-id> com o ID de locatário do aplicativo registrado.
    • <client-id> com o ID de cliente da aplicação registada.
    • <client-secret> com o valor de segredo do cliente do aplicativo registrado.

    Não altere o resource valor do parâmetro. Ele representa o ponto de extremidade de gerenciamento do Microsoft Entra ID (https://management.core.windows.net/, codificado por URL como https%3A%2F%2Fmanagement.core.windows.net%2F).

    Por exemplo:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    O token de acesso ao ponto de extremidade de gerenciamento do Microsoft Entra ID está no access_token valor dentro da saída da chamada.

  3. Use o token de acesso ao ponto de extremidade de gerenciamento do Microsoft Entra ID junto com o restante das informações anteriores e curl para chamar a API REST do Databricks, por exemplo:

     curl -X GET \
     -H 'Authorization: Bearer <access-token>' \
     -H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
     -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
     https://<databricks-instance>/api/2.0/clusters/list
    

    Substituir:

    • <access-token> com o token de acesso Microsoft Entra ID.

      • <management-access-token> com o token de acesso ao ponto de extremidade de gerenciamento do Microsoft Entra ID.
      • <subscription-id> com a ID da assinatura associada ao espaço de trabalho de destino do Azure Databricks.
      • <resource-group-name> com o nome do grupo de recursos associado ao espaço de trabalho de destino do Azure Databricks.
      • <workspace-name> com o nome do espaço de trabalho de destino do Azure Databricks.
      • <databricks-instance> com a URL por espaço de trabalho da sua implantação do Azure Databricks.
      • GET e /api/2.0/clusters/list com a operação HTTP apropriada e o ponto de extremidade para a API REST do Databricks de destino.

      Por exemplo:

      curl -X GET \
      -H 'Authorization:Bearer <access-token>' \
      -H 'X-Databricks-Azure-SP-Management-Token: abC1dE...ghIj23kl' \
      -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/12a345...bcd6789e/resourceGroups/my-resource-group/providers/Microsoft.Databricks/workspaces/my-workspace' \
      https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
      

    Após a autenticação no espaço de trabalho, a entidade de serviço torna-se um administrador do espaço de trabalho do Azure Databricks e não precisa mais da função de Colaborador ou Proprietário para acessar o espaço de trabalho.