Compartilhar via


Use a federação Open ID Connect (OIDC) para habilitar a autenticação para compartilhamentos do Delta Sharing (compartilhamento aberto)

Esta página explica como os provedores de dados no Azure Databricks podem federar a autenticação a um provedor de identidade (IdP) para governar o acesso aos compartilhamentos do Delta Sharing criados no Azure Databricks. Esse fluxo de autenticação usa a federação OIDC, permitindo JWTs (Tokens Web JSON) emitidos pelo IdP do destinatário como tokens OAuth de curta duração autenticados pelo Azure Databricks. Esse método de autenticação de compartilhamento Databricks-to-open foi projetado para destinatários que não têm acesso a um workspace do Databricks habilitado para Catálogo do Unity.

Na Federação OIDC, o IdP do destinatário é responsável pela emissão de tokens JWT e pela imposição de políticas de segurança, como a MFA (Autenticação Multifator). Da mesma forma, o tempo de vida do token JWT é regido pelo IdP do destinatário. O Databricks não gera nem gerencia esses tokens. Ele federa apenas a autenticação para o IdP do destinatário e valida o JWT em relação à política de federação configurada do destinatário. Os provedores de dados também podem optar por federar a autenticação para seu próprio IdP ao compartilhar dados internamente com outros usuários ou departamentos dentro de sua organização.

A federação OIDC é uma alternativa ao uso de tokens de portador emitidos pelo Azure Databricks para conectar destinatários não Databricks a provedores. Ele permite o controle de acesso refinado, dá suporte à MFA e reduz os riscos de segurança eliminando a necessidade de os destinatários gerenciarem e protegerem credenciais compartilhadas. Para obter informações sobre como usar tokens de portador para gerenciar a autenticação em compartilhamentos, consulte Criar um objeto do destinatário para usuários que não são do Databricks usando tokens de portador (compartilhamento aberto).

Como funciona a federação OIDC no Delta Sharing?

  1. Quando o provedor de dados cria o destinatário no Compartilhamento Delta no Azure Databricks, ele configura uma política de federação de token OIDC que especifica a URL do emissor do IdP do destinatário, como a ID do Microsoft Entra ou o Okta, e define o usuário destinatário, grupo, entidade de serviço ou aplicativo OAuth que deve ter acesso ao compartilhamento.

  2. O Azure Databricks gera uma URL do portal da Web de perfil OIDC, com base na política, e o provedor compartilha essa URL com o destinatário.

    O usuário final copia a URL do ponto de extremidade ou baixa o arquivo de perfil, dependendo de sua plataforma preferida, e fornece a URL ou o arquivo de perfil para a plataforma na qual consultará os dados compartilhados. Esse arquivo de perfil compartilhado baixado da Web do portal OIDC do Databricks não contém informações confidenciais.

    • Para autenticação U2M (usuário para máquina), o destinatário insere o ponto de extremidade do portal da Web de perfil OIDC em seu aplicativo U2M.
    • Para autenticação M2M (máquina a máquina), o desenvolvedor do aplicativo destinatário baixa o arquivo de perfil e faz referência a ele no aplicativo cliente do destinatário.
  3. Quando o destinatário tenta acessar dados compartilhados usando sua plataforma preferencial, a autenticação é federada para seu IdP.

    O Databricks não gera nem gerencia tokens ou credenciais. Em vez disso, o IdP do destinatário gera um JWT que contém declarações de identidade. O tempo de vida desse token de curta duração é imposto pelo IdP do destinatário. Em seguida, o serviço Delta Sharing valida o JWT em relação à política do destinatário para garantir que ele corresponda às declarações esperadas, incluindo emissor, audiência e assunto. Se a validação for bem-sucedida, a solicitação será autenticada e o acesso será concedido com base nas permissões do Catálogo do Unity.

Antes de começar

Para criar um destinatário, você deve atender aos seguintes requisitos:

  • É necessário ser um administrador de metastore ou ter o privilégio CREATE RECIPIENT para o metastore do Catálogo do Unity em que os dados que você deseja compartilhar estão registrados.
  • Você deve criar o destinatário usando um workspace do Azure Databricks que tenha esse metastore do Catálogo do Unity anexado.
  • Se você usar um bloco de anotações do Databricks para criar o destinatário, seu ambiente deve usar o Databricks Runtime 11.3 LTS ou superior e o modo de acesso padrão ou dedicado (anteriormente chamados de modos de acesso compartilhado e de usuário único).

Qual provedor de identidade usar?

