Caso d'uso: controllo dell'accesso per un cluster Managed Service for Apache Spark in un altro progetto

Questa pagina descrive la gestione del controllo dell'accesso quando esegui il deployment e l'esecuzione di una pipeline che utilizza cluster Managed Service for Apache Spark in un altro progetto Google Cloud .

Scenario

Per impostazione predefinita, quando un'istanza Cloud Data Fusion viene avviata in un progettoGoogle Cloud , esegue il deployment e l'esecuzione delle pipeline utilizzando cluster Managed Service for Apache Spark all'interno dello stesso progetto. Tuttavia, la tua organizzazione potrebbe richiedere l'utilizzo di cluster in un altro progetto. Per questo caso d'uso, devi gestire l'accesso tra i progetti. La pagina seguente descrive come modificare le configurazioni di base (predefinite) e applicare i controlli dell'accesso appropriati.

Prima di iniziare

Per comprendere le soluzioni in questo caso d'uso, devi disporre del seguente contesto:

Ipotesi e ambito

Questo caso d'uso presenta i seguenti requisiti:

  • Un'istanza Cloud Data Fusion privata. Per motivi di sicurezza, un'organizzazione potrebbe richiedere l'utilizzo di questo tipo di istanza.
  • Un'origine e un sink BigQuery.
  • Controllo dell'accesso con IAM, non con controllo dell'accesso basato sui ruoli (RBAC).

Soluzione

Questa soluzione confronta l'architettura e la configurazione di base e specifiche per il caso d'uso.

Architettura

I seguenti diagrammi confrontano l'architettura del progetto per la creazione di un'istanza Cloud Data Fusion e l'esecuzione di pipeline quando utilizzi cluster nello stesso progetto (baseline) e in un progetto diverso tramite il VPC del progetto tenant.

Architettura di base

Questo diagramma mostra l'architettura di base dei progetti:

Architettura del progetto tenant, cliente e Dataproc in Cloud Data Fusion.

Per la configurazione di base, crea un'istanza privata di Cloud Data Fusion ed esegui una pipeline senza personalizzazioni aggiuntive:

  • Utilizzi uno dei profili di calcolo integrati
  • L'origine e il sink si trovano nello stesso progetto dell'istanza
  • A nessuno dei service account sono stati concessi ruoli aggiuntivi

Per saperne di più sui progetti tenant e cliente, consulta la sezione Networking.

Architettura dei casi d'uso

Questo diagramma mostra l'architettura del progetto quando utilizzi i cluster in un altro progetto:

Architettura del progetto tenant, cliente e Dataproc in Cloud Data Fusion.

Configurazioni

Le sezioni seguenti confrontano le configurazioni di base con le configurazioni specifiche del caso d'uso per l'utilizzo dei cluster Managed Service for Apache Spark in un progetto diverso tramite il VPC del progetto tenant predefinito.

Nelle seguenti descrizioni dei casi d'uso, il progetto cliente è quello in cui viene eseguita l'istanza Cloud Data Fusion e il progetto Managed Service for Apache Spark è quello in cui viene avviato il cluster Managed Service for Apache Spark.

VPC e istanza del progetto tenant

Base di riferimento Caso d'uso
Nel diagramma dell'architettura di base precedente, il progetto tenant contiene i seguenti componenti:
  • Il VPC predefinito, creato automaticamente.
  • Il deployment fisico dell'istanza Cloud Data Fusion.
Per questo caso d'uso non è necessaria alcuna configurazione aggiuntiva.

Progetto cliente

Base di riferimento Caso d'uso
Il progetto Google Cloud è dove esegui il deployment e l'esecuzione delle pipeline. Per impostazione predefinita, i cluster Managed Service for Apache Spark vengono avviati in questo progetto quando esegui le pipeline. In questo caso d'uso, gestisci due progetti. In questa pagina, il progetto cliente si riferisce a dove viene eseguita l'istanza Cloud Data Fusion.
Il progetto Managed Service for Apache Spark si riferisce a dove vengono avviati i cluster Managed Service for Apache Spark.

