Configurer une connexion multicloud pour Databricks Unity Catalog

Une connexion cross-cloud à un catalogue Databricks Unity Catalog vous permet d'interroger les données de ce catalogue directement dans Google Cloud. Cette fonctionnalité unifie votre analyse de données en intégrant vos sources de données externes à votre environnementGoogle Cloud existant.

Une fois la connexion configurée, vous pouvez gérer l'accès à vos données fédérées dans un Lakehouse sans limites.

Avant de commencer

  1. Consultez la présentation de Lakehouse pour comprendre comment Lakehouse gère l'accès aux données.
  2. Découvrez comment accéder aux données cross-cloud.
  3. Consultez les catalogues compatibles pour vérifier les configurations compatibles.
  4. Découvrez comment utiliser les secrets Secret Manager régionaux. Cela est nécessaire pour configurer un lakehouse avec Databricks Unity Catalog à l'aide de l'authentification basée sur un secret.
  5. (Facultatif) Si vous prévoyez d'acheminer les requêtes via une interconnexion privée entre votre VPC Google Cloud et le VPC de votre fournisseur de services cloud distant (par exemple, AWS), assurez-vous de disposer d'un compte actif auprès de votre fournisseur distant, provisionnez une interconnexion Cross-Cloud Interconnect dédiée ou une interconnexion Cross-Cloud Interconnect partenaire, établissez des sessions BGP avec votre Cloud Router et vérifiez que vous disposez des autorisations IAM requises dans les deux environnements cloud.
  6. Facultatif : Si vous prévoyez d'utiliser la fédération d'identité des utilisateurs pour propager les identités des utilisateurs finaux sur les requêtes, assurez-vous que :
  7. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the BigLake, Secret Manager APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  10. Verify that billing is enabled for your Google Cloud project.

  11. Enable the BigLake, Secret Manager APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer l'accès cross-cloud, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Limites et points à noter

Cette section liste les limites et les points à prendre en compte pour accéder aux données cross-cloud.

  • Fournisseurs de services cloud interconnexion cross-cloud Interconnect : l'utilisation d'une interconnexion privée pour accéder aux données cross-cloud est compatible avec le fournisseur de services cloud distant suivant : Amazon Web Services (AWS). Vous pouvez utiliser une interconnexion Cross-Cloud dédiée ou une interconnexion Cross-Cloud partenaire.
  • Routage réseau : si une interconnexion privée (telle que Dedicated CCI ou Partner CCI) n'est pas configurée, les requêtes sont acheminées via l'Internet public. Cela peut entraîner des frais de sortie plus élevés de la part de votre fournisseur de services cloud distant et des performances moins prévisibles.
  • Configuration de Databricks Unity Catalog :
  • Lecture seule : les catalogues fédérés dans Lakehouse sont des vues en lecture seule du catalogue distant. La manipulation des ressources (par exemple, la création, la mise à jour ou la suppression de ressources) n'est pas possible et doit être effectuée directement dans le catalogue distant.
  • Fraîcheur des données : l'option --refresh-interval d'un catalogue fédéré détermine la fréquence de synchronisation des métadonnées. La valeur doit être 0s (désactivé) ou au moins 300s (5 minutes). L'actualisation des métadonnées en arrière-plan d'un catalogue peut prendre plus de temps si le nombre de ressources d'espace de noms et de table est élevé. Si l'actualisation précédente dépasse le délai, l'actualisation actuelle sera ignorée, mais l'actualisation suivante sera planifiée à l'intervalle suivant. Les requêtes utilisent les métadonnées du catalogue synchronisées le plus récemment. Par conséquent, les modifications apportées au catalogue distant, telles que les nouvelles tables, les mises à jour de schéma ou les données récemment validées, ne sont pas visibles dans Lakehouse tant que l'actualisation des métadonnées en arrière-plan n'est pas terminée.
  • Mise en cache Lakehouse : la mise en cache Lakehouse est activée automatiquement pour toutes les requêtes cross-cloud afin de réduire les coûts de sortie en stockant les blocs de données localement dans Google Cloud. Les clés de chiffrement gérées par le client (CMEK) ne sont pas compatibles avec la mise en cache. Les données mises en cache sont chiffrées à l'aide de Google-owned and Google-managed encryption keys. Si la contrainte de règle d'administration constraints/gcp.restrictNonCmekServices est appliquée à une table de la requête, la mise en cache est automatiquement désactivée pour cette requête. Pour en savoir plus, consultez Mise en cache intelligente.
  • Résidence des données et conformité : la création d'un catalogue ou d'une connexion fédérés dans une région Google Cloud stocke les données mises en cache au repos dans cette région cible. Si vos données cloud distantes résident dans une autre juridiction, assurez-vous que la mise en cache interrégionale est conforme aux exigences de résidence des données et de conformité réglementaire de votre organisation.

Workflow général

Pour accéder aux données cross-cloud, suivez ces étapes générales :

  • Configurer Cross-Cloud Interconnect (facultatif) : configurez une connexion privée entre votre VPC Google Cloud et votre fournisseur de services cloud distant.
  • Configurer la fédération : configurez l'authentification et créez un catalogue fédéré dans Lakehouse.
    • Authentification de base (obligatoire) : configurez OpenID Connect (OIDC) (recommandé) ou l'authentification basée sur un secret pour permettre à Lakehouse d'effectuer une synchronisation du schéma et des métadonnées en arrière-plan à l'aide du compte de service du catalogue.
    • Fédération des identités des utilisateurs (facultatif) : activez la fédération des identités des utilisateurs (--federated-catalog-identity-mode="user-identity-federation") pour permettre l'exécution des requêtes à l'aide de l'identité de l'utilisateur final authentifié. Cela permet à Databricks Unity Catalog d'attribuer des requêtes aux utilisateurs finaux, d'appliquer des autorisations et de générer des journaux d'audit.
  • Vérifier la connexion : vérifiez que Lakehouse peut se connecter à votre catalogue distant.
  • Interroger des données : exécutez des requêtes sur vos données fédérées à l'aide de BigQuery ou de Managed Service pour Apache Spark. La mise en cache Lakehouse est activée automatiquement pour les requêtes afin de réduire les coûts de sortie. Pour en savoir plus, consultez Interroger des données distantes.
  • Configurer les autorisations : utilisez Identity and Access Management (IAM) pour gérer les utilisateurs autorisés à afficher et à interroger les données fédérées.

Configurer interconnexion cross-cloud (facultatif)

Par défaut, les requêtes adressées à votre catalogue distant transitent par l'Internet public. Pour améliorer la sécurité et la conformité, fournir des performances prévisibles et réduire les coûts de transfert de données, utilisez une interconnexion privée. Cela établit une connexion réseau privée dédiée entre votre cloud privé virtuel (VPC) Google Cloudet le réseau de votre fournisseur de services cloud distant (par exemple, AWS).

Vous pouvez provisionner et configurer l'une des options d'interconnexion privée suivantes entre votre VPC Google Cloud et le VPC de votre fournisseur de services cloud distant (par exemple, AWS) :

Établissez des sessions BGP entre votre routeur Cloud Router dans Google Cloud et le VPC de votre fournisseur de services cloud distant pour assurer l'échange de routes.

Pour activer l'interrogation privée, vous devez configurer un chemin d'accès de Lakehouse vers votre bucket de stockage distant (par exemple, un bucket AWS Amazon S3) via votre interconnexion privée. Vous pouvez suivre deux flux architecturaux pour configurer ce routage :

  • Routage de l'équilibreur de charge réseau proxy interne régional : ce flux utilise un équilibreur de charge réseau proxy interne régionalGoogle Cloud pour répartir les requêtes entre les groupes de points de terminaison du réseau (NEG) de connectivité hybride pointant vers plusieurs interfaces réseau Elastic (ENI) AWS. Ce flux est essentiel pour l'équilibrage de charge, l'évolutivité et la haute disponibilité. Il est requis pour Partner CCI et recommandé pour Dedicated CCI pour l'équilibrage de charge, l'évolutivité et la haute disponibilité.
  • Routage direct des points de terminaison : ce flux connecte l'Annuaire des services directement à une seule adresse IP de point de terminaison d'interface VPC AWS. Ce flux ne fonctionne que pour CCI dédié et n'est pas compatible avec CCI partenaire.

Sélectionnez le flux de configuration qui correspond à vos exigences d'architecture :

Équilibreur de charge réseau proxy interne régional

Pour configurer un équilibreur de charge réseau proxy régional interne afin de répartir les requêtes entre plusieurs ENI AWS pour la haute disponibilité et l'équilibrage de charge, procédez comme suit :

Configurer la mise en réseau AWS

Commencez par créer un point de terminaison d'interface VPC Amazon S3 (AWS PrivateLink) :

  1. Dans la console AWS VPC, créez un point de terminaison d'interface pour Amazon S3.
  2. Pour le nom du service, spécifiez com.amazonaws.AWS_REGION.s3.
  3. Sélectionnez le VPC et les sous-réseaux connectés via Direct Connect à votre VPC Google Cloud .
  4. Associez des groupes de sécurité au point de terminaison pour contrôler l'accès entrant.
  5. Cette opération provisionne des interfaces réseau Elastic (ENI) dans chaque sous-réseau sélectionné. Notez les adresses IP privées de ces ENI.

Ensuite, configurez les groupes de sécurité :

  • Assurez-vous que le ou les groupes de sécurité associés aux ENI du point de terminaison Amazon S3 autorisent le trafic TCP entrant sur le port 443 depuis votre VPC Google Cloud . Cela doit inclure la plage CIDR de votre sous-réseau proxy réservéGoogle Cloud pour autoriser les vérifications d'état et le trafic transféré.

Configurer la mise en réseau Google Cloud

Pour simplifier la configuration, exécutez les commandes suivantes afin de configurer l'équilibreur de charge interne. Pour en savoir plus ou pour découvrir des configurations avancées, consultez Configurer un équilibreur de charge réseau proxy interne régional pour les points de terminaison hybrides.

gcloud compute networks subnets create PROXY_SUBNET_NAME \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION \
    --network=VPC_NETWORK \
    --range=PROXY_SUBNET_RANGE

Remplacez les éléments suivants :

  • PROXY_SUBNET_NAME : nom du sous-réseau proxy réservé.
  • PROXY_SUBNET_RANGE : plage CIDR inutilisée dans votre réseau VPC (par exemple, 10.129.0.0/23).
  1. Créez une vérification d'état régionale :

    gcloud compute health-checks create tcp HEALTH_CHECK_NAME \
        --region=REGION \
        --port=443

    Remplacez les éléments suivants :

    • HEALTH_CHECK_NAME : nom de la vérification de l'état.
    • REGION : région Google Cloud (par exemple, us-east4).
  2. Créez des groupes de points de terminaison du réseau (NEG) de connectivité hybride et ajoutez des points de terminaison :

    Créez un NEG hybride (NON_GCP_PRIVATE_IP_PORT) pour chaque zone :

    gcloud compute network-endpoint-groups create NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ZONE \
        --network=VPC_NETWORK

    Ajoutez l'adresse IP privée de votre ENI AWS au NEG hybride correspondant :

    gcloud compute network-endpoint-groups update NEG_NAME \
        --zone=ZONE \
        --add-endpoint="ip=AWS_S3_IP,port=443"

    Remplacez les éléments suivants :

    • NEG_NAME : nom du NEG hybride.
    • ZONE : zone Google Cloud (par exemple, us-east4-a). Cette zone doit se trouver dans la région de votre rattachement de VLAN interconnexion cross-cloud.
    • VPC_NETWORK : nom de votre réseau VPC.
    • AWS_S3_IP : adresse IP privée du point de terminaison d'un VPC AWS Amazon S3 (ENI) dans cette zone.

    Répétez ces commandes pour créer des NEG et ajouter des points de terminaison pour d'autres zones si vos ENI AWS sont répartis sur plusieurs zones.

  3. Créez et configurez le service de backend :

    Créez un service de backend régional avec l'équilibrage de charge géré interne :

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=TCP \
        --region=REGION \
        --health-checks=HEALTH_CHECK_NAME \
        --health-checks-region=REGION

    Ajoutez vos NEG hybrides au service de backend :

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --region=REGION \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-zone=ZONE \
        --balancing-mode=CONNECTION \
        --max-connections=MAX_CONNECTIONS

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • NEG_NAME : nom du NEG hybride que vous avez créé à l'étape précédente.
    • ZONE : zone Google Cloud (par exemple, us-east4-a).
    • MAX_CONNECTIONS : nombre maximal de connexions simultanées que le backend doit gérer (par exemple, 100).

    Répétez la commande add-backend pour chaque NEG hybride que vous avez créé.

  4. Configurez l'interface de l'équilibreur de charge :

    Créez un proxy TCP cible :

    gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
        --backend-service=BACKEND_SERVICE_NAME \
        --region=REGION

    Créez une règle de transfert pour acheminer le trafic vers le proxy cible :

    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=VPC_NETWORK \
        --subnet=VPC_SUBNET \
        --ports=443 \
        --region=REGION \
        --target-tcp-proxy=TARGET_PROXY_NAME \
        --target-tcp-proxy-region=REGION \
        --allow-global-access

    Remplacez les éléments suivants :

    • TARGET_PROXY_NAME : nom du proxy cible.
    • FORWARDING_RULE_NAME : nom de la règle de transfert.
    • VPC_SUBNET : nom de votre sous-réseau VPC.

Après avoir créé la règle de transfert pour l'équilibreur de charge, notez l'adresse IP interne qui lui est attribuée. C'est votre ILB_IP_ADDRESS.

Configurer l'Annuaire des services

Enregistrez l'adresse IP de l'ILB dans l'Annuaire des services pour que Lakehouse puisse la découvrir.

  1. Créez un espace de noms pour votre cloud distant :

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Remplacez les éléments suivants :

    • NAMESPACE : identifiant unique de votre espace de noms.
    • PROJECT_ID : ID de votre projet Google Cloud .
    • REGION : région Google Cloud . Exemple : us-east4. Cette région doit être identique à celle du catalogue fédéré.
  2. Créez un service dans l'espace de noms de l'Annuaire des services :

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Remplacez les éléments suivants :

    • SERVICE_NAME : identifiant unique de votre service.
  3. Créez un point de terminaison pour l'ILB dans le service :

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --project=PROJECT_ID \
        --namespace=NAMESPACE \
        --service=SERVICE_NAME \
        --location=REGION \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK \
        --address=ILB_IP_ADDRESS \
        --port=443

    Remplacez les éléments suivants :

    • ENDPOINT_NAME : identifiant unique de votre point de terminaison.
    • PROJECT_NUMBER : numéro de votre projet Google Cloud. Utilisez votre numéro de projet dans l'option --network.
    • ILB_IP_ADDRESS : adresse IP interne de votre règle de transfert d'équilibreur de charge interne.

Point de terminaison direct

Pour configurer l'Annuaire des services afin d'acheminer le trafic directement vers une seule adresse IP de point de terminaison d'interface VPC AWS, procédez comme suit :

  1. Créez un point de terminaison VPC d'interface pour Amazon S3 dans votre VPC AWS. Notez l'adresse IP et le port de ce point de terminaison.
  2. Créez un espace de noms pour votre cloud distant :

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Remplacez les éléments suivants :

    • NAMESPACE : identifiant unique de votre espace de noms.
    • PROJECT_ID : ID de votre projet Google Cloud .
    • REGION : région Google Cloud . Exemple : us-east4. Il doit s'agir de la même région que celle du catalogue fédéré.
  3. Créez un service dans l'espace de noms de l'Annuaire des services :

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Remplacez les éléments suivants :

    • SERVICE_NAME : identifiant unique de votre service.
  4. Créez un point de terminaison dans le service contenant les informations de routage de votre point de terminaison VPC d'interface Amazon S3 :

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --service=SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION \
        --address=S3_VPCE_IP_ADDRESS \
        --port=S3_VPCE_PORT \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK

    Remplacez les éléments suivants :

    • ENDPOINT_NAME : identifiant unique de votre point de terminaison.
    • S3_VPCE_IP_ADDRESS : adresse IP de votre point de terminaison d'interface VPC Amazon S3. Exemple :10.0.1.45
    • S3_VPCE_PORT : numéro de port de votre point de terminaison d'interface VPC Amazon S3. Exemple :443
    • PROJECT_NUMBER : numéro de votre projet Google Cloud. Utilisez votre numéro de projet dans l'option --network.
    • VPC_NETWORK : nom du réseau VPC Google Cloud associé à votre interconnexion privée.

Configurer la fédération

Pour interroger vos données, vous devez configurer un catalogue fédéré Lakehouse qui se connecte à votre catalogue Databricks Unity Catalog distant.

Configurer l'authentification

La fédération nécessite de s'authentifier auprès du catalogue distant en tant que principal de service Databricks. Choisissez l'une des options d'authentification suivantes :

OIDC

OpenID Connect (OIDC) permet une authentification sans secret via la fédération de jetons OAuth Databricks.

  1. Créez un principal de service dans votre compte Databricks qui dispose d'un accès en lecture au catalogue Unity cible et du droit EXTERNAL USE SCHEMA sur les schémas ou le catalogue cibles.
  2. Enregistrez l'ID d'application (UUID) du principal de service. Vous en aurez besoin pour une utilisation ultérieure.

Basée sur un secret

Cette option utilise un ID client OAuth et un code secret du client stockés de manière sécurisée avec des secrets Secret Manager régionaux.

  1. Créez un principal de service dans votre compte Databricks disposant d'un accès en lecture au Unity Catalog cible.

  2. Générez un secret OAuth pour le compte principal de service.

  3. Créez un fichier JSON nommé credentials.json avec votre charge utile :

    {
        "client_id": "CLIENT_ID",
        "client_secret": "CLIENT_SECRET"
    }

    Remplacez les éléments suivants :

    • CLIENT_ID : ID client OAuth de votre compte de service Databricks.
    • CLIENT_SECRET : code secret du client OAuth pour votre principal de service Databricks.
  4. Configurez le point de terminaison régional pour Secret Manager :

    Par défaut, Secret Manager utilise un point de terminaison global. Toutefois, Lakehouse nécessite que vos secrets soient stockés dans la même région que votre catalogue Lakehouse. Pour interagir avec des secrets régionaux à l'aide de la CLI gcloud, vous devez remplacer le point de terminaison d'API par défaut pour votre session ou profil actuel. Exemple : secretmanager.us-east4.rep.googleapis.com.

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/

    Remplacez les éléments suivants :

    • REGION : région Google Cloud dans laquelle votre secret Secret Manager est stocké. Exemple : us-east4. Pour éviter les problèmes de connectivité, votre secret et votre catalogue doivent être créés dans la même région.
  5. Importez la charge utile dans Secret Manager :

    gcloud secrets create DATABRICKS_SECRET_NAME \
      --location="REGION" \
      --project="PROJECT_ID" \
      --data-file=credentials.json

    Remplacez les éléments suivants :

    • DATABRICKS_SECRET_NAME : nom de votre secret Databricks.
    • PROJECT_ID : ID de votre projet Google Cloud .

Créer un catalogue fédéré

Créez le catalogue fédéré à l'aide de la console Google Cloud ou de la CLI gcloud.

Remarques :

Console

Pour créer un catalogue fédéré :

  1. Dans la console Google Cloud , accédez à Lakehouse.

    Accéder à Lakehouse

  2. Cliquez sur Créer un catalogue.

  3. Cliquez sur Catalogue fédéré.

    La section Configuration du catalogue s'affiche.

  4. Pour Source du catalogue fédéré, sélectionnez Databricks (Unity).

  5. Pour Emplacement des données, sélectionnez la région Lakehouse dans laquelle vous souhaitez créer le catalogue fédéré. Exemple :us-east4 Pour minimiser la latence (même sur l'Internet public), procédez comme suit lorsque vous sélectionnez une région :

    • Si votre catalogue Unity se trouve sur AWS, sélectionnez la régionGoogle Cloud la plus proche de votre région AWS.
    • Si votre catalogue Unity se trouve dans Google Cloud, sélectionnez exactement la même région.
  6. Cliquez sur Continuer.

    La section Détails de la connexion s'affiche.

  7. Dans la section Détails du catalogue distant, dans le champ Nom de l'instance Unity, saisissez le nom de votre instance Databricks cible. Exemple : abcd.cloud.databricks.com.

  8. Dans le champ Nom Unity Catalog, saisissez le nom du catalogue Databricks Unity Catalog cible vers lequel effectuer la fédération.

  9. Sélectionnez une option pour Méthode d'authentification :

    • Pour OIDC, saisissez l'ID d'application du principal de service.
    • Dans le champ Secret, saisissez le nom de votre secret. Utilisez le format suivant : projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME.
  10. Facultatif : dans la section Mode d'identité, sélectionnez une option :

    • Identité du service (par défaut) : les requêtes s'exécutent en tant que compte de service Lakehouse.
    • Identité de l'utilisateur : les requêtes s'exécutent à l'aide de l'identité de l'utilisateur final authentifié et sont propagées au catalogue distant. La fédération d'identité doit être configurée dans le catalogue distant.
  11. Facultatif : Dans le champ Nom de l'annuaire des services, saisissez le chemin d'accès à votre service de l'Annuaire des services. Exemple : projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME. Cette étape n'est requise que si vous configurez une interconnexion privée (interconnexion cross-cloud).

  12. Cliquez sur Créer.

gcloud

OIDC

Si vous utilisez OIDC, vous devez spécifier --unity-service-principal-application-id.

Internet public (pas de CCI)

Si vous ne configurez pas CCI, la connexion transite de manière sécurisée sur l'Internet public.

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --federated-catalog-identity-mode="IDENTITY_MODE"

Appartenant au client (CCI)

Si vous avez configuré une interconnexion privée (telle que Dedicated CCI ou Partner CCI), fournissez la référence du service de l'Annuaire des services pour que Lakehouse achemine le trafic de manière privée.

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --federated-catalog-identity-mode="IDENTITY_MODE" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME"

Remplacez les éléments suivants :

  • FEDERATED_CATALOG_NAME : nom de votre catalogue fédéré.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • REGION : région Lakehouse dans laquelle le catalogue fédéré est créé. Il doit s'agir de la même région que l'espace de noms de l'Annuaire des services et le secret régional. Pour réduire la latence :
    • Si votre catalogue Unity se trouve sur AWS, sélectionnez la régionGoogle Cloud la plus proche de votre région AWS.
    • Si votre catalogue Unity se trouve sur Google Cloud, sélectionnez exactement la même région.
  • UNITY_SERVICE_PRINCIPAL_APPLICATION_ID : ID d'application (UUID) de votre compte de service Databricks.
  • UNITY_INSTANCE_NAME : nom de votre instance Databricks cible. Exemple : abcd.cloud.databricks.com.
  • UNITY_CATALOG_NAME : nom du catalogue Databricks Unity Catalog cible avec lequel effectuer la fédération.
  • REFRESH_INTERVAL : indique la fréquence d'actualisation des métadonnées en arrière-plan. Définissez cette valeur en tant que durée, par exemple 330s ou 5m30s.
  • NAMESPACE_FILTERS : (facultatif) liste d'espaces de noms à fédérer, séparés par une virgule. Exemple :ns1,ns2 Si cette option est omise, tous les espaces de noms seront inclus.
  • IDENTITY_MODE (facultatif) : spécifie le mode d'identité du catalogue. Définissez cette option sur user-identity-federation pour propager les identités des utilisateurs finaux sur les requêtes, ou sur service-identity pour exécuter les requêtes en tant que compte de service du catalogue. Si aucune valeur n'est spécifiée, la valeur par défaut est service-identity.
  • Si vous utilisez une interconnexion privée (CCI) :
    • SERVICE_DIRECTORY_NAMESPACE : espace de noms de l'Annuaire des services que vous avez créé lors de la configuration de l'interconnexion privée.
    • SERVICE_NAME : nom du service de l'Annuaire des services que vous avez créé lors de la configuration de l'interconnexion privée.

Basée sur un secret

Si vous utilisez l'authentification basée sur un secret, vous devez spécifier --secret-name.

Internet public (pas de CCI)

Si vous ne configurez pas CCI, la connexion transite de manière sécurisée sur l'Internet public.

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --federated-catalog-identity-mode="IDENTITY_MODE"

Appartenant au client (CCI)

Si vous avez configuré une interconnexion privée (telle que Dedicated CCI ou Partner CCI), fournissez la référence du service de l'Annuaire des services pour que Lakehouse achemine le trafic de manière privée.

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --federated-catalog-identity-mode="IDENTITY_MODE" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME"

Remplacez les éléments suivants :

  • FEDERATED_CATALOG_NAME : nom de votre catalogue fédéré.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • REGION : région Lakehouse dans laquelle le catalogue fédéré est créé. Il doit s'agir de la même région que l'espace de noms de l'Annuaire des services et le secret régional. Pour réduire la latence :
    • Si votre catalogue Unity se trouve sur AWS, sélectionnez la régionGoogle Cloud la plus proche de votre région AWS.
    • Si votre catalogue Unity se trouve sur Google Cloud, sélectionnez exactement la même région.
  • DATABRICKS_SECRET_NAME : nom de votre secret Databricks.
  • UNITY_INSTANCE_NAME : nom de votre instance Databricks cible. Exemple : abcd.cloud.databricks.com.
  • UNITY_CATALOG_NAME : nom du catalogue Databricks Unity Catalog cible avec lequel effectuer la fédération.
  • REFRESH_INTERVAL : indique la fréquence d'actualisation des métadonnées en arrière-plan. Définissez cette valeur en tant que durée, par exemple 330s ou 5m30s.
  • NAMESPACE_FILTERS : (facultatif) liste d'espaces de noms à fédérer, séparés par une virgule. Exemple :ns1,ns2 Si cette option est omise, tous les espaces de noms seront inclus.
  • IDENTITY_MODE (facultatif) : spécifie le mode d'identité du catalogue. Définissez cette option sur user-identity-federation pour propager les identités des utilisateurs finaux sur les requêtes, ou sur service-identity pour exécuter les requêtes en tant que compte de service du catalogue. Si aucune valeur n'est spécifiée, la valeur par défaut est service-identity.
  • Si vous utilisez une interconnexion privée (CCI) :
    • SERVICE_DIRECTORY_NAMESPACE : espace de noms de l'Annuaire des services que vous avez créé lors de la configuration de l'interconnexion privée.
    • SERVICE_NAME : nom du service de l'Annuaire des services que vous avez créé lors de la configuration de l'interconnexion privée.

Terminer la configuration de l'authentification

Suivez la procédure d'authentification en utilisant le type d'authentification que vous avez choisi.

OIDC

Lors de la création du catalogue, Lakehouse provisionne un compte de service unique pour celui-ci. Vous devez récupérer l'ID numérique unique du compte de service et l'utiliser pour configurer une règle de fédération pour le principal de service Databricks.

  1. Récupérez l'identifiant unique numérique du compte de service du catalogue Lakehouse :

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
        --project="PROJECT_ID" \
        --format='value(biglake-service-account-id)'
  2. Dans votre compte Databricks, configurez une règle de fédération pour le principal de service que vous avez créé précédemment. Utilisez les valeurs suivantes :

    • URL de l'émetteur : https://accounts.google.com
    • Objet : l'identifiant unique numérique du compte de service du catalogue Lakehouse récupéré à l'étape précédente.
    • Audience : https://accounts.cloud.databricks.com

    Assurez-vous que le principal de service Databricks dispose d'un accès en lecture au catalogue et à l'espace de travail cibles, ainsi que du droit EXTERNAL USE SCHEMA sur les schémas ou le catalogue cibles.

Basée sur un secret

Lorsque le catalogue est créé, Lakehouse provisionne un compte de service unique pour celui-ci (renvoyé sous la forme biglake-service-account dans la description de la ressource).

Vous devez accorder à ce compte de service l'autorisation d'accéder au secret que vous avez créé précédemment. Notez que la propagation des stratégies IAM peut prendre quelques minutes.

Accordez au compte de service du catalogue l'autorisation d'accéder au secret :

gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets add-iam-policy-binding DATABRICKS_SECRET_NAME \
  --project="PROJECT_ID" \
  --location="REGION" \
  --member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --format='value(biglake-service-account)')" \
  --role="roles/secretmanager.secretAccessor"

Pour vérifier que le compte de service du catalogue fédéré a accès au secret, exécutez la commande suivante :

gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets get-iam-policy DATABRICKS_SECRET_NAME \
     --project="PROJECT_ID" \
     --location="REGION"

Dans le résultat, vérifiez que le rôle roles/secretmanager.secretAccessor est attribué au compte de service biglake-service-account.

Assurez-vous que le principal de service Databricks dispose d'un accès en lecture au catalogue et à l'espace de travail cibles, ainsi que du droit EXTERNAL USE SCHEMA sur les schémas ou le catalogue cibles.

Terminer la configuration de l'interconnexion privée (interconnexion cross-cloud uniquement)

Si vous acheminez le trafic via une interconnexion privée (CCI dédiée ou partenaire), vous devez accorder au compte de service du catalogue Lakehouse les autorisations nécessaires pour découvrir et autoriser les connexions via l'Annuaire des services.

Console

  1. Dans la console Google Cloud , accédez à la page IAM.

    Accéder à IAM

  2. Cliquez sur Accorder l'accès (ou Ajouter).

  3. Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte de service du catalogue Lakehouse. Vous pouvez récupérer cette adresse e-mail en décrivant le catalogue (voir l'onglet gcloud).

  4. Dans le menu Rôle, sélectionnez Lecteur de l'Annuaire des services (roles/servicedirectory.viewer).

  5. Cliquez sur Ajouter un autre rôle, puis sélectionnez Service autorisé PSC de l'Annuaire des services (roles/servicedirectory.pscAuthorizedService).

  6. Cliquez sur Enregistrer.

gcloud

Attribuez les rôles requis au compte de service du catalogue :

# Grant Service Directory Viewer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --format='value(biglake-service-account)')" \
--role="roles/servicedirectory.viewer"

# Grant Service Directory PSC Authorized Service
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --format='value(biglake-service-account)')" \
--role="roles/servicedirectory.pscAuthorizedService"

Vérifier la connexion

Vérifiez que le cycle d'actualisation des métadonnées en arrière-plan du catalogue s'est bien terminé et que les espaces de noms sont synchronisés.

  1. Vérifiez que l'état de l'actualisation indique que l'opération a réussi :

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID"
  2. Vérifiez que les espaces de noms sont synchronisés :

    gcloud biglake iceberg namespaces list \
      --project="PROJECT_ID" \
      --catalog="FEDERATED_CATALOG_NAME"

Configurer la fédération d'identité des utilisateurs (facultatif)

Si vous avez configuré la fédération des identités des utilisateurs pour votre catalogue fédéré, vous devez configurer une règle de fédération à l'échelle du compte dans Databricks.

Bien que l'actualisation des métadonnées en arrière-plan s'exécute en tant que compte de service du catalogue configuré avec l'authentification de base (OIDC ou basée sur un secret), la fédération d'identité des utilisateurs nécessite cette règle à l'échelle du compte afin que Databricks puisse valider les jetons d'identité des utilisateurs finaux créés par Google Cloud lors des requêtes interactives. Cela permet à Databricks d'attribuer des requêtes aux utilisateurs finaux, d'appliquer des autorisations et de générer des journaux d'audit.

  1. (Facultatif) Mettez à jour un catalogue existant :

    Si vous disposez d'un catalogue fédéré configuré avec le mode d'identité de service par défaut, vous pouvez le mettre à jour pour utiliser la fédération d'identité des utilisateurs sans recréer le catalogue :

    Console

    1. Dans la console Google Cloud , accédez à Lakehouse.

      Accéder à Lakehouse

    2. Dans la liste des catalogues, cliquez sur le nom de votre catalogue fédéré.

      La page Détails du catalogue s'affiche.

    3. Cliquez sur Modifier le catalogue.

    4. Dans la section Mode d'identité, sélectionnez Identité de l'utilisateur.

    5. Cliquez sur Enregistrer.

    gcloud

    Exécutez la commande gcloud biglake iceberg catalogs update :

    gcloud biglake iceberg catalogs update FEDERATED_CATALOG_NAME \
        --project="PROJECT_ID" \
        --federated-catalog-identity-mode="user-identity-federation"
  2. Récupérez les revendications OIDC de votre catalogue :

    Exécutez la commande suivante pour récupérer les revendications de jeton requises par Databricks :

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
        --project="PROJECT_ID" \
        --format='yaml(federated-catalog-options.user-identity-federation-oidc)'

    La sortie ressemble à ceci :

    federated-catalog-options:
      user-identity-federation-oidc:
        audience: databricks-12345678-abcd-1234-efgh-1234567890ab
        issuer-url: https://www.gstatic.com/biglake/federation/organizations/123456789012

    Notez les points suivants concernant la disponibilité des revendications :

    • issuer-url : dérivé de votre organisation Google Cloud (https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID) et disponible immédiatement après la création du catalogue.
    • audience : limité à votre metastore Databricks cible (databricks-METASTORE_ID) et dérivé du metastore Unity Catalog. Comme cette valeur est renseignée par l'actualisation des métadonnées en arrière-plan, l'authentification de base doit être effectuée et l'actualisation des métadonnées en arrière-plan doit être active (non définie sur 0). Consultez Vérifier la connexion pour vérifier que l'actualisation des métadonnées en arrière-plan est correctement configurée.
  3. Configurez la règle de fédération à l'échelle du compte Databricks :

    1. Dans la console de compte Databricks, accédez à Paramètres du compte > Sécurité > Configuration du fournisseur d'identité.
    2. Dans la section Règles de fédération, cliquez sur Créer une règle.
    3. Dans la boîte de dialogue de configuration de la règle, définissez les champs suivants :
      • URL de l'émetteur : saisissez la valeur issuer-url récupérée à l'étape précédente (par exemple, https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID).
      • Audiences : saisissez la valeur audience limitée au metastore récupérée à l'étape précédente (par exemple, databricks-METASTORE_ID).
      • Revendication d'objet : laissez ce champ vide (Databricks utilise par défaut la revendication sub contenant l'adresse e-mail de l'utilisateur). Databricks utilise cette adresse e-mail pour la faire correspondre aux utilisateurs configurés dans votre compte Databricks.
    4. Cliquez sur Enregistrer.
  4. Vérifiez la fédération d'identité des utilisateurs et la journalisation d'audit :

    Pour vérifier l'exécution des requêtes attribuées à l'utilisateur et la journalisation d'audit :

    1. Suivez les instructions de la section Interroger des données distantes pour exécuter une requête dans BigQuery sur une table fédérée.

    2. Dans Databricks, vérifiez que l'événement d'accès à la requête est enregistré dans les journaux d'audit Databricks. Interrogez la table système system.access.audit dans l'éditeur SQL Databricks (voir la documentation de référence sur les journaux d'audit Databricks). Notez que l'affichage des événements auditables dans les journaux d'audit Databricks peut prendre 15 minutes ou plus :

      SELECT
        *
      FROM
        system.access.audit
      WHERE
        service_name = 'accounts'
        AND action_name IN ('oidcTokenAuthorization')
        AND event_time >= NOW() - INTERVAL 30 MINUTE
        AND user_identity.email = 'USER_EMAIL'
      ORDER BY
        event_time DESC
      LIMIT 10;

Étapes suivantes