Você pode usar a federação OIDC com um provedor de identidade interno ou externo, dependendo do cenário de compartilhamento:

  • Provedor de Identidade Interno (Provider-Managed)

    • Isso é útil para compartilhar dados em grandes organizações em que diferentes departamentos não têm acesso direto ao Databricks, mas compartilham o mesmo IdP.
    • Essa abordagem permite que o provedor gerencie o acesso em nome do destinatário.
    • As políticas de segurança, como MFA e controle de acesso baseado em função, são impostas pelo IdP do provedor.
  • Provedor de Identidade Externa (Recipient-Managed)

    • O provedor configura a política de compartilhamento para confiar no IdP do destinatário.
    • A organização do destinatário mantém controle total sobre quem pode acessar os dados compartilhados.
    • As políticas de segurança, como autenticação multifatorial (MFA) e controle de acesso baseado em função, são aplicadas pelo IdP do destinatário.

Cenário de autenticação U2M ou M2M

O Secure Open Sharing with OIDC Token Federation dá suporte aos fluxos de autenticação U2M (Usuário para Máquina) e M2M (Máquina para Máquina), permitindo uma ampla gama de cenários seguros de compartilhamento de dados.

Autenticação U2M (usuário para máquina)

Um usuário da organização de destinatários autentica usando seu IdP. Se a MFA estiver configurada, ela será imposta durante o logon.

Depois de autenticados, os usuários podem acessar dados compartilhados usando ferramentas como o Power BI ou o Tableau. O provedor de dados pode definir políticas de acesso que restringem o acesso a dados a usuários ou grupos específicos dentro da organização do destinatário, garantindo um controle preciso sobre quem pode acessar recursos compartilhados. O aplicativo cliente U2M (por exemplo, Power BI) usa o fluxo de concessão de código de autorização OAuth para obter tokens de acesso do IdP.

Autenticação M2M (máquina a máquina)

O M2M é ideal para cargas de trabalho automatizadas, como trabalhos noturnos ou serviços em segundo plano, que exigem acesso sem interação do usuário. A organização do destinatário registra um Principal de Serviço em seu IdP. Essa identidade de serviço permite que aplicativos ou scripts acessem recursos com segurança programaticamente. Nenhum segredo ou credenciais são trocados entre o Databricks, o provedor ou o destinatário. Todo o gerenciamento de segredos permanece interno para cada organização. Clientes M2M, como o Cliente de Compartilhamento Delta do Python ou o Cliente de Compartilhamento Delta do Spark, usam o fluxo de Concessão de Credenciais do Cliente OAuth para recuperar tokens de acesso do IdP.

Criar um destinatário que usa uma política de federação OIDC

Etapa 1. Criar um destinatário de federação OIDC aberto

Para criar um destinatário que se autentique usando o OIDC:

  1. No workspace do Azure Databricks, clique no ícone Dados.Catálogo.

  2. Na parte superior do painel Catálogo, clique no ícone de engrenagem e selecione Compartilhamento Delta.

    Como alternativa, na página Acesso rápido, clique no botão Compartilhamento Delta >.

  3. Na guia Compartilhado por mim, clique em Novo destinatário.

  4. Insira o nome do destinatário.

  5. Para o tipo destinatário, selecione Abrir.

  6. Escolha Federação OIDC como o método de autenticação aberto.

  7. Clique em Criar.

  8. (Opcional) Criar propriedades do Destinatário personalizadas. Na guia Detalhes do destinatário, clique em Editar propriedades > +Adicionar propriedade. Em seguida, adicione um nome de propriedade (Chave) e Valor. Para obter detalhes, consulte Gerenciar propriedades do destinatário.

Etapa 2. Criar política de federação do OIDC

Antes de criar a política, colete as informações necessárias do destinatário sobre seu IdP, incluindo os usuários, grupos, entidades de serviço ou aplicativos OAuth que devem ter acesso ao compartilhamento. Se você estiver usando seu próprio IdP (interno) para compartilhamento interno, recupere essas informações do seu próprio sistema de identidade.

Primeiro, você deve solicitar informações do destinatário sobre seu IdP e os usuários, grupos, entidades de serviço ou aplicativos OAuth que devem ter acesso ao compartilhamento. Em seguida, você fornece essas informações no Azure Databricks ao criar o destinatário.

Na página de edição do destinatário, em políticas de federação OIDC, clique em Adicionar política.

Caixa de diálogo de configuração de política OIDC