VPC cliente

Base di riferimento Caso d'uso

Dal tuo punto di vista (quello del cliente), il VPC del cliente è dove si trova logicamente Cloud Data Fusion.


Aspetto chiave:
puoi trovare i dettagli del VPC del cliente nella pagina delle reti VPC del tuo progetto.

Vai a Reti VPC

Per questo caso d'uso non è necessaria alcuna configurazione aggiuntiva.

Subnet Cloud Data Fusion

Base di riferimento Caso d'uso

Dal tuo punto di vista (quello del cliente), questa subnet è dove Cloud Data Fusion si trova logicamente.


Aspetto chiave
La regione di questa subnet è la stessa della posizione dell'istanza Cloud Data Fusion nel progetto tenant.
Per questo caso d'uso non è necessaria alcuna configurazione aggiuntiva.

Subnet Managed Service for Apache Spark

Base di riferimento Caso d'uso

La subnet in cui vengono avviati i cluster Managed Service for Apache Spark quando esegui una pipeline.


Concetti chiave:
  • Per questa configurazione di base, Managed Service for Apache Spark viene eseguito nella stessa subnet dell'istanza Cloud Data Fusion.
  • Cloud Data Fusion individua una subnet nella stessa regione sia dell'istanza che della subnet di Cloud Data Fusion. Se in questa regione è presente una sola subnet, le subnet sono uguali.
  • La subnet Managed Service for Apache Spark deve avere l'accesso privato Google.

Si tratta di una nuova subnet in cui vengono avviati i cluster Managed Service for Apache Spark quando esegui una pipeline.


Concetti chiave:
  • Per questa nuova subnet, imposta l'accesso privato Google su On.
  • La subnet Managed Service for Apache Spark non deve trovarsi nella stessa posizione dell'istanza Cloud Data Fusion.

Origini e sink

Base di riferimento Caso d'uso

Le origini da cui vengono estratti i dati e i sink in cui vengono caricati, come le origini e i sink BigQuery.


Concetto chiave:
  • I job che recuperano e caricano i dati devono essere elaborati nella stessa posizione del set di dati, altrimenti si verifica un errore.
Le configurazioni di controllo dell'accesso specifiche per il caso d'uso in questa pagina sono per origini e sink BigQuery.

Cloud Storage

Base di riferimento Caso d'uso

Il bucket di archiviazione nel progetto del cliente che consente di trasferire i file tra Cloud Data Fusion e Managed Service for Apache Spark.


Concetti chiave:
  • Puoi specificare questo bucket tramite l'interfaccia web di Cloud Data Fusion nelle impostazioni del profilo di calcolo per i cluster temporanei.
  • Per le pipeline batch e in tempo reale o i job di replica: se non specifichi un bucket nel profilo di calcolo, Cloud Data Fusion crea un bucket nello stesso progetto dell'istanza a questo scopo.
  • Anche per i cluster Managed Service for Apache Spark statici, in questa configurazione di base, il bucket viene creato da Cloud Data Fusion e differisce dai bucket temporanei e di staging di Managed Service for Apache Spark.
  • L'service agent API Data Fusion dispone di autorizzazioni integrate per creare questo bucket nel progetto contenente l'istanza Cloud Data Fusion.
Per questo caso d'uso non è necessaria alcuna configurazione aggiuntiva.

Bucket temporanei utilizzati dall'origine e dal sink

Base di riferimento Caso d'uso

I bucket temporanei creati dai plug-in per le origini e i sink, come i job di caricamento avviati dal plug-in di sink BigQuery.


Concetti chiave:
  • Puoi definire questi bucket quando configuri le proprietà dei plug-in di origine e sink.
  • Se non definisci un bucket, ne viene creato uno nello stesso progetto in cui viene eseguito Managed Service for Apache Spark.
  • Se il set di dati è multiregionale, il bucket viene creato nello stesso ambito.
  • Se definisci un bucket nella configurazione del plug-in, la regione del bucket deve corrispondere a quella del set di dati.
  • Se non definisci un bucket nelle configurazioni del plug-in, quello che viene creato per te viene eliminato al termine della pipeline.
