La protezione multi-tenancy basata su account di servizio Dataproc (chiamata "multi-tenancy sicura") riportata di seguito consente di condividere un cluster con più utenti, con un insieme di utenti mappati agli account di servizio durante la creazione del cluster. Con la 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 un utente specifico del sistema operativo con un'entità Kerberos specifica
accede alle risorse Google Cloud utilizzando le credenziali dell'account di servizio mappato
Considerazioni e limitazioni
Quando crei un cluster con protezione multi-tenabilità 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 a utenti Google, non a gruppi Google.
Il gateway dei componenti di Dataproc non è abilitato.
L'accesso diretto SSH al cluster e alle funzionalità di Compute Engine, ad esempio 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 una comunicazione tra cluster sicura. L'autenticazione degli utenti finali 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 tra account utente e 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 tra account utente e 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 con 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
, necessario all'account di servizio del cluster per eseguire la rappresentazione.L'account di servizio del cluster deve avere le autorizzazioni per impersonare gli account di servizio mappati agli utenti (vedi Gestione dell'impersonificazione degli account di servizio).
Suggerimento: utilizza account di servizio cluster diversi per cluster diversi per consentire a ogni account di servizio cluster di impersonare solo un gruppo limitato e previsto di account di servizio utente mappati.