Compartir a través de


Recibir recursos compartidos de Delta Sharing mediante un cliente de Python y una federación de Open ID Connect (OIDC) en un flujo de máquina a máquina (uso compartido abierto)

En esta página se describe cómo los destinatarios de datos pueden usar un cliente de Python registrado en su propio proveedor de identidades (IdP) para establecer el acceso a los recursos compartidos de delta sharing creados en Databricks. Este flujo de concesión de credenciales de cliente de OAuth de "máquina a máquina" (M2M) se usa normalmente en escenarios en los que una aplicación, como un trabajo nocturno que se ejecuta en una máquina virtual, accede a los datos de forma autónoma. Este flujo de autenticación usa la federación de OIDC, lo que permite usar tokens web JSON (JWT) emitidos por el IdP del destinatario como tokens de OAuth de corta duración autenticados por Databricks. Este flujo de autenticación de uso compartido de Databricks a abierto es para destinatarios que no tienen acceso a un área de trabajo de Databricks habilitado para Unity Catalog.

La federación abierta de OIDC es una alternativa al uso de tokens portadores emitidos por Databricks de larga duración para conectar destinatarios externos a Databricks con proveedores. En el flujo de concesión de credenciales de cliente de OAuth, una aplicación de OAuth se registra como entidad de servicio (SP) en el IdP del destinatario. No se comparten secretos o credenciales de larga duración entre Databricks, el proveedor y el destinatario. Para obtener información sobre cómo usar tokens portadores para gestionar la autenticación en recursos compartidos, consulte Crear un objeto destinatario para usuarios que no son de Databricks utilizando tokens portadores (compartición abierta).

Este artículo está destinado a destinatarios. Para obtener información sobre cómo los proveedores pueden habilitar la federación de OIDC para los destinatarios en Azure Databricks, consulte Usar la federación de Open ID Connect (OIDC) para habilitar la autenticación en Delta Sharing (uso compartido abierto). Para obtener información sobre el flujo de "usuario a máquina" (U2M), consulte Recibir recursos compartidos de Delta Sharing mediante la federación de Open ID Connect (OIDC) en un flujo de usuario a máquina (compartición abierta).

Registro de una aplicación en el IdP

Para poder usar la federación de OIDC para conceder a la aplicación cliente acceso a recursos compartidos de Delta Sharing, debe registrar una aplicación de OAuth en el IdP. En esta sección se describe cómo registrar una aplicación de OAuth en microsoft Entra ID. Para ver otros IDP, consulte su documentación.

Registro de una aplicación en el identificador de Microsoft Entra

Estas instrucciones están pensadas como guía general y no se garantiza que se conserven up-to-date. Para obtener instrucciones detalladas sobre el registro de aplicaciones, consulte este inicio rápido de Microsoft.

  1. Inicie sesión en el Centro de administración de Microsoft Entra como al menos un desarrollador de aplicaciones.
  2. Vaya a Registros de aplicaciones y cree un nuevo registro sin una dirección URL de redireccionamiento.
  3. Vaya a Certificados y secretos > Crear un secreto para la aplicación.
  4. Copie el valor del secreto y almacénelo de forma segura.
  5. En la página Información general de registros de aplicaciones >, copie el ID de la aplicación (cliente).
  6. Modifique la aplicación para que sea una aplicación V2 actualizando el manifiesto:
    1. En la sección Administrar de la aplicación, seleccione Manifiesto.
    2. En el editor, establezca accessTokenAcceptedVersion en 2.
    3. Guarde los cambios.

Envío de información necesaria al proveedor de datos de Azure Databricks

