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 i 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 privata di Cloud Data Fusion. 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 del caso d'uso.

Architettura

I seguenti diagrammi confrontano l'architettura del progetto per la creazione di un'istanza di 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
  • Non sono stati concessi ruoli aggiuntivi a nessuno dei service account

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

Architettura del caso d'uso

Questo diagramma mostra l'architettura del progetto quando utilizzi 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 dello scenario d'uso per l'utilizzo dei cluster Managed Service for Apache Spark in un progetto diverso tramite il VPC predefinito del progetto tenant.

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 per Apache Spark è quello in cui viene avviato il cluster Managed Service per 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 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 è la posizione logica di Cloud Data Fusion.


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 per Apache Spark

Base di riferimento Caso d'uso

La subnet in cui vengono avviati i cluster Managed Service per 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 dell'istanza e della subnet di Cloud Data Fusion. Se in questa regione è presente una sola subnet, le subnet sono uguali.
  • La subnet di Managed Service per Apache Spark deve disporre dell'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 di Managed Service for Apache Spark non deve trovarsi nella stessa posizione dell'istanza Cloud Data Fusion.

Fonti 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 effimeri.
  • 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'agente di servizio API Data Fusion Cloud 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à del plug-in di origine e destinazione.
  • 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 del cliente, che specifichi nelle configurazioni dei plug-in, ad esempio il plug-in Cloud Storage e il plug-in FTP a 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 Agente di servizio API Data Fusion (roles/datafusion.serviceAgent) viene concesso automaticamente al service account Cloud Data Fusion, l'agente di servizio 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).
    • Esegue il provisioning dei cluster Managed Service per Apache Spark.
  • Se esegui la replica da un'origine Oracle, a questo account di servizio devono essere assegnati anche i ruoli Datastream Admin e Storage Admin 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 di service agent API Data Fusion al account di servizio nel progetto Managed Service for Apache Spark. Poi concedi i seguenti ruoli nel progetto:

  • Ruolo Utente di rete Compute
  • Ruolo Editor Dataproc

IAM: account di servizio Managed Service for Apache Spark

Base di riferimento Caso d'uso

Il 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 Esecutore Cloud Data Fusion. Questo ruolo consente a Managed Service for Apache Spark di comunicare con l'API 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 nel 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.

  • Il ruolo Dataproc Worker
  • Il ruolo Amministratore storage (o, almeno, 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 per Apache Spark di creare job di caricamento. I job vengono creati nel progetto Managed Service for Apache Spark per impostazione predefinita.
  • 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 Visualizzatore oggetti Storage per recuperare gli artefatti correlati al job della pipeline dal bucket consumer di Cloud Data Fusion.
  • Ruolo Esecutore Cloud Data Fusion, 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 attivi l'API Cloud Data Fusion, vengono attivate 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 Data Fusion, i seguenti account di servizio 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
  • Account di servizio Cloud Pub/Sub
Per questo caso d'uso, abilita le seguenti API nel progetto che contiene il progetto Managed Service per Apache Spark:
  • API Compute Engine
  • API Dataproc (è probabile che sia già abilitata in questo progetto). L'API Dataproc Control viene attivata automaticamente quando attivi l'API Dataproc.
  • API 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 viene creato:
    • Account di servizio API Data Fusion
    • Account di servizio Managed Service for Apache Spark, ovvero l'agente di servizio 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)
  • L'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 Autore crittografia/decrittografia CryptoKey Cloud KMS 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)
  • L'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)

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

Passaggi successivi