Nel catalogo di runtime Lakehouse, le regole del perimetro dei Controlli di servizio VPC per gli endpoint del catalogo federato ti consentono di eseguire query su tabelle Apache Iceberg esterne in BigQuery, contribuendo al contempo a prevenire l'esfiltrazione di dati. Quando i tuoi progetti o bucket Cloud StorageGoogle Cloud si trovano all'interno di un perimetro di servizio, puoi configurare regole in uscita per Amazon S3 e Microsoft Azure Data Lake Storage (ADLS) Gen2 o regole in entrata per Cloud Storage. Queste regole autorizzano la sincronizzazione dei metadati e le query per le tabelle registrate in AWS Glue Data Catalog, Databricks Unity Catalog, Snowflake Horizon Catalog e Workday Data Lake.
Se i tuoi progetti non si trovano all'interno di un perimetro di servizio, gli endpoint del catalogo federato funzionano senza alcuna configurazione dei Controlli di servizio VPC. Per le connessioni cross-cloud a SAP Business Data Cloud (SAP BDC), consulta Configurazione dei Controlli di servizio VPC per SAP BDC. Per proteggere i bucket a cui si accede tramite l'endpoint del catalogo REST Apache Iceberg in modalità di distribuzione delle credenziali, consulta Utilizza i Controlli di servizio VPC con la distribuzione delle credenziali.
Prima di iniziare
- Configura un endpoint del catalogo federato per AWS Glue Data Catalog, Databricks Unity Catalog, Snowflake Horizon Catalog o Workday Data Lake.
Crea uno o più perimetri di servizio per i tuoi progetti, a seconda di dove sono archiviati i file delle tabelle:
- Spazio di archiviazione sul cloud esterno (Amazon S3 o ADLS Gen2): proteggi il progetto dell'endpoint del catalogo federato con un perimetro che limita
biglake.googleapis.comebigquery.googleapis.com. Per la regola in uscita richiesta, consulta Aggiungi una regola in uscita per lo spazio di archiviazione cloud esterno. - Cloud Storage: proteggi il progetto del bucket Cloud Storage con un perimetro che limita
storage.googleapis.com. Il progetto del bucket e il progetto dell'endpoint del catalogo federato possono condividere un singolo perimetro o risiedere in perimetri separati. Per la regola in entrata richiesta, consulta Aggiungi una regola in entrata per i bucket Cloud Storage in un perimetro di servizio.
- Spazio di archiviazione sul cloud esterno (Amazon S3 o ADLS Gen2): proteggi il progetto dell'endpoint del catalogo federato con un perimetro che limita
Se utenti o service account esterni al perimetro eseguono query sull'endpoint del catalogo federato, aggiungi una regola in entrata che li ammetta al perimetro del progetto dell'endpoint del catalogo.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare i perimetri di servizio, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua organizzazione:
-
Configura i perimetri di servizio e le policy in entrata o in uscita:
Editor di Gestore contesto accesso (
roles/accesscontextmanager.policyEditor)
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.
Casi d'uso e regole perimetrali obbligatorie
Le regole del perimetro che configuri dipendono dalla posizione dei file delle tabelle e da dove vengono eseguiti i chiamanti delle query:
| Caso d'uso | Regola del perimetro obbligatoria | Passaggi di configurazione |
|---|---|---|
Esegui query su tabelle cross-cloud in Amazon S3 o ADLS Gen2: esegui query su tabelle Apache Iceberg in bucket s3:// o container abfss:// tramite un endpoint del catalogo federato in un progetto BigQuery protetto, bloccando al contempo il traffico in uscita esterno non autorizzato. |
Aggiungi una regola in uscita nel perimetro del progetto dell'endpoint del catalogo che consenta sia al account di servizio blirc-... dell'endpoint del catalogo sia alle entità di query di leggere i bucket o i container esterni approvati. |
Trova l'account di servizio dell'endpoint del catalogo, quindi aggiungi una regola in uscita per lo spazio di archiviazione sul cloud esterno. |
Accedi alle tabelle del catalogo esterno nei bucket Cloud Storage protetti: esegui query sulle tabelle Databricks Unity Catalog o Snowflake Horizon Catalog archiviate in un bucket gs:// all'interno di un perimetro che limita storage.googleapis.com (anche nello stesso progetto e perimetro dell'endpoint del catalogo federato). |
Aggiungi una regola in entrata sul perimetro del progetto del bucket Cloud Storage che consenta al service account Google Cloud del catalogo remoto di accedere a storage.googleapis.com. |
Aggiungi una regola in entrata per i bucket Cloud Storage in un perimetro di servizio. |
| Consenti query da chiamanti esterni al perimetro dell'endpoint del catalogo: esegui job BigQuery nel progetto dell'endpoint del catalogo da account di analisti, strumenti di BI o service account dei workload situati all'esterno del perimetro. | Aggiungi una regola in entrata nel perimetro del progetto dell'endpoint del catalogo che ammette i chiamanti esterni a bigquery.googleapis.com e biglake.googleapis.com, oltre alla regola di archiviazione per la posizione della tabella. |
Configura l'accesso del chiamante utilizzando il riferimento alle regole di accesso, quindi segui la procedura di archiviazione per la posizione della tabella. |
In che modo i Controlli di servizio VPC valutano il traffico degli endpoint del catalogo federato
Un endpoint del catalogo federato esegue due operazioni distinte che leggono dallo spazio di archiviazione sottostante: la sincronizzazione dei metadati e le query BigQuery. Il modo in cui i Controlli di servizio VPC valutano queste operazioni dipende dalla posizione in cui sono archiviati i file delle tabelle:
Cloud spazio di archiviazione sul cloud (Amazon S3 o Azure Data Lake Storage Gen2): i Controlli di servizio VPC valutano il traffico in uscita dal perimetro di servizio del progetto dell'endpoint del catalogo rispetto all'identità del chiamante suGoogle Cloud e al bucket o container esterno di destinazione:
Operazione Identità valutata Risorsa valutata Sincronizzazione dei metadati Il account di servizio Lakehouse con provisioning automatico dell'endpoint del catalogo ( blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com)Il bucket o container esterno che contiene i metadati Apache Iceberg della tabella Query L'account utente o di servizio che esegue il job BigQuery I bucket o i container esterni che contengono i file di metadati e di dati della tabella Per le tabelle archiviate in Amazon S3 o ADLS Gen2, la regola in uscita del perimetro deve includere quanto segue:
- Identità: sia il account di servizio dell'endpoint del catalogo sia le entità della query.
- Risorse esterne: ogni bucket o container utilizzato dalle tabelle per i file di metadati e di dati.
- Operazioni: sia
bigquery.googleapis.com(con l'autorizzazioneexternalResource.read) siabiglake.googleapis.com(con tutti i metodi,'*').
Cloud Storage (Databricks Unity Catalog o Snowflake Horizon Catalog, posizioni esterne su Google Cloud): sia durante la sincronizzazione dei metadati sia durante le query BigQuery, BigQuery e Lakehouse leggono da Cloud Storage utilizzando le credenziali con ambito ridotto fornite dal catalogo remoto anziché dal account di servizio account
blirc-...dell'endpoint del catalogo. Quando il progetto del bucket Cloud Storage si trova all'interno di un perimetro di servizio che limitastorage.googleapis.com,storage.googleapis.comvaluta il service account del catalogo remoto Google Cloud come un'identità esterna che tenta l'ingresso nel perimetro. Questa valutazione si applica anche quando il bucket si trova nello stesso progetto e nello stesso perimetro di servizio dell'endpoint del catalogo federato. Devi aggiungere una regola in entrata al perimetro di servizio del progetto del bucket che consenta al service accountGoogle Cloud del catalogo remoto di accedere astorage.googleapis.com.
I Controlli di servizio VPC valutano solo le letture dello spazio di archiviazione eseguite da BigQuery e Lakehouse (biglake.googleapis.com). Non valutano le chiamate effettuate da Lakehouse all'endpoint API del catalogo remoto (ad esempio l'elenco di spazi dei nomi e tabelle) e non regolano i motori di query esterni che leggono direttamente lo spazio di archiviazione.
Formati delle risorse esterne
Specifica le risorse esterne nelle regole in uscita come URI esatto del bucket o del container.
I percorsi degli oggetti e i caratteri jolly non sono supportati. I nomi dei bucket, dei container e degli account di archiviazione devono essere in minuscolo. Le regole che contengono caratteri maiuscoli in questi nomi vengono rifiutate quando le salvi. Gli URI di Azure Data Lake Storage Gen2 (abfss://) e Azure Blob Storage (azure://) non sono intercambiabili nelle regole in uscita dei Controlli di servizio VPC. Per gli endpoint del catalogo federato, devi specificare il formato abfss://.
La tabella seguente mostra i formati URI delle risorse esterne supportati per gli endpoint del catalogo federato:
| Servizio di archiviazione | Formato | Esempio |
|---|---|---|
| Amazon S3 | s3://BUCKET_NAME |
s3://my-iceberg-warehouse |
| Azure Data Lake Storage Gen2 | abfss://CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net |
abfss://unity-catalog-storage@mystorageaccount.dfs.core.windows.net |
Trova il account di servizio dell'endpoint del catalogo
Lakehouse esegue il provisioning di un account di servizio dedicato per ogni endpoint del catalogo federato quando crei l'endpoint del catalogo. Per le tabelle in Cloud Storage, vai a Aggiungi una regola in entrata per i bucket Cloud Storage in un perimetro di servizio. Se le tabelle sono archiviate in Amazon S3 o ADLS Gen2, recupera questo indirizzo email del account di servizio per la regola in uscita:
gcloud biglake iceberg catalogs describe CATALOG_ID \
--project=PROJECT_ID \
--format='value(biglake-service-account)'
Sostituisci quanto segue:
CATALOG_ID: l'ID dell'endpoint del catalogo federato.PROJECT_ID: l'ID del progetto Google Cloudche contiene l'endpoint del catalogo federato.
Il comando restituisce un indirizzo email nel seguente formato:
blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com
Aggiungi una regola in uscita per lo spazio di archiviazione sul cloud esterno
Se le tabelle a cui accedi tramite l'endpoint del catalogo federato sono archiviate in Amazon S3 o ADLS Gen2, aggiungi una regola in uscita al perimetro di servizio che protegge il progetto dell'endpoint del catalogo.
Console
Nella console Google Cloud , vai alla pagina Controlli di servizio VPC.
Seleziona la tua organizzazione e la policy di accesso, quindi fai clic sul nome del perimetro di servizio che contiene il progetto dell'endpoint del catalogo.
Fai clic su Modifica e poi, nella sezione Policy in uscita, fai clic su Aggiungi una regola in uscita.
Nella sezione Da, in Identità, seleziona Seleziona identità e gruppi, fai clic su Aggiungi identità e aggiungi il account di servizio dell'endpoint del catalogo e gli utenti o i service account che eseguono query.
Nella sezione A:
- Seleziona Risorse esterne, fai clic su Aggiungi risorse, inserisci ogni bucket
s3://o containerabfss://utilizzato dalle tabelle e fai clic su Aggiungi risorse esterne. - In Operazioni o ruoli IAM, configura i seguenti servizi nella tabella Operazioni API:
- API BigQuery (
bigquery.googleapis.com): per limitare la voce predefinita di tutti i metodi (*) all'accesso di sola lettura, apri il menu Azioni perbigquery.googleapis.come fai clic su Modifica, seleziona Seleziona metodi, seleziona l'autorizzazioneexternalResource.reade fai clic su Aggiungi metodi selezionati. - API BigLake (
biglake.googleapis.com): fai clic su Aggiungi operazioni, seleziona API BigLake (biglake.googleapis.com), seleziona Tutti i metodi e fai clic su Aggiungi tutti i metodi.
- API BigQuery (
- Seleziona Risorse esterne, fai clic su Aggiungi risorse, inserisci ogni bucket
Fai clic su Salva.
gcloud CLI
Crea un file denominato
egress.yamlche specifichi il account di servizio dell'endpoint del catalogo, le entità della query e ogni bucket o container esterno utilizzato dalle tabelle. Per lo schema completo, consulta il riferimento per le regole in uscita.- egressFrom: identities: - serviceAccount:CATALOG_ENDPOINT_SERVICE_ACCOUNT - user:QUERY_USER_EMAIL egressTo: externalResources: - s3://S3_BUCKET_NAME - abfss://ADLS_CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net operations: - serviceName: bigquery.googleapis.com methodSelectors: - permission: externalResource.read - serviceName: biglake.googleapis.com methodSelectors: - method: '*'Sostituisci quanto segue:
CATALOG_ENDPOINT_SERVICE_ACCOUNT: l'indirizzo email del account di servizio dell'endpoint del catalogo che hai recuperato in precedenza.QUERY_USER_EMAIL: l'indirizzo email di un utente o di un account di servizio che esegue query tramite l'endpoint del catalogo federato. Per un account di servizio, utilizza il prefissoserviceAccount:anzichéuser:. In alternativa, sostituisciidentitiesconidentityType: ANY_IDENTITYper consentire l'accesso a qualsiasi entità nel perimetro.S3_BUCKET_NAME,ADLS_CONTAINEReSTORAGE_ACCOUNT: le posizioni di archiviazione esterne che contengono i metadati e i file di dati della tabella. Includi solo le voci applicabili al tuo provider di spazio di archiviazione.
Trova l'ID numerico della policy di accesso della tua organizzazione:
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Sostituisci
ORGANIZATION_IDcon l'ID numerico dell'organizzazione.Applica la regola in uscita al perimetro di servizio:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --policy=POLICY_ID \ --set-egress-policies=egress.yamlSostituisci quanto segue:
PERIMETER_NAME: il nome del perimetro di servizio.POLICY_ID: l'ID numerico della policy di accesso.
Per testare la regola prima di applicarla, applicala a una configurazione dry run utilizzando
gcloud access-context-manager perimeters dry-run updatee applicala dopo la convalida utilizzandogcloud access-context-manager perimeters dry-run enforce.Verifica che la regola sia attiva:
gcloud access-context-manager perimeters describe PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.egressPolicies)'
Aggiungi una regola in entrata per i bucket Cloud Storage in un perimetro di servizio
Se le tabelle di un catalogo remoto (come Databricks Unity Catalog o Snowflake Horizon Catalog) sono archiviate in un bucket Cloud Storage protetto da un perimetro che limita storage.googleapis.com, aggiungi una regola in entrata al perimetro di servizio del progetto del bucket. Poiché BigQuery e Lakehouse si autenticano in Cloud Storage utilizzando il service account Google Cloud del catalogo remoto (non il service account blirc-...), questa regola è obbligatoria anche quando il bucket si trova nello stesso progetto e nello stesso perimetro dell'endpoint del catalogo federato.
Console
Nella console Google Cloud , vai alla pagina Controlli di servizio VPC.
Seleziona l'organizzazione e la policy di accesso, quindi fai clic sul nome del perimetro di servizio che protegge il progetto contenente il bucket Cloud Storage.
Fai clic su Modifica e poi, nella sezione Policy in entrata, fai clic su Aggiungi una regola in entrata.
Nella sezione Da:
- In Identità, seleziona Seleziona identità e gruppi, fai clic su Aggiungi identità e aggiungi il service account Google Cloud di cui il catalogo remoto ha eseguito il provisioning per il tuo bucket Cloud Storage.
- In Origini, seleziona Tutte le origini (o seleziona Seleziona origini per specificare un livello di accesso).
Nella sezione A:
- In Risorse, seleziona Seleziona risorse. Nella scheda Progetti, fai clic su Aggiungi progetti, seleziona il progetto che contiene il bucket Cloud Storage e fai clic su Aggiungi progetti selezionati.
- In Operazioni o ruoli IAM, seleziona Seleziona operazioni, fai clic su Aggiungi operazioni, seleziona API Cloud Storage (
storage.googleapis.com), seleziona Tutti i metodi e fai clic su Aggiungi tutti i metodi. In alternativa, seleziona Seleziona metodi per scegliere metodi di servizio supportati specifici (ad esempiogoogle.storage.objects.get,google.storage.objects.listegoogle.storage.buckets.get) e fai clic su Aggiungi metodi selezionati.
Fai clic su Salva.
gcloud CLI
Crea un file denominato
ingress.yamlche consenta al service accountGoogle Cloud del catalogo remoto di accedere astorage.googleapis.comnel progetto del bucket. Per lo schema completo, consulta il riferimento per le regole in entrata.- ingressFrom: identities: - serviceAccount:REMOTE_CATALOG_GCS_SERVICE_ACCOUNT sources: - accessLevel: '*' ingressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: '*' resources: - projects/BUCKET_PROJECT_NUMBERSostituisci quanto segue:
REMOTE_CATALOG_GCS_SERVICE_ACCOUNT: l'indirizzo email del service accountGoogle Cloud di cui il catalogo remoto ha eseguito il provisioning per accedere al bucket Cloud Storage (ad esempio, daDESCRIBE STORAGE CREDENTIALin Databricks Unity Catalog oDESC EXTERNAL VOLUMEin Snowflake Horizon Catalog).BUCKET_PROJECT_NUMBER: il numero di progetto numerico del progetto che contiene il bucket Cloud Storage.
Trova l'ID numerico della policy di accesso della tua organizzazione:
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Sostituisci
ORGANIZATION_IDcon l'ID numerico dell'organizzazione.Applica la regola di ingresso al perimetro di servizio che protegge il progetto del bucket:
gcloud access-context-manager perimeters update BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --set-ingress-policies=ingress.yamlSostituisci quanto segue:
BUCKET_PERIMETER_NAME: il nome del perimetro di servizio che protegge il progetto del bucket.POLICY_ID: l'ID numerico della policy di accesso.
Per testare la regola prima di applicarla, applicala a una configurazione dry run utilizzando
gcloud access-context-manager perimeters dry-run updatee applicala dopo la convalida utilizzandogcloud access-context-manager perimeters dry-run enforce.Verifica che la regola sia attiva:
gcloud access-context-manager perimeters describe BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.ingressPolicies)'
Verificare la configurazione
La propagazione degli aggiornamenti delle policy del perimetro di servizio può richiedere fino a 30 minuti. Dopo l'applicazione della regola, verifica che la sincronizzazione dei metadati e le query BigQuery vengano completate senza rifiuti dei Controlli di servizio VPC:
Attendi il completamento del ciclo di sincronizzazione dei metadati pianificato successivo, quindi controlla gli audit log con negazione delle policy in Cloud Audit Logs per verificare che non si verifichino violazioni dei Controlli di servizio VPC. La sincronizzazione viene eseguita automaticamente in base alla pianificazione di aggiornamento e non può essere attivata manualmente.
In Esplora log, seleziona il progetto protetto: il progetto dell'endpoint del catalogo per lo spazio di spazio di archiviazione sul cloud esterno o il progetto del bucket Cloud Storage per le tabelle Cloud Storage. Per saperne di più, consulta Recupera gli errori dei Controlli di servizio VPC dagli audit log. Esegui questa query:
log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"Se le voci di violazione vengono visualizzate dopo la propagazione della regola, controlla i campi
egressViolations.targetResource,ingressViolations.targetResourceeauthenticationInfo.principalEmailnella voce di log per verificare che corrispondano alle risorse e alle identità nella regola. Se la sincronizzazione delle nuove tabelle non riesce e non vengono visualizzate vociVpcServiceControlAuditMetadata, controlla le autorizzazioni e le credenziali del catalogo remoto. Consulta Risolvi i problemi di accesso ai dati cross-cloud.Esegui una query di test su una tabella in BigQuery utilizzando la convenzione di denominazione P.C.N.T (Project.Catalog.Namespace.Table) in quattro parti:
SELECT COUNT(*) FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`;Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto Google Cloudche contiene l'endpoint del catalogo federato.CATALOG_ID: l'ID dell'endpoint del catalogo federato.NAMESPACE: lo spazio dei nomi nell'endpoint del catalogo federato.TABLE_NAME: il nome di una tabella nello spazio dei nomi.
Se una query è bloccata dai Controlli di servizio VPC, il messaggio di errore include un valore
vpcServiceControlsUniqueIdentifier. Filtra gli audit log di policy rifiutate in Esplora log facendo corrispondereprotoPayload.metadata.vpcServiceControlsUniqueIda questo identificatore:log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata" protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_IDENTIFIER"Sostituisci
UNIQUE_IDENTIFIERcon il valorevpcServiceControlsUniqueIdentifierdel messaggio di errore.
Passaggi successivi
- Esegui query sui dati remoti
- Panoramica della distribuzione delle credenziali
- Regole in entrata e in uscita dei Controlli di servizio VPC
- Risolvi i problemi di accesso ai dati cross-cloud