Protezione multi-tenancy basata su account di servizio Dataproc

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