Per questo caso d'uso, il bucket può essere creato in qualsiasi progetto.

Bucket che sono origini o destinazioni dei dati per i plug-in

Base di riferimento Caso d'uso
Bucket dei clienti, che specifichi nelle configurazioni dei plug-in, come il plug-in Cloud Storage e il plug-in FTP to Cloud Storage. Per questo caso d'uso non è necessaria alcuna configurazione aggiuntiva.

IAM: Cloud Data Fusion API Service Agent

Base di riferimento Caso d'uso

Quando l'API Data Fusion è abilitata, il ruolo Cloud Data Fusion API Service Agent (roles/datafusion.serviceAgent) viene concesso automaticamente al service account Cloud Data Fusion, il service agent principale.


Concetti chiave:
  • Il ruolo contiene le autorizzazioni per i servizi nello stesso progetto dell'istanza, ad esempio BigQuery e Managed Service for Apache Spark. Per tutti i servizi supportati, consulta i dettagli del ruolo.
  • Il account di servizio Cloud Data Fusion esegue le seguenti operazioni:
    • Comunicazione del piano dati (progettazione ed esecuzione della pipeline) con altri servizi (ad esempio, comunicazione con Cloud Storage, BigQuery e Datastream in fase di progettazione).
    • Esegui il provisioning dei cluster Managed Service for Apache Spark.
  • Se esegui la replica da un'origine Oracle, a questo account di servizio devono essere assegnati anche i ruoli Amministratore Datastream e Amministratore Storage nel progetto in cui viene eseguito il job. Questa pagina non tratta un caso d'uso di replica.

Per questo caso d'uso, concedi il ruolo Agente di servizio API Cloud Data Fusion alaccount di serviziot nel progetto Managed Service for Apache Spark. Poi concedi i seguenti ruoli in quel progetto:

  • Ruolo Utente di rete Compute
  • Ruolo Editor Dataproc

IAM: account di servizio Managed Service for Apache Spark

Base di riferimento Caso d'uso

L'account di servizio utilizzato per eseguire la pipeline come job all'interno del cluster Managed Service for Apache Spark. Per impostazione predefinita, è l'account di servizio Compute Engine.


(Facoltativo) Nella configurazione di base, puoi modificare il account di servizio predefinito con un altro account di servizio dello stesso progetto. Concedi i seguenti ruoli IAM al nuovo account di servizio:

  • Il ruolo Cloud Data Fusion Runner. Questo ruolo consente a Managed Service for Apache Spark di comunicare con l'API Cloud Data Fusion.
  • Il ruolo Dataproc Worker. Questo ruolo consente l'esecuzione dei job sui cluster Managed Service for Apache Spark.
Concetti chiave:
  • Al account di servizio dell'agente API per il nuovo servizio deve essere concesso il ruolo Utente service account sul service account Managed Service for Apache Spark in modo che l'agente API di servizio possa utilizzarlo per avviare i cluster Managed Service for Apache Spark.

Questo esempio di caso d'uso presuppone che tu utilizzi il account di servizio Compute Engine predefinito (PROJECT_NUMBER-compute@developer.gserviceaccount.com) del progetto Managed Service for Apache Spark.


Concedi i seguenti ruoli al service account Compute Engine predefinito nel progetto Managed Service for Apache Spark.

  • Ruolo Dataproc Worker
  • Il ruolo Amministratore Storage (o, come minimo, l'autorizzazione `storage.buckets.create`) per consentire a Managed Service for Apache Spark di creare bucket temporanei per BigQuery.
  • Ruolo Utente job BigQuery. Questo ruolo consente a Managed Service for Apache Spark di creare job di caricamento. I job vengono creati per impostazione predefinita nel progetto Managed Service for Apache Spark.
  • Ruolo Editor set di dati BigQuery. Questo ruolo consente a Managed Service for Apache Spark di creare set di dati durante il caricamento dei dati.

Concedi il ruolo Utente service account al service account Cloud Data Fusion nel account di servizio Compute Engine predefinito del progetto Managed Service for Apache Spark. Questa azione deve essere eseguita nel progetto Managed Service for Apache Spark.

Aggiungi il account di servizio Compute Engine predefinito del progetto Managed Service for Apache Spark al progetto Cloud Data Fusion. Concedi anche i seguenti ruoli:

  • Il ruolo Storage Object Viewer per recuperare gli artefatti correlati al job della pipeline dal bucket consumer di Cloud Data Fusion.
  • Ruolo Cloud Data Fusion Runner, in modo che il cluster Managed Service for Apache Spark possa comunicare con Cloud Data Fusion durante l'esecuzione.

API

Base di riferimento Caso d'uso
Quando abiliti l'API Cloud Data Fusion, vengono abilitate anche le seguenti API. Per saperne di più su queste API, vai alla pagina API e servizi del tuo progetto.

Vai ad API e servizi

  • API Cloud Autoscaling
  • API Dataproc
  • API Cloud Dataproc Control
  • API del cloud DNS
  • API Cloud OS Login
  • API Pub/Sub
  • API Compute Engine
  • API Container Filesystem
  • API Container Registry
  • API Service Account Credentials
  • API Identity and Access Management
  • API Kubernetes Engine

Quando abiliti l'API Cloud Data Fusion, i seguenti service account vengono aggiunti automaticamente al tuo progetto:

  • Agente di servizio API di Google
  • Agente di servizio Compute Engine
  • Kubernetes Engine Service Agent
  • Service agent Google Container Registry
  • Agente di servizio Google Cloud Dataproc
  • Cloud KMS Service Agent
  • Service account Cloud Pub/Sub
Per questo caso d'uso, abilita le seguenti API nel progetto che contiene il progetto Managed Service for Apache Spark, se non sono già abilitate:
  • API Compute Engine
  • API Dataproc
  • API Cloud Resource Manager

Chiavi di crittografia

Base di riferimento Caso d'uso

Nella configurazione di base, le chiavi di crittografia possono essere gestite da Google o CMEK


Concetti chiave:

Se utilizzi CMEK, la configurazione di base richiede quanto segue:

  • La chiave deve essere regionale e creata nella stessa regione dell'istanza Cloud Data Fusion.
  • Concedi il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS ai seguenti service account a livello di chiave (non nella pagina IAM della console Google Cloud ) nel progetto in cui è stato creato:
    • Account di servizio API Cloud Data Fusion
    • Account di servizio Managed Service for Apache Spark, ovvero il service agent Compute Engine (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) per impostazione predefinita
    • Service agent Google Cloud Dataproc (service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com)
    • Service agent Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

A seconda dei servizi utilizzati nella pipeline, ad esempio BigQuery o Cloud Storage, ai service account deve essere concesso anche il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS:

  • L'account di servizio BigQuery (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • Il account di servizio Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • Il account di servizio Spanner (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Se non utilizzi CMEK, non sono necessarie ulteriori modifiche per questo caso d'uso.

Se utilizzi CMEK, il ruolo Cloud KMS CryptoKey Encrypter/Decrypter deve essere fornito al seguente account di servizio a livello di chiave nel progetto in cui viene creato:

  • Service agent Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

A seconda dei servizi utilizzati nella pipeline, ad esempio BigQuery o Cloud Storage, anche ad altri service account deve essere concesso il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS a livello di chiave. Ad esempio:

  • L'account di servizio BigQuery (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • Il account di servizio Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • Account di servizio Spanner (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Dopo aver apportato queste configurazioni specifiche per il caso d'uso, la pipeline di dati può iniziare a essere eseguita sui cluster di un altro progetto.

Passaggi successivi