Partager via


Contrôler l’accès externe aux données dans le catalogue Unity

Important

Cette fonctionnalité est disponible en préversion publique.

Conseil

Pour plus d’informations sur la lecture de données Azure Databricks à l’aide de Microsoft Fabric, consultez Utiliser Microsoft Fabric pour lire des données inscrites dans Unity Catalog.

Cet article décrit comment contrôler l’accès aux données d’Azure Databricks lorsque des moteurs de traitement externes utilisent les API ouvertes Unity Catalog ou les API Iceberg pour accéder à ces données, en particulier lorsque les moteurs utilisent la fonctionnalité de distribution de justificatifs d’identité Unity Catalog pour obtenir l’accès.

Les contrôles d’accès décrits dans cet article couvrent les scénarios dans lesquels des identifiants temporaires sont utilisés pour lire les données de vos catalogues Unity à l’aide de moteurs et d’interfaces externes tels que :

  • API REST Iceberg
  • Microsoft Fabric
  • duckDB
  • Apache Spark et Trino

Remarque

Unity Catalog implémente des API REST Iceberg via Delta Lake UniForm, un autre moyen de fournir aux clients Iceberg un accès en lecture seule aux tables Delta dans Unity Catalog. Consultez Utiliser UniForm pour lire les tables Delta avec les clients Iceberg.

Vue d’ensemble de la vente des informations d’identification et de l’octroi d’un accès au moteur externe

Lorsque vous souhaitez utiliser un moteur externe pour accéder aux données inscrites dans votre metastore du catalogue Unity, vous devez demander des informations d’identification de courte durée à l’aide de l’API REST du catalogue Unity. Le processus par lequel le catalogue Unity octroie cette accréditation est appelé distribution d’identifiants.

Pour obtenir des informations d’identification temporaires, le principal Azure Databricks (utilisateur, groupe ou principal de service) qui fait la demande doit avoir le privilège EXTERNAL USE SCHEMA sur le schéma qui contient la table à accéder à partir du moteur externe. Le metastore du catalogue Unity qui contient le schéma doit également être activé explicitement pour l’accès externe.

Lorsque le principal privilégié a reçu les informations d’identification temporaires, il reçoit une chaîne de jeton d’accès de courte durée et une URL d’emplacement de stockage cloud que les utilisateurs du moteur externe peuvent utiliser pour accéder à l’objet de données (table) à partir de l’emplacement de stockage cloud. La façon dont les informations d’identification et le jeton sont utilisées par le moteur externe est spécifique au moteur externe et n’est pas abordée ici.

Le moteur externe et la configuration du catalogue Azure Databricks Unity doivent également répondre à des exigences de mise en réseau spécifiques énumérées dans les sections suivantes.

Spécifications

Cette section répertorie les configurations réseau, les options de metastore du catalogue Unity, les types de tables et les autorisations nécessaires pour un accès sécurisé aux objets de données Unity Catalog à partir de moteurs externes à l’aide des API ouvertes du catalogue Unity ou des API REST Iceberg.

Exigences réseau

  • Pour accéder à l’espace de travail Azure Databricks à l’aide des API Open du catalogue Unity ou des API REST Iceberg, l’URL de l’espace de travail doit être accessible au moteur qui fait la demande. Cela inclut les espaces de travail qui utilisent des listes d’accès IP ou Azure Private Link.
  • Pour accéder à l’emplacement de stockage cloud sous-jacent pour les objets de données inscrits dans le catalogue Unity, les URL de stockage générées par l’API d’informations d’identification temporaires du catalogue Unity doivent être accessibles au moteur qui fait la demande. Cela signifie que le moteur doit être autorisé sur les listes de contrôle d’accès réseau et pare-feu pour les comptes de stockage cloud sous-jacents.

Conditions requises pour les metastores et les objets de données du catalogue Unity

  • Le metastore doit être activé pour l’accès aux données externes.
  • Seuls les tableaux sont pris en charge dans le cadre de l’aperçu public.
    • Les tables externes prennent en charge la lecture et l’écriture.
    • Les tables managées ne peuvent être que lues.
  • Les types de données suivants ne sont pas pris en charge :
    • Les tables avec des filtres de lignes ou des masques de colonnes.
    • Les tables partagées à l’aide du partage Delta.
    • Les tables fédérées Lakehouse (tables étrangères).
    • Vues
    • Vues matérialisées
    • Les tables de diffusion en continu Delta Live Tables
    • Les tables en ligne
    • Index de recherche vectorielle

Spécifications relatives aux autorisations

Le principal qui demande les informations d’identification temporaires doit avoir :

  • Le privilège EXTERNAL USE SCHEMA sur le schéma conteneur ou son catalogue parent.

    Ce privilège doit toujours être accordé explicitement. Seul le propriétaire du catalogue parent peut l’accorder. Pour éviter l’exfiltration accidentelle, ALL PRIVILEGES n’inclut pas le privilège EXTERNAL USE SCHEMA et les propriétaires de schéma n’ont pas ce privilège par défaut.

  • L’autorisation SELECT sur la table USE CATALOG sur son catalogue parent, et USE SCHEMA sur son schéma parent.

Activer l’accès aux données externes sur le metastore

Pour permettre aux moteurs externes d’accéder aux données dans un metastore, un administrateur de metastore doit activer l’accès aux données externes pour le metastore. Cette option est désactivée par défaut pour empêcher l’accès externe non autorisé.

  1. Dans un espace de travail Azure Databricks attaché au metastore, cliquez sur Icône Catalogue Catalogue.
  2. Cliquez sur l’icône d’engrenage icône Engrenage au sommet du volet Catalogue et sélectionnez Metastore.
  3. Sous l’onglet Détails, activez l’Accès aux données externes.

Demander des identifiants temporaires pour l’accès aux données externes

Pour demander des identifiants temporaires pour l’accès aux données externes, un utilisateur de l’espace de travail qui répond aux exigences répertoriées ci-dessus doit utiliser l’API /api/2.1/unity-catalog/temporary-table-credentials.

Remarque

Vous pouvez récupérer une liste de tables qui prennent en charge la distribution d’informations d’identification en appelant l’API ListTables avec l’option include_manifest_capabilities activée. Seules les tables marquées HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT ou HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT peuvent être référencées dans l’API d’informations d’identification de table temporaire. Consultez GET /api/2.1/unity-catalog/tables.

Par exemple :

curl -X POST -H "Authentication: Bearer $OAUTH_TOKEN" \
https://<workspace-instance>/api/2.1/unity-catalog/temporary-table-credentials \
-d '{"table_id": "<string>", "operation_name": "<READ|READ_WRITE>"}'

Pour plus d’informations, consultez POST /api/2.1/unity-catalog/temporary-table-credentials la référence API REST Azure Databricks.