Configurer une intégration de catalogue pour Unity Catalog

Use the CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) command to create a REST catalog integration that uses vended credentials or an external volume to connect to Databricks Unity Catalog.

Note

Vous pouvez créer une intégration de catalogue pour Unity Catalog où l’espace de travail Databricks est hébergé sur l’un des fournisseurs Cloud suivants :

  • AWS

  • Azure

  • Google Cloud

You can configure a catalog integration for Unity Catalog that uses OAuth or bearer authentication:

Configure an OAuth catalog integration

Étape 1 : Récupérer l’URL de votre espace de travail Databricks

L’URL de votre espace de travail Databricks est l’URL que vous utilisez pour accéder à votre espace de travail Databricks. Vous devez trouver cette URL, car vous la spécifierez plus tard lorsque vous créerez une intégration de catalogue.

  1. Récupérez l’URL de votre espace de travail Databricks.

    Pour obtenir des instructions sur la manière de trouver cette URL, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

  2. Copiez votre URL d’espace de travail Databricks dans un éditeur de texte.

Étape 2 : Ajouter un principal de service dans Databricks

  1. Pour ajouter un principal de service, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

  2. Copiez la valeur ID d’application pour votre principal de service dans un éditeur de texte et stockez-la de manière sécurisée. Vous spécifierez cette valeur ultérieurement, lorsque vous créerez une intégration de catalogue dans Snowflake.

Étape 3 : Créer un secret OAuth pour votre principal de service

  1. Pour créer un secret OAuth pour votre principal de service, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

  2. Copiez la valeur Secret que vous avez générée dans un éditeur de texte et stockez-la de manière sécurisée. Vous spécifierez cette valeur ultérieurement, lorsque vous créerez une intégration de catalogue dans Snowflake.

    Important

    Le secret du client n’est affiché qu’une seule fois. Assurez-vous de le copier avant de fermer la boîte de dialogue.

Étape 4 : Activer l’accès à Snowflake à votre catalogue dans Unity Catalog

À cette étape, vous utilisez Databricks pour permettre à Snowflake d’accéder à votre catalogue dans Unity Catalog.

Pour permettre à Snowflake d’accéder à votre catalogue dans Unity Catalog par le biais d’identifiants de connexion fournis, tout d’abord, au niveau du metastore, vous devez activer l’accès aux données externes sur le metastore. Ensuite, vous devez accorder à votre principal de service des privilèges Unity Catalog sur votre catalogue.

Activer l’accès aux données externes sur le metastore (identifiants de connexion fournis uniquement)

Si vous créez une intégration de catalogue qui utilise des identifiants de connexion fournis, vous devez activer l’accès aux données externes sur le metastore dans Databricks. Si vous créez une intégration de catalogue qui utilise un volume externe, vous pouvez ignorer cette étape.

Pour obtenir des instructions sur la manière d’activer l’accès aux données externes sur le metastore, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

Attribuer votre principal de service à un espace de travail

Ensuite, vous devez attribuer votre principal de service à votre espace de travail Databricks.

Pour obtenir des instructions, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

Accorder à votre principal de service l’accès à votre catalogue

Ensuite, vous devez accorder à votre principal de service les privilèges Unity Catalog. Vous devez accorder ces privilèges à votre principal de service pour permettre à Snowflake d’accéder au catalogue en fonction des privilèges que vous spécifiez.

Privilèges pour les fonctionnalité complètes

Pour activer les fonctionnalités complètes dans Snowflake, vous devez accorder les privilèges suivants :

Note

Si vous souhaitez restreindre l’accès à Snowflake, consultez Privilèges de Unity Catalog et objets sécurisables dans la documentation Databricks.

Privilège

Description

EXTERNAL USE SCHEMA

Permet à Unity Catalog de générer et de fournir des identifiants de connexion temporaires et limités à Snowflake pour accéder aux données des tables dans le stockage Cloud.

Note

Ce privilège n’est requis que lorsque vous créez une intégration de catalogue qui utilise des identifiants de connexion fournis. Il n’est pas requis lorsque vous créez une intégration de catalogue qui utilise un volume externe. Par conséquent, si vous utilisez un volume externe, supprimez-le de l’exemple de bloc de code.

MODIFY

Permet à Snowflake d’ajouter, de mettre à jour et de supprimer des données dans une table.

SELECT

Permet à Snowflake d’interroger les tables et d’accéder aux métadonnées des tables. Nécessaire pour toutes les opérations dans Snowflake, y compris la lecture de données et la découverte de tables dans la base de données liée au catalogue.

USE CATALOG

Permet à Snowflake d’accéder au catalogue. Nécessaire pour se connecter à tous les objets dans Unity Catalog et interagir avec eux.

USE SCHEMA

Permet à Snowflake d’accéder aux schémas (espaces de noms) à l’intérieur du catalogue. Nécessaire pour afficher et travailler avec des tables dans des schémas spécifiques.

Accorder des privilèges

Vous pouvez accorder des privilèges en utilisant l’Explorateur de catalogues ou SQL.

