La protezione multi-tenancy basata su account di servizio Dataproc (indicata di seguito come "protezione multi-tenancy") ti consente di condividere un cluster con più utenti, con un insieme di utenti mappati agli account di servizio al momento della 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, questo:
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 mappato
Considerazioni e limitazioni
Quando crei un cluster con la multitenancy 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 di Dataproc non è abilitato.
L'accesso SSH diretto alle funzionalità del cluster e di Compute Engine, come la possibilità di eseguire script di avvio sulle VM del cluster, è bloccato. Inoltre, i job non possono essere eseguiti con i privilegi
sudo
.Kerberos è attivo e configurato sul cluster per la comunicazione sicura all'interno del cluster. L'autenticazione degli utenti finali tramite Kerberos non è supportata.
I workflow Dataproc non sono supportati.
Creazione di un cluster multi-tenancy sicuro
Per creare un cluster Dataproc con multi-tenancy sicuro, utilizza il flag --secure-multi-tenancy-user-mapping
per specificare un elenco di mappature tra account utente e account di servizio.
Esempio:
Il seguente comando 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 di servizio in un file YAML o JSON locale o di Cloud Storage. Utilizza il
--identity-config-file
flag per specificare la posizione del file.
File di configurazione dell'identità di esempio:
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 per l'account di servizio del cluster per eseguire l'usurpazione di identità.L'account di servizio del cluster deve disporre delle autorizzazioni per impersonare gli account di servizio mappati agli utenti (consulta Autorizzazioni degli account di servizio).
Consiglio:utilizza account di servizio del cluster diversi per i diversi cluster per consentire a ciascun account di servizio del cluster di impersonare solo un gruppo limitato e previsto di account di servizio utente mappati.