Protezione multi-tenancy basata su account di servizio Dataproc

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 almeno https://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.