Protezione multi-tenancy basata su account di servizio Dataproc

La protezione multi-tenancy basata su account di servizio Dataproc (di seguito denominata "protezione multi-tenancy sicura") consente di condividere un cluster con più utenti, con un insieme di utenti mappati ai service account al momento della creazione del cluster. Con la protezione multi-tenancy, 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 utente del sistema operativo specifico con un'entità Kerberos specifica

  • accede alle risorse Google Cloud utilizzando le credenziali del account di servizio mappato

Considerazioni e limitazioni

Quando crei un cluster con il multitenancy sicuro abilitato:

  • 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 al cluster e alle funzionalità di Compute Engine, come 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 sicura all'interno del cluster. L'autenticazione degli utenti finali tramite Kerberos non è supportata.

  • I flussi di lavoro di Dataproc non sono supportati.

Crea un cluster multi-tenant sicuro

Per creare un cluster Dataproc con protezione multi-tenancy, utilizza il flag --secure-multi-tenancy-user-mapping per specificare un elenco di mappature tra account utente e service account.

Esempio:

Il seguente comando crea un cluster, con l'utente bob@my-company.com mappato al account di servizio service-account-for-bob@iam.gserviceaccount.com e l'utente alice@my-company.com mappato al 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 Cloud Storage. Utilizza il flag --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 almeno https://www.googleapis.com/auth/iam, necessario per consentire all'account di servizio del cluster di eseguire l'impersonificazione.

  • Il account di servizio del cluster deve disporre delle autorizzazioni per impersonare i service account mappati agli utenti (vedi Autorizzazioni del service account).

  • Consiglio:utilizza service account cluster diversi per cluster diversi per consentire a ogni account di servizio cluster di impersonare solo un gruppo limitato e previsto di service account utente mappati.