La rete sicura multi-tenancy basata su account di servizio Dataproc (denominata "secure multi-tenancy", di seguito) consente di per condividere un cluster con più utenti, con un insieme di utenti mappati 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 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 in cui è abilitata la multitenancy sicura:
Puoi inviare job solo tramite l'API Jobs di Dataproc.
Il cluster è disponibile solo per gli utenti con account di servizio mappati. Per 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 SSH diretto alle funzionalità del cluster e di Compute Engine, come la possibilità di eseguire script di avvio sulle VM del cluster, è bloccato. Inoltre, job non possono essere eseguiti con privilegi di
sudo
.Kerberos è abilitato e configurato sul cluster per la comunicazione sicura all'interno del cluster. L'autenticazione degli utenti finali tramite Kerberos non è supportata.
Flussi di lavoro Dataproc non sono supportati.
Creazione di un cluster multi-tenancy sicuro
Per creare un cluster multi-tenancy sicuro Dataproc, utilizza
--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
un file YAML o JSON locale o di Cloud Storage. Utilizza la
--identity-config-file
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
, necessario per il cluster di account di servizio per eseguire l'impersonificazione.L'account di servizio del cluster deve disporre delle autorizzazioni per rappresentare gli account di servizio mappati agli utenti (vedi Autorizzazioni dell'account di servizio).
Suggerimento: utilizza account di servizio cluster diversi per per consentire a ogni account di servizio del cluster di impersonare solo un gruppo limitato e previsto di account di servizio utente mappati.