Pour accorder des autorisations en utilisant l’Explorateur de catalogues Databricks, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

Important

Dans le champ Principals, vous devez saisir le nom de votre principal de service, et non l’adresse e-mail d’un utilisateur ou le nom d’un groupe.

Étape 5 : Créer une intégration de catalogue

L’exemple suivant crée une intégration au catalogue REST utilisant OAuth :

CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_oauth_vended_credentials
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
REST_CONFIG = (
  CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest'
  CATALOG_NAME = '<catalog_name>'
  ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
  TYPE = OAUTH
  OAUTH_TOKEN_URI = '<databricks_workspace_url>/oidc/v1/token'
  OAUTH_CLIENT_ID = '<client_id>'
  OAUTH_CLIENT_SECRET = '<oauth_secret>'
  OAUTH_ALLOWED_SCOPES = ('all-apis')
)
ENABLED = TRUE;
Copy

Où :

  • <databricks_workspace_url> spécifie l’URL pour votre espace de travail Databricks. Pour trouver cette URL, consultez Étape 1 : Récupérer l’URL de votre espace de travail Databricks.

    Voici un exemple d’URL d’espace de travail Databricks pour chaque plateforme Cloud :

    • Databricks sur AWS : https://dbc-a1a1a1a1-a1a1.cloud.databricks.com

    • Azure Databricks : https://adb-1111111111111111.1.azuredatabricks.net

    • Databricks sur Google Cloud : https://1111111111111111.1.gcp.databricks.com

  • <catalog_name> spécifie le nom de votre catalogue dans Unity Catalog auquel vous souhaitez connecter Snowflake. Vous pouvez trouver ce nom dans l’espace de travail Databricks sous Data > Catalogs.

  • ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS configure l’intégration de catalogue pour utiliser des identifiants de connexion fournis à partir de Unity Catalog.

    Note

    Si vous créez une intégration de catalogue qui utilise un volume externe, vous devez exclure le paramètre ACCESS_DELEGATION_MODE.

  • <client_id> spécifie l’ID du client OAuth pour votre principal de service Databricks. Vous avez copié cette valeur lorsque vous avez ajouté un principal de service dans Databricks.

    Note

    Dans Databricks, cette valeur est appelée ID d’application, et non ID de client.

  • <oauth_secret> spécifie le secret OAuth pour votre principal de service Databricks. Vous avez copié cette valeur lorsque vous avez créé un secret OAuth pour votre principal de service.

Étape 6 : Vérifier l’intégration de votre catalogue

Prochaines étapes

Après avoir configuré une intégration de catalogue pour votre catalogue dans Unity Catalog, utilisez la commande CREATE DATABASE (liée à un catalogue) pour créer une base de données liée à un catalogue en spécifiant l’intégration de catalogue que vous avez créée. Snowflake se synchronise ensuite automatiquement avec votre catalogue dans Unity Catalog pour détecter les schémas et les tables Iceberg, et enregistre les tables distantes dans la base de données liée au catalogue.

Lorsque vous créez votre base de données liée au catalogue, vous spécifiez l’intégration du catalogue.

For example:

CREATE OR REPLACE DATABASE my_linked_db
   LINKED_CATALOG = (
      CATALOG = 'unity_catalog_int_oauth_vended_credentials'
   );
Copy

Note

Configure a bearer token catalog integration

Étape 1 : Récupérer l’URL de votre espace de travail Databricks

L’URL de votre espace de travail Databricks est l’URL que vous utilisez pour accéder à votre espace de travail Databricks. Vous devez trouver cette URL, car vous la spécifierez plus tard lorsque vous créerez une intégration de catalogue.

  1. Récupérez l’URL de votre espace de travail Databricks.

    Pour obtenir des instructions sur la manière de trouver cette URL, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

  2. Copiez votre URL d’espace de travail Databricks dans un éditeur de texte.

Étape 2 : Ajouter un jeton d’accès personnel (PAT) dans Databricks

Vous devez ajouter un jeton d’accès personnel (PAT), car vous devez le spécifier lorsque vous créez une intégration de catalogue qui utilise un jeton du porteur pour l’authentification.

  1. Pour ajouter un PAT dans Databricks, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

  2. Copiez la valeur de votre PAT dans un éditeur de texte et stockez-la en toute sécurité. Vous spécifierez cette valeur ultérieurement, lorsque vous créerez une intégration de catalogue dans Snowflake.

Étape 3 : Activer l’accès à Snowflake à votre catalogue dans Unity Catalog

À cette étape, vous utilisez Databricks pour permettre à Snowflake d’accéder à votre catalogue dans Unity Catalog.

Pour permettre à Snowflake d’accéder à votre catalogue dans Unity Catalog par le biais d’identifiants de connexion fournis, tout d’abord, au niveau du metastore, vous devez activer l’accès aux données externes sur le metastore. Ensuite, vous devez accorder à votre utilisateur Databricks les privilèges Unity Catalog pour votre catalogue, dont votre PAT hérite.

Activer l’accès aux données externes sur le metastore (identifiants de connexion fournis uniquement)

