Protezione multi-tenancy basata su account di servizio Dataproc

La protezione multi-tenancy sicura basata su account di servizio Dataproc (chiamata "multi-tenancy sicura" di seguito) consente di condividere un cluster con più utenti, con un insieme di utenti mappati agli account di servizio al momento della creazione del cluster. Grazie all'architettura multi-tenancy sicura, gli utenti possono inviare carichi di lavoro interattivi al cluster con identità utente isolate.

Quando un utente invia un job al cluster, il job:

  • viene eseguito come utente del sistema operativo specifico con un'entità Kerberos specifica

  • accede alle risorse Google Cloud utilizzando le credenziali dell'account di servizio mappate

Considerazioni e limitazioni

Quando crei un cluster con l'architettura multi-tenancy sicura abilitata:

  • Puoi inviare job solo tramite l'API Jobs di Dataproc.

  • Il cluster è disponibile solo per gli utenti con account di servizio mappati. Ad esempio, gli utenti non mappati non possono eseguire job sul cluster.

  • Gli account di servizio possono essere mappati solo agli utenti Google, non ai gruppi Google.

  • Il gateway dei componenti Dataproc non è abilitato.

  • L'accesso SSH diretto al cluster e alle funzionalità di Compute Engine, come la possibilità di eseguire script di avvio sulle VM del cluster, è bloccato. Inoltre, i job non possono essere eseguiti con privilegi sudo.

  • Kerberos è abilitato e configurato sul cluster per la comunicazione sicura all'interno del cluster. L'autenticazione dell'utente finale tramite Kerberos non è supportata.

  • I flussi di lavoro Dataproc non sono supportati.

Creazione di un cluster multi-tenancy sicuro

Per creare un cluster multi-tenancy sicuro di Dataproc, utilizza il flag --secure-multi-tenancy-user-mapping per specificare un elenco di mappature da utente ad account di servizio.

Esempio:

Il seguente comando crea un cluster, con l'utente bob@my-company.com associato all'account di servizio service-account-for-bob@iam.gserviceaccount.com e l'utente alice@my-company.com mappato all'account di servizio service-account-for-alice@iam.gserviceaccount.com.

gcloud dataproc clusters create my-cluster \
    --secure-multi-tenancy-user-mapping="bob@my-company.com:service-account-for-bob@iam.gserviceaccount.com,alice@my-company.com:service-account-for-alice@iam.gserviceaccount.com" \
    --scopes=https://www.googleapis.com/auth/iam \
    --service-account=cluster-service-account@iam.gserviceaccount.com \
    --region=region \
    other args ...

In alternativa, puoi archiviare l'elenco di mappature utente-account di servizio in un file YAML o JSON locale o di Cloud Storage. Utilizza il flag --identity-config-file per specificare la posizione del file.

Esempio di file di configurazione delle identità:

user_service_account_mapping:
  bob@my-company.com: service-account-for-bob@iam.gserviceaccount.com
  alice@my-company.com: service-account-for-alice@iam.gserviceaccount.com

Comando di esempio per creare il cluster utilizzando il flag --identity-config-file:

gcloud dataproc clusters create my-cluster \
    --identity-config-file=local or "gs://bucket" /path/to/identity-config-file \
    --scopes=https://www.googleapis.com/auth/iam \
    --service-account=cluster-service-account@iam.gserviceaccount.com \
    --region=region \
    other args ...

Note:

  • Come mostrato nei comandi precedenti, il cluster --scopes deve includere almeno https://www.googleapis.com/auth/iam, necessario affinché l'account di servizio del cluster possa eseguire la rappresentazione.

  • L'account di servizio del cluster deve disporre delle autorizzazioni necessarie per rappresentare gli account di servizio mappati agli utenti (consulta la sezione Autorizzazioni dell'account di servizio).

  • Suggerimento: utilizza account di servizio diversi per cluster diversi per consentire a ogni account di servizio del cluster di impersonare solo un gruppo limitato e previsto di account di servizio utente mappati.