La multitenancy sicura dell'account di servizio (chiamata "multi-tenancy sicura") di seguito consente di condividere un cluster con più utenti, con un insieme di utenti mappati agli account di servizio quando viene creato il cluster. Con la multitenancy 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 un utente specifico del sistema operativo con un'entità Kerberos specifica
accede alle risorse Google Cloud utilizzando le credenziali mappate dell'account di servizio
Considerazioni e limitazioni
Quando crei un cluster con l'architettura multi-tenancy sicura abilitata:
Puoi inviare job solo tramite l'API Dataproc 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 di Dataproc non è abilitato.
L'accesso diretto tramite SSH alle funzionalità dei cluster e di Compute Engine, ad esempio la possibilità di eseguire script di avvio sulle VM dei cluster, è bloccato. Inoltre, i job non possono essere eseguiti con privilegi
sudo
.Kerberos è abilitato e configurato sul cluster per una comunicazione intra-cluster sicura. L'autenticazione dell'utente finale tramite Kerberos non è supportata.
I flussi di lavoro Dataproc non sono supportati.
Creazione di un cluster multitenancy sicuro
Per creare un cluster multitenancy sicuro di Dataproc, utilizza il flag --secure-multi-tenancy-user-mapping
per specificare un elenco di mappature da utente a account di servizio.
Esempio:
Il comando seguente crea un cluster, con l'utente bob@my-company.com
mappato 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 delle mappature da account a servizio account 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 dell'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 almenohttps://www.googleapis.com/auth/iam
, che è necessario affinché l'account di servizio del cluster esegua la rappresentazione.L'account di servizio del cluster deve avere le autorizzazioni per impersonare gli account di servizio mappati agli utenti (vedi Autorizzazioni dell'account di servizio).
Consiglio: utilizza account di servizio cluster 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.