Si, como destinatario, use el identificador de Entra de Microsoft, puede obtener los campos requeridos por el proveedor siguiendo estas instrucciones. Consulte siempre la documentación de Microsoft Entra ID para obtener las instrucciones más actualizadas.

  • Dirección URL del emisor: https://login.microsoftonline.com/{tenantId}/v2.0, reemplazando {tenantId} por la identificación de inquilino de Entra. Si no conoce el identificador de inquilino, consulte la documentación de Microsoft Entra ID.

  • Reclamación de sujeto: hace referencia al campo de la carga útil de JWT que identifica a la entidad que accede a los datos. El campo específico usado depende del proveedor de identidades (IdP) y de los casos de uso. Por ejemplo, para las aplicaciones M2M en Microsoft Entra ID, la reclamación de sujeto es azp, que representa el identificador de cliente de la aplicación autorizada para utilizar el token. Para obtener más información, consulte la referencia de afirmaciones del token de acceso de Microsoft Entra ID.

  • Asunto: hace referencia al identificador único de la aplicación OAuth registrada en el proveedor de identidades (IdP) del destinatario.
    Por ejemplo, en el identificador de Entra de Microsoft, este es el identificador de aplicación (cliente). Si no ha copiado el identificador de cliente durante el registro, puede recuperarlo siguiendo los pasos específicos del IdP. Para Microsoft Entra ID, siga estos pasos:

    1. Vaya a Registros de aplicaciones en el Centro de administración de Microsoft Entra.
    2. Seleccione la aplicación OAuth registrada.
    3. Busque el identificador de aplicación (cliente) en la página Información general.

    Para otros IdPs, consulte su documentación para obtener el identificador equivalente.

  • Público: para la autenticación de máquina a Azure Databricks, normalmente se utiliza el identificador del recurso clientId, pero puede especificar cualquier otro identificador de recurso válido.

    Debería haber copiado esto en el paso anterior. Si no es así, vaya al Centro de administración de Microsoft Entra, busque Registros de aplicaciones, seleccione la aplicación registrada y busque la Identificación de aplicación (cliente) en la página de información general. También puede usar otro identificador de recurso.

Comparta el emisor, la reclamación de asunto, el tema y la audiencia con el proveedor.

Configuración de la aplicación para usar el archivo de perfil de OAuth compartido por el proveedor de Databricks

Para configurar la aplicación para acceder a los recursos compartidos de Delta Sharing desde el proveedor:

  1. Vaya a la dirección URL del portal de perfiles de OIDC que el proveedor de Databricks ha compartido con usted.

    Solicite la dirección URL si aún no la ha recibido.

  2. En la página del portal, seleccione el mosaico M2M y, en Para OAuth, haga clic en Descargar archivo.

  3. Modifique el archivo JSON de oauth_config.share descargado para agregar su clientId, clientSecrety scope.

    Debe haber copiado el identificador de cliente y el secreto de cliente al registrar la aplicación. No puedes recuperar el secreto del cliente nuevamente. Para recuperar el identificador de cliente, consulte las instrucciones de la sección anterior.

    Si decide usar la aplicación {clientId} como público, el ámbito debe ser {clientId}/.default. Por ejemplo, si la audiencia es 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6, el ámbito debe ser 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default.

    Perfil de ejemplo:

    {
      "shareCredentialsVersion": 2,
      "endpoint": "https://oregon.cloud.databricks.com/api/2.0/delta-sharing/metastores/11a11aaa-11aa-11a12-11aa-111a1aa11111/recipients/a11da11aa1-a1a1-11a1-a11a-1111a11111aa",
      "tokenEndpoint": "https://login.microsoftonline.com/a111a111-1111-1aaa-1aa1-1aa1111aa1/oauth2/v2.0/token",
      "type": "oauth_client_credentials",
      "clientId": "[REPLACE_WITH_YOUR_CLIENT_ID]",
      "clientSecret": "[REPLACE_WITH_YOUR_CLIENT_SECRET]",
      "scope": "[REPLACE_WITH_YOUR_SCOPE]"
    }
    
  4. Instale y configure el cliente más reciente del sistema operativo Python de Delta Sharing.

    Debe tener la versión más reciente del cliente del sistema operativo Python delta Sharing.

    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install "delta-sharing>=1.3.1"
    
  5. Guarde el archivo oauth_config.share actualizado.

  6. Pruebe la configuración:

    Cree un script de prueba test.py:

    import delta_sharing
    
    # Point to the profile file. It can be a file on the local file system or a file on a remote storage.
    
     profile_file = "oauth_config.share"
    
     # Create a SharingClient.
     client = delta_sharing.SharingClient(profile_file)
     #
     # List all shared tables.
     tables = client.list_all_tables()
    
     print(tables)
    
     # replace the following line with the coordinates of the shared table
     #table_url = profile_file + "#sample_share.sample_db.sample_table"
    
     # Fetch 10 rows from a table and convert it to a Pandas DataFrame.
     # This can be used to read sample data from a table that cannot fit in the memory.
     #df = delta_sharing.load_as_pandas(table_url, limit=10)
    
     #print(df)
    

    Ejecuta el script:

    python3 test.py
    

    El script debe enumerar las tablas compartidas.