Si vous créez une intégration de catalogue qui utilise des identifiants de connexion fournis, vous devez activer l’accès aux données externes sur le metastore dans Databricks. Si vous créez une intégration de catalogue qui utilise un volume externe, vous pouvez ignorer cette étape.

Pour obtenir des instructions sur la manière d’activer l’accès aux données externes sur le metastore, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

Accorder à votre utilisateur Databricks l’accès à votre catalogue

Ensuite, vous devez accorder à votre utilisateur Databricks les privilèges Unity Catalog. Vous devez accorder ces privilèges à votre utilisateur Databricks pour permettre à Snowflake d’accéder au catalogue en fonction des privilèges que vous spécifiez. Lorsque vous utilisez un PAT pour l’authentification, il hérite de tous les privilèges accordés sur l’utilisateur Databricks qui a créé le PAT.

Privilèges pour les fonctionnalité complètes

Pour activer les fonctionnalités complètes dans Snowflake, vous devez accorder les privilèges suivants :

Note

Si vous souhaitez restreindre l’accès à Snowflake, consultez Privilèges de Unity Catalog et objets sécurisables dans la documentation Databricks.

Privilège

Description

EXTERNAL USE SCHEMA

Permet à Unity Catalog de générer et de fournir des identifiants de connexion temporaires et limités à Snowflake pour accéder aux données des tables dans le stockage Cloud.

Note

Ce privilège n’est requis que lorsque vous créez une intégration de catalogue qui utilise des identifiants de connexion fournis. Il n’est pas requis lorsque vous créez une intégration de catalogue qui utilise un volume externe. Par conséquent, si vous utilisez un volume externe, supprimez-le de l’exemple de bloc de code.

MODIFY

Permet à Snowflake d’ajouter, de mettre à jour et de supprimer des données dans une table.

SELECT

Permet à Snowflake d’interroger les tables et d’accéder aux métadonnées des tables. Nécessaire pour toutes les opérations dans Snowflake, y compris la lecture de données et la découverte de tables dans la base de données liée au catalogue.

USE CATALOG

Permet à Snowflake d’accéder au catalogue. Nécessaire pour se connecter à tous les objets dans Unity Catalog et interagir avec eux.

USE SCHEMA

Permet à Snowflake d’accéder aux schémas (espaces de noms) à l’intérieur du catalogue. Nécessaire pour afficher et travailler avec des tables dans des schémas spécifiques.

Accorder des privilèges

Vous pouvez accorder des privilèges en utilisant l’Explorateur de catalogues ou SQL.

Pour accorder des autorisations en utilisant l’Explorateur de catalogues Databricks, consultez la rubrique correspondant à l’endroit où votre compte Databricks est hébergé :

Étape 4 : Créer une intégration de catalogue

The following example creates a REST catalog integration that uses a bearer token with vended credentials:

CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_bearer_vended_credentials
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  REST_CONFIG = (
    CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest'
    CATALOG_NAME = '<catalog_name>'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<personal_access_token>'
  )
  ENABLED = TRUE;
Copy

Où :

  • <databricks_workspace_url> spécifie l’URL pour votre espace de travail Databricks. Pour trouver cette URL, consultez Étape 1 : Récupérer l’URL de votre espace de travail Databricks.

    Voici un exemple d’URL d’espace de travail Databricks pour chaque plateforme Cloud :

    • Databricks sur AWS : https://dbc-a1a1a1a1-a1a1.cloud.databricks.com

    • Azure Databricks : https://adb-1111111111111111.1.azuredatabricks.net

    • Databricks sur Google Cloud : https://1111111111111111.1.gcp.databricks.com

  • <catalog_name> spécifie le nom de votre catalogue dans Unity Catalog auquel vous souhaitez connecter Snowflake. Vous pouvez trouver ce nom dans l’espace de travail Databricks sous Data > Catalogs.

  • ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS configure l’intégration de catalogue pour utiliser des identifiants de connexion fournis à partir de Unity Catalog.

    Note

    Si vous créez une intégration de catalogue qui utilise un volume externe, vous devez exclure le paramètre ACCESS_DELEGATION_MODE.

  • <personal_access_token> specifies your Databricks personal access token (PAT). An example of a PAT is aaaa111aaaa111a1a1a1a111111a111a1111.

Étape 5 : Vérifier l’intégration de votre catalogue

Prochaines étapes

Après avoir configuré une intégration de catalogue pour votre catalogue dans Unity Catalog, utilisez la commande CREATE DATABASE (liée à un catalogue) pour créer une base de données liée à un catalogue en spécifiant l’intégration de catalogue que vous avez créée. Snowflake se synchronise ensuite automatiquement avec votre catalogue dans Unity Catalog pour détecter les schémas et les tables Iceberg, et enregistre les tables distantes dans la base de données liée au catalogue.

Lorsque vous créez votre base de données liée au catalogue, vous spécifiez l’intégration du catalogue.

For example:

CREATE OR REPLACE DATABASE my_linked_db
   LINKED_CATALOG = (
      CATALOG = 'unity_catalog_int_bearer_vended_credentials'
   );
Copy

Note