Insira o seguinte:

  • Nome da política: nome compreensível para a política.

  • URL do emissor: a URL HTTPS do IdP emitindo o token JWT.

  • Declaração de assunto: a declaração no JWT que identifica o tipo de identidade de autenticação. Na ID do Microsoft Entra, você pode configurar os seguintes valores:

    • oid (ID do objeto): selecione se um usuário pretende acessar os dados por meio de um aplicativo U2M, como o PowerBI.
    • groups: selecione se um grupo de usuários se destina a acessar os dados por meio de um aplicativo U2M, como o PowerBI.
    • azp: selecione se um aplicativo OAuth destina-se a acessar os dados por meio de um aplicativo M2M, como o Cliente de Compartilhamento Delta do Python ou o Cliente de Compartilhamento Delta do Spark.

    Em alguns outros IdPs, declarações como sub ou outras podem ser usadas. Consulte a documentação do IdP para determinar a declaração correta para seu caso de uso.

  • Assunto: o usuário, grupo ou aplicativo específico autorizado a acessar o compartilhamento.

  • Destinatários: um ou mais identificadores de recursos que o JWT deve corresponder. Um token será considerado válido se sua declaração aud corresponder a qualquer um dos públicos listados.

Se você não tiver certeza sobre os valores a serem usados (emissor, declaração de assunto, assunto, audiência), consulte o exemplo a seguir. Você precisa determinar os detalhes da Política de Federação do OIDC antes de criá-la.

Se você estiver usando um IdP gerenciado pelo destinatário externo, solicite as seguintes informações compartilhadas pelo destinatário, usando um canal seguro. Se você estiver usando seu IdP gerenciado pelo seu provedor, essas informações vêm do seu próprio IdP com base nas identidades com as quais você compartilha.

Exemplo de U2M quando o IdP é Entra ID:

Estas são exemplos de configurações para compartilhamento com um usuário específico com ID de objeto 11111111-2222-3333-4444-555555555555 no locatário do Entra ID aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee.

  • Emissor: https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • declaração de assunto: oid (ID do objeto)
  • Assunto: 11111111-2222-3333-4444-555555555555
  • Público-alvo: 64978f70-f6a6-4204-a29e-87d74bfea138 (essa é a ID do cliente do aplicativo multilocatário registrado pelo Databricks no Entra ID)

Estas são exemplos de configurações para compartilhamento com um grupo específico com ID de objeto 66666666-2222-3333-4444-555555555555 no locatário do Entra ID aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee.

  • Emissor: https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • declaração de assunto: groups
  • Assunto: 66666666-2222-3333-4444-555555555555
  • Público-alvo: 64978f70-f6a6-4204-a29e-87d74bfea138 (essa é a ID do cliente do aplicativo multilocatário registrado pelo Databricks no Entra ID)

Observação

Para aplicativos U2M como o Power BI e o Tableau, o público-alvo deve ser a ID do aplicativo multilocatário registrada pelo Databricks no Entra ID, que é 64978f70-f6a6-4204-a29e-87d74bfea138.

Para obter mais informações sobre os aplicativos U2M e as políticas de federação do OIDC, veja Receber compartilhamentos do Compartilhamento Delta usando a federação do OIDC (Open ID Connect) em um fluxo de usuário para computador (compartilhamento aberto).

Exemplo de M2M quando o IdP é a ID do Entra:

Para um aplicativo OAuth M2M com ID 11111111-2222-3333-4444-555555555555 de Aplicativo (cliente) no tenant Entra ID aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee:

  • Emissor: https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • Declaração de assunto: azp
  • assunto: 11111111-2222-3333-4444-555555555555 (Esta é a ID do aplicativo cliente, que é a ID do cliente do aplicativo OAuth registrado e pode ser encontrada no portal Entra ID do destinatário)
  • Público-alvo: 66666666-2222-3333-4444-555555555555 (Pode ser qualquer identificador de público válido definido pelo destinatário, como a ID do cliente do aplicativo OAuth registrado.) Para obter mais informações sobre aplicativos M2M e suas políticas de Federação OIDC, consulte Receive Delta Sharing shares using a Python client and Open ID Connect (OIDC) federation in a machine-to-machine flow (open sharing).

Etapa 3. Conceder ao destinatário acesso a um compartilhamento

Depois de criar o destinatário e criar compartilhamentos, você poderá conceder ao destinatário acesso a esses compartilhamentos.

Para conceder acesso de compartilhamento aos destinatários, você pode usar o Explorador de catálogos, a CLI do Catálogo do Unity do Databricks ou o comando GRANT ON SHARE SQL em um Notebook do Azure Databricks ou no editor de consultas SQL do Databricks.

Permissões necessárias: uma das seguintes:

  • Administrador de metastore.
  • Permissões delegadas ou de propriedade no compartilhamento e nos objetos destinatários ((USE SHARE + SET SHARE PERMISSION) ou proprietário do compartilhamento) E (USE RECIPIENT ou proprietário do destinatário).

Para obter instruções, veja Gerenciar o acesso aos compartilhamentos de dados do Delta Sharing (para provedores).

Fluxo de trabalho do destinatário

Para saber mais sobre como os destinatários autenticam e acessam compartilhamentos usando a federação de token OIDC, confira: