Una connessione cross-cloud a un catalogo Databricks Unity ti consente di eseguire query sui dati di quel catalogo direttamente all'interno di Google Cloud. Questa funzionalità unifica l'analisi dei dati integrando le origini dati esterne con l'ambienteGoogle Cloud esistente.
Dopo aver configurato la connessione, puoi gestire l'accesso ai dati federati in Lakehouse senza confini.
Prima di iniziare
- Consulta la panoramica di Lakehouse per capire in che modo Lakehouse gestisce l'accesso ai dati.
- Leggi Informazioni sull'accesso ai dati cross-cloud per capire come funziona.
- Consulta i cataloghi supportati per verificare le configurazioni supportate.
- Scopri come utilizzare i secret di Secret Manager a livello di regione. Questo è necessario per configurare un Lakehouse con Databricks Unity Catalog utilizzando l'autenticazione basata su secret.
- (Facoltativo) Se prevedi di instradare le query su un'interconnessione privata tra il tuo VPC Google Cloud e il VPC del tuo provider cloud remoto (ad esempio AWS), assicurati di avere un account attivo con il tuo provider remoto, esegui il provisioning di un Dedicated Cross-Cloud Interconnect o Partner Cross-Cloud Interconnect, stabilisci sessioni BGP con il tuo router Cloud e verifica di disporre delle autorizzazioni IAM richieste in entrambi gli ambienti cloud.
- (Facoltativo) Se prevedi di utilizzare la federazione delle identità utente per propagare le identità degli utenti finali nelle query, assicurati che:
- Il tuo provider di identità (IdP) è configurato per emettere l'attestazione
emaildell'utente come attestazione dell'oggettosubnei token di autenticazione. - Il tuo account Databricks è configurato per riconoscere l'utente finale dal suo indirizzo email, in modo che Databricks possa riconoscerlo. Gli utenti possono essere configurati in Databricks sincronizzandoli dal tuo provider di identità utilizzando SCIM (consigliato) o aggiungendoli manualmente nella console dell'account Databricks.
- Il tuo provider di identità (IdP) è configurato per emettere l'attestazione
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment di workload.
-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare l'accesso cross-cloud, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Gestisci i cataloghi Lakehouse:
BigLake Admin (
roles/biglake.admin) -
Gestisci i secret (se utilizzi l'autenticazione basata su secret):
Secret Manager Admin (
roles/secretmanager.admin) -
Instrada il traffico su un'interconnessione privata (utente):
Compute Network Admin (
roles/compute.networkAdmin) -
Instrada il traffico su un'interconnessione privata (account di servizio del catalogo):
- Service Directory Viewer (
roles/servicedirectory.viewer) - Service Directory PSC Authorized Service (
roles/servicedirectory.pscAuthorizedService)
- Service Directory Viewer (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Limitazioni e considerazioni
Questa sezione elenca le limitazioni e le considerazioni per l'accesso ai dati cross-cloud.
- Provider cloud supportati per Cross-Cloud Interconnect: l'utilizzo di un'interconnessione privata per l'accesso ai dati cross-cloud è supportato con i seguenti provider cloud remoti: Amazon Web Services (AWS). Puoi utilizzare Dedicated Cross-Cloud Interconnect o Partner Cross-Cloud Interconnect.
- Routing di rete: se non è configurata un'interconnessione privata (come Dedicated CCI o Partner CCI), le query vengono instradate su internet pubblico. Ciò può comportare tariffe per il traffico in uscita più elevate da parte del tuo cloud provider remoto e prestazioni meno prevedibili.
- Configurazione di Databricks Unity Catalog:
- Sono supportati solo i cataloghi Databricks Unity che utilizzano una località esterna su AWS o una località esterna su Google Cloud. I cataloghi Unity che utilizzano lo spazio di archiviazione predefinito su AWS o lo spazio di archiviazione predefinito su Google Cloud non sono supportati.
- Devi attivare l'accesso ai dati esterni nel metastore utilizzato da Unity Catalog, che è disattivato per impostazione predefinita.
- Devi concedere il privilegio
EXTERNAL USE SCHEMAal service principal di Databricks sugli schemi o sul catalogo di destinazione per abilitare la distribuzione delle credenziali per l'accesso ai dati esterni. Senza questo privilegio, l'aggiornamento dei metadati in background e la distribuzione delle credenziali per le query non vanno a buon fine.
- Sola lettura: i cataloghi federati in Lakehouse sono visualizzazioni di sola lettura del catalogo remoto. La manipolazione delle risorse (ad esempio la creazione, l'aggiornamento o l'eliminazione di risorse) non è supportata e deve essere eseguita direttamente nel catalogo remoto.
- Aggiornamento dei dati: il flag
--refresh-intervalper un catalogo federato determina la frequenza con cui vengono sincronizzati i metadati. Il valore deve essere0s(disattivato) o almeno300s(5 minuti). L'aggiornamento dei metadati in background di un catalogo potrebbe richiedere più tempo se sono presenti più risorse di spazi dei nomi e tabelle. Se l'aggiornamento precedente supera il tempo previsto, l'aggiornamento corrente verrà saltato, ma l'aggiornamento successivo verrà pianificato nell'intervallo successivo. Le query utilizzano i metadati del catalogo sincronizzati più di recente, pertanto le modifiche apportate nel catalogo remoto, come nuove tabelle, aggiornamenti dello schema o dati di cui è stato eseguito il commit di recente, non sono visibili in Lakehouse fino al completamento del successivo aggiornamento dei metadati in background. - Memorizzazione nella cache di Lakehouse: la memorizzazione nella cache di Lakehouse viene attivata automaticamente per tutte le query cross-cloud per risparmiare sui costi di uscita archiviando i blocchi di dati localmente in Google Cloud. Le chiavi di crittografia gestite dal cliente (CMEK) non sono supportate per la memorizzazione nella cache; i dati memorizzati nella cache vengono criptati utilizzando Google-owned and Google-managed encryption keys. Se il vincolo della policy dell'organizzazione
constraints/gcp.restrictNonCmekServicesviene applicato a una tabella della query, la memorizzazione nella cache viene disattivata automaticamente per quella query. Per saperne di più, consulta Memorizzazione nella cache intelligente. - Residenza dei dati e conformità: la creazione di un catalogo o di una connessione federata in una regione Google Cloud archivia i dati memorizzati nella cache at-rest nella regione di destinazione. Se i tuoi dati cloud remoti si trovano in una giurisdizione diversa, assicurati che la memorizzazione nella cache tra regioni sia conforme ai requisiti di residenza dei dati e di conformità legale della tua organizzazione.
Workflow generale
Per accedere ai dati cross-cloud, segui questi passaggi generali:
- (Facoltativo) Configura Cross-Cloud Interconnect: configura una connessione privata tra il tuo VPC Google Cloud e il tuo provider cloud remoto.
- Configura la federazione: configura l'autenticazione e crea un catalogo federato in Lakehouse.
- Autenticazione di base (obbligatoria): configura OpenID Connect (OIDC) (consigliato) o l'autenticazione basata su secret per consentire a Lakehouse di eseguire la sincronizzazione in background di schema e metadati utilizzando il account di servizio del catalogo.
- Federazione delle identità utente (facoltativa): abilita la federazione delle identità utente (
--federated-catalog-identity-mode="user-identity-federation") per consentire l'esecuzione delle query utilizzando l'identità dell'utente finale autenticato. In questo modo, Databricks Unity Catalog può attribuire le query agli utenti finali, applicare le autorizzazioni e generare audit log.
- Verifica la connessione: verifica che Lakehouse possa connettersi correttamente al tuo catalogo remoto.
- Esegui query sui dati: esegui query sui dati federati utilizzando BigQuery o Managed Service for Apache Spark. La memorizzazione nella cache di Lakehouse viene attivata automaticamente per le query per risparmiare sui costi di traffico in uscita. Per saperne di più, consulta Esegui query sui dati remoti.
- Configura le autorizzazioni: utilizza Identity and Access Management (IAM) per gestire chi può visualizzare ed eseguire query sui dati federati.
Configura Cross-Cloud Interconnect (facoltativo)
Per impostazione predefinita, le query al catalogo remoto vengono inviate tramite la rete internet pubblica. Per migliorare la sicurezza e la conformità, fornire prestazioni prevedibili e ridurre i costi di trasferimento dei dati, utilizza un'interconnessione privata. In questo modo viene stabilita una connessione di rete privata dedicata tra il tuo Virtual Private Cloud (VPC) Google Cloude la rete del tuo provider cloud remoto (ad esempio AWS).
Puoi eseguire il provisioning e configurare una delle seguenti opzioni di interconnessione privata tra il tuo VPC Google Cloud e il VPC del tuo provider cloud remoto (ad esempio AWS):
- Dedicated Cross-Cloud Interconnect: una connessione fisica dedicata.
- Partner Cross-Cloud Interconnect: una connessione tramite un fornitore di servizi supportato.
Stabilisci sessioni BGP tra il tuo router Cloud in Google Cloud e il VPC del tuo provider cloud remoto per garantire lo scambio di route.
Per abilitare le query private, devi configurare un percorso da Lakehouse al bucket di archiviazione remoto (ad esempio un bucket AWS Amazon S3) tramite l'interconnessione privata. Esistono due flussi di architettura che puoi seguire per configurare questo routing:
- Routing del bilanciatore del carico di rete proxy regionale interno: questo flusso utilizza un bilanciatore del carico di rete proxy regionale internoGoogle Cloud per distribuire le richieste tra i gruppi di endpoint di rete (NEG) di connettività ibrida che puntano a più interfacce di rete elastiche (ENI) AWS. Questo flusso è essenziale per il bilanciamento del carico, la scalabilità e l'alta affidabilità. È obbligatorio per Partner CCI e consigliato per Dedicated CCI per il bilanciamento del carico, la scalabilità e l'alta affidabilità.
- Routing diretto degli endpoint: questo flusso connette Service Directory direttamente a un singolo indirizzo IP dell'endpoint VPC di interfaccia AWS. Questo flusso funziona solo per CCI dedicato e non è supportato per CCI partner.
Seleziona il flusso di configurazione che corrisponde ai requisiti della tua architettura:
Bilanciatore del carico di rete proxy interno regionale
Per configurare un bilanciatore del carico di rete proxy regionale interno per distribuire le richieste tra più ENI AWS per l'alta affidabilità e il bilanciamento del carico, segui questi passaggi:
Configura il networking AWS
Innanzitutto, crea un endpoint di interfaccia VPC Amazon S3 (AWS PrivateLink):
- Nella console AWS VPC, crea un endpoint di interfaccia per Amazon S3.
- Per il nome del servizio, specifica
com.amazonaws.AWS_REGION.s3. - Seleziona il VPC e le subnet connesse tramite Direct Connect al tuo VPC Google Cloud .
- Collega i gruppi di sicurezza all'endpoint per controllare l'accesso in entrata.
- In questo modo viene eseguito il provisioning delle interfacce di rete elastiche (ENI) in ogni subnet selezionata. Prendi nota degli indirizzi IP privati di queste ENI.
Poi, configura i gruppi di sicurezza:
- Assicurati che il gruppo o i gruppi di sicurezza collegati alle ENI dell'endpoint Amazon S3 consentano il traffico TCP in entrata sulla porta
443dal tuo VPC Google Cloud . Deve includere l'intervallo CIDR della subnet proxy-onlyGoogle Cloud per consentire i controlli di integrità e il traffico inoltrato.
Configura Google Cloud il networking
Per semplificare la configurazione, esegui i seguenti comandi per configurare il bilanciatore del carico interno. Per configurazioni avanzate o ulteriori dettagli, consulta Configura un bilanciatore del carico di rete proxy regionale interno per gli endpoint ibridi.
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=VPC_NETWORK \ --range=PROXY_SUBNET_RANGE
Sostituisci quanto segue:
PROXY_SUBNET_NAME: un nome per la subnet solo proxy.PROXY_SUBNET_RANGE: un intervallo CIDR non utilizzato all'interno della tua rete VPC (ad esempio10.129.0.0/23).
Crea un controllo di integrità a livello di regione:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --region=REGION \ --port=443
Sostituisci quanto segue:
HEALTH_CHECK_NAME: un nome per il controllo di integrità.REGION: la regione Google Cloud (ad esempio,us-east4).
Crea gruppi di endpoint di rete (NEG) con connettività ibrida e aggiungi endpoint:
Crea un NEG ibrido (
NON_GCP_PRIVATE_IP_PORT) per ogni zona:gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ZONE \ --network=VPC_NETWORK
Aggiungi l'indirizzo IP privato della tua ENI AWS al NEG ibrido corrispondente:
gcloud compute network-endpoint-groups update NEG_NAME \ --zone=ZONE \ --add-endpoint="ip=AWS_S3_IP,port=443"
Sostituisci quanto segue:
NEG_NAME: un nome per il NEG ibrido.ZONE: la zona Google Cloud (ad esempio,us-east4-a). Questa zona deve trovarsi all'interno della regione del collegamento VLAN di Cross-Cloud Interconnect.VPC_NETWORK: il nome della tua rete VPC.AWS_S3_IP: l'indirizzo IP privato dell'endpoint VPC (ENI) di AWS Amazon S3 in quella zona.
Ripeti questi comandi per creare NEG e aggiungere endpoint per altre zone se le tue ENI AWS sono distribuite in più zone.
Crea e configura il servizio di backend:
Crea un servizio di backend regionale con bilanciamento del carico gestito interno:
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
Aggiungi i NEG ibridi al servizio di 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
Sostituisci quanto segue:
BACKEND_SERVICE_NAME: un nome per il servizio di backend.NEG_NAME: il nome del NEG ibrido creato nel passaggio precedente.ZONE: la zona Google Cloud (ad esempio,us-east4-a).MAX_CONNECTIONS: il numero massimo di connessioni contemporanee che il backend deve gestire (ad esempio,100).
Ripeti il comando
add-backendper ogni NEG ibrido che hai creato.Configura il frontend del bilanciatore del carico:
Crea un proxy TCP di destinazione:
gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --region=REGION
Crea una regola di forwarding per instradare il traffico al proxy di destinazione:
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
Sostituisci quanto segue:
TARGET_PROXY_NAME: un nome per il proxy di destinazione.FORWARDING_RULE_NAME: un nome per la regola di forwarding.VPC_SUBNET: il nome della tua subnet VPC.
Dopo aver creato la regola di forwarding per il bilanciatore del carico, prendi nota dell'indirizzo IP interno assegnato. Questo è il tuo
ILB_IP_ADDRESS.
Configura Service Directory
Registra l'indirizzo IP dell'ILB in Service Directory, in modo che Lakehouse possa rilevarlo.
Crea uno spazio dei nomi per il tuo cloud remoto:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Sostituisci quanto segue:
NAMESPACE: un identificatore univoco per il tuo spazio dei nomi.PROJECT_ID: il tuo ID progetto Google Cloud .REGION: la regione Google Cloud . Ad esempio,us-east4. Deve essere la stessa regione del catalogo federato.
Crea un servizio nello spazio dei nomi Service Directory:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Sostituisci quanto segue:
SERVICE_NAME: un identificatore univoco per il tuo servizio.
Crea un endpoint per l'ILB nel servizio:
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
Sostituisci quanto segue:
ENDPOINT_NAME: un identificatore univoco per l'endpoint.PROJECT_NUMBER: il tuo numero di progetto Google Cloud. Utilizza il numero di progetto nel flag--network.ILB_IP_ADDRESS: l'indirizzo IP interno della regola di forwarding del bilanciatore del carico interno.
Endpoint diretto
Per configurare Service Directory in modo che instradi il traffico direttamente a un singolo indirizzo IP dell'endpoint VPC di interfaccia AWS, segui questi passaggi:
- Crea un endpoint VPC di interfaccia per Amazon S3 all'interno del tuo VPC AWS. Prendi nota dell'indirizzo IP e della porta di questo endpoint.
Crea uno spazio dei nomi per il tuo cloud remoto:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Sostituisci quanto segue:
NAMESPACE: un identificatore univoco per il tuo spazio dei nomi.PROJECT_ID: il tuo ID progetto Google Cloud .REGION: la regione Google Cloud . Ad esempio,us-east4. Deve essere la stessa regione del catalogo federato.
Crea un servizio nello spazio dei nomi Service Directory:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Sostituisci quanto segue:
SERVICE_NAME: un identificatore univoco per il tuo servizio.
Crea un endpoint nel servizio contenente le informazioni di routing per l'endpoint VPC dell'interfaccia 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
Sostituisci quanto segue:
ENDPOINT_NAME: un identificatore univoco per l'endpoint.S3_VPCE_IP_ADDRESS: l'indirizzo IP dell'endpoint VPC dell'interfaccia Amazon S3. Ad esempio,10.0.1.45.S3_VPCE_PORT: il numero di porta dell'endpoint VPC dell'interfaccia Amazon S3. Ad esempio,443.PROJECT_NUMBER: il tuo numero di progetto Google Cloud. Utilizza il numero di progetto nel flag--network.VPC_NETWORK: il nome della rete VPC Google Cloud associata alla tua interconnessione privata.
Configura la federazione
Per eseguire query sui dati, devi configurare un catalogo federato Lakehouse che si connetta al tuo Databricks Unity Catalog remoto.
Configura l'autenticazione
La federazione richiede l'autenticazione nel catalogo remoto come entità servizio Databricks. Scegli una delle seguenti opzioni di autenticazione:
OIDC
OpenID Connect (OIDC) consente l'autenticazione senza secret tramite la federazione dei token OAuth di Databricks.
- Crea un'entità servizio nel tuo account Databricks con accesso in lettura al catalogo Unity di destinazione e al privilegio
EXTERNAL USE SCHEMAsugli schemi o sul catalogo di destinazione. - Salva l'ID applicazione (UUID) per l'entità servizio. Ti servirà per un passaggio successivo.
Basato su secret
Questa opzione utilizza un ID client OAuth e un client secret archiviati in modo sicuro con i secret di Secret Manager regionali.
Crea un'entità servizio nel tuo account Databricks con accesso in lettura al catalogo Unity di destinazione.
Genera un secret OAuth per l'entità del servizio.
Crea un file JSON denominato
credentials.jsoncon il payload:{ "client_id": "CLIENT_ID", "client_secret": "CLIENT_SECRET" }
Sostituisci quanto segue:
CLIENT_ID: l'ID client OAuth per il service principal di Databricks.CLIENT_SECRET: il client secret OAuth per il service principal di Databricks.
Configura l'endpoint regionale per Secret Manager:
Per impostazione predefinita, Secret Manager utilizza un endpoint globale. Tuttavia, Lakehouse richiede che i secret siano archiviati nella stessa regione del catalogo Lakehouse. Per interagire con i secret regionali utilizzando l'interfaccia a riga di comando
gcloud, devi eseguire l'override dell'endpoint API predefinito per la sessione o il profilo corrente. Ad esempio,secretmanager.us-east4.rep.googleapis.com.gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
Sostituisci quanto segue:
REGION: la regione Google Cloud in cui è archiviato il secret di Secret Manager. Ad esempious-east4. Per evitare problemi di connettività, il secret e il catalogo devono essere creati nella stessa regione.
Carica il payload in Secret Manager:
gcloud secrets create DATABRICKS_SECRET_NAME \ --location="REGION" \ --project="PROJECT_ID" \ --data-file=credentials.json
Sostituisci quanto segue:
DATABRICKS_SECRET_NAME: un nome per il secret di Databricks.PROJECT_ID: il tuo ID progetto Google Cloud .
Crea un catalogo federato
Crea il catalogo federato utilizzando la console Google Cloud o l'interfaccia a riga di comando gcloud.
Considerazioni:
Sono supportati solo i cataloghi Databricks Unity che utilizzano una località esterna su AWS o una località esterna su Google Cloud. I cataloghi Databricks Unity che utilizzano lo spazio di archiviazione predefinito su AWS o lo spazio di archiviazione predefinito su Google Cloud non sono supportati.
Devi abilitare l'accesso ai dati esterni nel metastore utilizzato da Unity Catalog, che è disabilitato per impostazione predefinita.
Devi concedere il privilegio
EXTERNAL USE SCHEMAal service principal di Databricks sugli schemi o sul catalogo di destinazione per abilitare la distribuzione delle credenziali per l'accesso ai dati esterni. Senza questo privilegio, l'aggiornamento dei metadati in background e la distribuzione delle credenziali per le query non andranno a buon fine.
Console
Per creare un catalogo federato:
Nella console Google Cloud , vai a Lakehouse.
Fai clic su Crea catalogo.
Fai clic su Catalogo federato.
Viene visualizzata la sezione Configurazione del catalogo.
In Origine del catalogo federato, seleziona Databricks (Unity).
In Località dei dati, seleziona la regione di Lakehouse in cui vuoi creare il catalogo federato. Ad esempio,
us-east4. Per ridurre al minimo la latenza (anche su internet pubblico), segui questi passaggi quando selezioni una regione:- Se il tuo catalogo Unity si trova su AWS, seleziona la regioneGoogle Cloud più vicina alla tua regione AWS.
- Se il tuo catalogo Unity si trova in Google Cloud, seleziona la stessa regione.
Fai clic su Continua.
Viene visualizzata la sezione Dettagli connessione.
Nella sezione Dettagli del catalogo remoto, nel campo Nome istanza Unity, inserisci il nome dell'istanza Databricks di destinazione. Ad esempio:
abcd.cloud.databricks.com.Nel campo Nome catalogo Unity, inserisci il nome del catalogo Databricks Unity di destinazione con cui eseguire la federazione.
Seleziona un'opzione per Metodo di autenticazione:
- Per OIDC, inserisci l'ID applicazione per l'entità servizio.
- In Secret, inserisci il nome del secret. Utilizza il formato seguente:
projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME.
(Facoltativo) Nella sezione Modalità di identità, seleziona un'opzione:
- Identità di servizio (predefinita): le query vengono eseguite come account di servizio Lakehouse.
- Identità utente: le query vengono eseguite utilizzando l'identità dell'utente finale autenticato e vengono propagate al catalogo remoto. La federazione delle identità deve essere configurata nel catalogo remoto.
(Facoltativo) Nel campo Nome servizio di directory, inserisci il percorso del servizio Service Directory. Ad esempio:
projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME. Questo è necessario solo se stai configurando un'interconnessione privata (Cross-Cloud Interconnect).Fai clic su Crea.
gcloud
OIDC
Se utilizzi OIDC, devi specificare --unity-service-principal-application-id.
Internet pubblico (senza CCI)
Se non configuri CCI, la connessione viene stabilita in modo sicuro sulla rete internet pubblica.
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"
Di proprietà del cliente (CCI)
Se hai configurato un'interconnessione privata (ad esempio Dedicated CCI o Partner CCI), fornisci il riferimento al servizio Service Directory in modo che Lakehouse instradi il traffico privatamente.
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"
Sostituisci quanto segue:
FEDERATED_CATALOG_NAME: un nome per il catalogo federato.PROJECT_ID: il tuo ID progetto Google Cloud .REGION: la regione Lakehouse in cui viene creato il catalogo federato. Deve trovarsi nella stessa regione dello spazio dei nomi di Service Directory e del secret regionale. Per ridurre al minimo la latenza:- Se il tuo catalogo Unity si trova su AWS, seleziona la regioneGoogle Cloud più vicina alla tua regione AWS.
- Se il tuo catalogo Unity si trova in Google Cloud, seleziona esattamente la stessa regione.
UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: l'ID applicazione (UUID) del service principal di Databricks.UNITY_INSTANCE_NAME: il nome dell'istanza Databricks di destinazione. Ad esempio:abcd.cloud.databricks.com.UNITY_CATALOG_NAME: il nome del catalogo Databricks Unity di destinazione con cui eseguire la federazione.REFRESH_INTERVAL: specifica la frequenza con cui viene eseguito l'aggiornamento dei metadati in background. Imposta questo valore come durata, ad esempio330so5m30s.NAMESPACE_FILTERS: (Facoltativo) Un elenco separato da virgole di spazi dei nomi da federare. Ad esempio,ns1,ns2. Se omesso, verranno inclusi tutti gli spazi dei nomi.IDENTITY_MODE: (Facoltativo) specifica la modalità di identità per il catalogo. Imposta suuser-identity-federationper propagare le identità degli utenti finali nelle query o suservice-identityper eseguire le query come account di servizio del catalogo. Se omesso, il valore predefinito èservice-identity.- Se utilizzi un'interconnessione privata (CCI):
SERVICE_DIRECTORY_NAMESPACE: lo spazio dei nomi di Service Directory che hai creato durante la configurazione della connessione privata.SERVICE_NAME: il nome del servizio Service Directory che hai creato durante la configurazione della connessione di interconnessione privata.
Basato su secret
Se utilizzi l'autenticazione basata su secret, devi specificare --secret-name.
Internet pubblico (senza CCI)
Se non configuri CCI, la connessione viene stabilita in modo sicuro sulla rete internet pubblica.
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"
Di proprietà del cliente (CCI)
Se hai configurato un'interconnessione privata (ad esempio Dedicated CCI o Partner CCI), fornisci il riferimento al servizio Service Directory in modo che Lakehouse instradi il traffico privatamente.
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"
Sostituisci quanto segue:
FEDERATED_CATALOG_NAME: un nome per il catalogo federato.PROJECT_ID: il tuo ID progetto Google Cloud .REGION: la regione Lakehouse in cui viene creato il catalogo federato. Deve trovarsi nella stessa regione dello spazio dei nomi di Service Directory e del secret regionale. Per ridurre al minimo la latenza:- Se il tuo catalogo Unity si trova su AWS, seleziona la regioneGoogle Cloud più vicina alla tua regione AWS.
- Se il tuo catalogo Unity si trova in Google Cloud, seleziona esattamente la stessa regione.
DATABRICKS_SECRET_NAME: il nome del tuo secret Databricks.UNITY_INSTANCE_NAME: il nome dell'istanza Databricks di destinazione. Ad esempio:abcd.cloud.databricks.com.UNITY_CATALOG_NAME: il nome del catalogo Databricks Unity di destinazione con cui eseguire la federazione.REFRESH_INTERVAL: specifica la frequenza con cui viene eseguito l'aggiornamento dei metadati in background. Imposta questo valore come durata, ad esempio330so5m30s.NAMESPACE_FILTERS: (Facoltativo) Un elenco separato da virgole di spazi dei nomi da federare. Ad esempio,ns1,ns2. Se omesso, verranno inclusi tutti gli spazi dei nomi.IDENTITY_MODE: (Facoltativo) specifica la modalità di identità per il catalogo. Imposta suuser-identity-federationper propagare le identità degli utenti finali nelle query o suservice-identityper eseguire le query come account di servizio del catalogo. Se omesso, il valore predefinito èservice-identity.- Se utilizzi un'interconnessione privata (CCI):
SERVICE_DIRECTORY_NAMESPACE: lo spazio dei nomi di Service Directory che hai creato durante la configurazione della connessione privata.SERVICE_NAME: il nome del servizio Service Directory che hai creato durante la configurazione della connessione di interconnessione privata.
Completa la configurazione dell'autenticazione
Completa la procedura di autenticazione utilizzando il tipo di autenticazione scelto.
OIDC
Quando viene creato il catalogo, Lakehouse esegue il provisioning di un account di servizio univoco per il catalogo. Devi recuperare l'ID univoco numerico del account di servizio e utilizzarlo per configurare una policy di federazione per l'entità di servizio Databricks.
Recupera l'ID univoco numerico del account di servizio del catalogo Lakehouse:
gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account-id)'
Nel tuo account Databricks, configura una policy di federazione per l'entità servizio creata in precedenza. Utilizza i seguenti valori:
- URL emittente:
https://accounts.google.com - Subject: l'ID univoco numerico del account di servizio del catalogo Lakehouse recuperato nel passaggio precedente.
- Pubblico:
https://accounts.cloud.databricks.com
Assicurati che l'entità servizio Databricks disponga dell'accesso in lettura al catalogo e allo spazio di lavoro di destinazione, nonché del privilegio
EXTERNAL USE SCHEMAsugli schemi o sul catalogo di destinazione.- URL emittente:
Basato su secret
Quando viene creato il catalogo, Lakehouse esegue il provisioning di un account di servizio univoco (restituito come biglake-service-account nella descrizione della risorsa).
Devi concedere a questo account di servizio l'autorizzazione per accedere al secret che hai creato in precedenza. Tieni presente che la propagazione delle policy IAM può richiedere alcuni minuti.
Concedi al account di servizio del catalogo l'autorizzazione per accedere al 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"
Per verificare che l'account di servizio del catalogo federato abbia accesso al secret, esegui questo comando:
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"
Nell'output, verifica che al account di servizio biglake-service-account sia assegnato il ruolo roles/secretmanager.secretAccessor.
Assicurati che l'entità servizio Databricks disponga dell'accesso in lettura al catalogo e allo spazio di lavoro di destinazione, nonché del privilegio EXTERNAL USE SCHEMA sugli schemi o sul catalogo di destinazione.
Completa la configurazione dell'interconnessione privata (solo Cross-Cloud Interconnect)
Se instradi il traffico su un'interconnessione privata (CCI Dedicated o Partner), devi concedere al account di servizio del catalogo Lakehouse le autorizzazioni per rilevare e autorizzare le connessioni tramite Service Directory.
Console
Nella console Google Cloud vai alla pagina IAM.
Fai clic su Concedi l'accesso (o Aggiungi).
Nel campo Nuove entità, inserisci l'indirizzo email del account di servizio di Lakehouse Catalog. Puoi recuperare questo indirizzo email descrivendo il catalogo (vedi la scheda
gcloud).Nel menu Ruolo, seleziona Visualizzatore Service Directory (
roles/servicedirectory.viewer).Fai clic su Aggiungi un altro ruolo e seleziona Servizio autorizzato PSC di Service Directory (
roles/servicedirectory.pscAuthorizedService).Fai clic su Salva.
gcloud
Concedi i ruoli richiesti al account di servizio del catalogo:
# 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"
Verificare la connessione
Verifica che il ciclo di aggiornamento dei metadati in background del catalogo sia stato completato correttamente e che gli spazi dei nomi siano sincronizzati.
Verifica che lo stato di aggiornamento indichi che l'operazione è riuscita:
gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
Verifica che gli spazi dei nomi siano sincronizzati:
gcloud biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"
Configura la federazione delle identità degli utenti (facoltativo)
Se hai configurato la federazione delle identità utente per il tuo catalogo federato, devi configurare una policy di federazione a livello di account in Databricks.
Mentre l'aggiornamento dei metadati in background viene eseguito come account di servizio del catalogo configurato con l'autenticazione di base (OIDC o basata su secret), la federazione delle identità utente richiede questa policy a livello di account in modo che Databricks possa convalidare i token di identità degli utenti finali generati da Google Cloud durante le query interattive. In questo modo Databricks può attribuire le query agli utenti finali, applicare le autorizzazioni e generare audit log.
(Facoltativo) Aggiorna un catalogo esistente:
Se hai un catalogo federato esistente configurato con la modalità di identità del servizio predefinita, puoi aggiornarlo alla federazione delle identità utente senza ricreare il catalogo:
Console
Nella console Google Cloud , vai a Lakehouse.
Nell'elenco dei cataloghi, fai clic sul nome del catalogo federato.
Viene visualizzata la pagina Dettagli catalogo.
Fai clic su Modifica catalogo.
Nella sezione Modalità identità, seleziona Identità utente.
Fai clic su Salva.
gcloud
Esegui il comando
gcloud biglake iceberg catalogs update:gcloud biglake iceberg catalogs update FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --federated-catalog-identity-mode="user-identity-federation"
Recupera le attestazioni OIDC dal tuo catalogo:
Esegui questo comando per recuperare le attestazioni dei token richieste da Databricks:
gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='yaml(federated-catalog-options.user-identity-federation-oidc)'
L'output è simile al seguente:
federated-catalog-options: user-identity-federation-oidc: audience: databricks-12345678-abcd-1234-efgh-1234567890ab issuer-url: https://www.gstatic.com/biglake/federation/organizations/123456789012
Tieni presente quanto segue in merito alla disponibilità dei claim:
issuer-url: derivato dalla tua organizzazione Google Cloud (https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID) e disponibile immediatamente dopo la creazione del catalogo.audience: con ambito limitato al metastore Databricks di destinazione (databricks-METASTORE_ID) e derivato dal metastore Unity Catalog. Poiché questo valore viene compilato dall'aggiornamento dei metadati in background, l'autenticazione di base deve essere completata e l'aggiornamento dei metadati in background deve essere attivo (non impostato su0). Consulta Verifica la connessione per verificare che l'aggiornamento dei metadati in background sia configurato correttamente.
Configura la policy di federazione a livello di account Databricks:
- Nella console dell'account Databricks, vai a Account settings > Security > Identity provider setup (Impostazioni account > Sicurezza > Configurazione del provider di identità).
- Nella sezione Policy di federazione, fai clic su Crea policy.
- Nella finestra di dialogo di configurazione della policy, imposta i seguenti campi:
- URL emittente: inserisci il valore
issuer-urlrecuperato nel passaggio precedente (ad esempio,https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID). - Pubblico: inserisci il valore
audiencecon ambito metastore recuperato nel passaggio precedente (ad esempio,databricks-METASTORE_ID). - Subject claim (Claim oggetto): lascia vuoto (Databricks utilizza per impostazione predefinita il claim
subcontenente l'indirizzo email dell'utente). Databricks utilizza questo indirizzo email per trovare una corrispondenza con gli utenti configurati nel tuo account Databricks.
- URL emittente: inserisci il valore
- Fai clic su Salva.
Verifica la federazione delle identità degli utenti e l'audit logging:
Per verificare l'esecuzione delle query attribuite agli utenti e l'audit logging:
Segui Esegui query sui dati remoti per eseguire una query in BigQuery su una tabella federata.
In Databricks, verifica che l'evento di accesso alla query sia registrato nei log di controllo di Databricks. Esegui una query sulla tabella di sistema
system.access.auditnell'editor SQL di Databricks (consulta il riferimento per l'audit log di Databricks). Tieni presente che gli eventi controllabili possono richiedere 15 minuti o più per essere visualizzati nei log di controllo di Databricks: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;
Passaggi successivi
- Esegui query sui dati remoti.
- Risolvi i problemi di accesso ai dati cross-cloud per Databricks Unity Catalog.