Dataproc-Dienstkonto – sichere Mehrmandantenfähigkeit

Das auf einem Dataproc-Dienstkonto basierende sichere Mehrmandantenfähigkeit (im Folgenden als "sichere Mehrmandantenfähigkeit" bezeichnet) ermöglicht Ihnen die Freigabe eines Clusters für mehrere Nutzer, wobei eine Reihe von Nutzern den Dienstkonten bei der Erstellung des Clusters zugeordnet wird. Mit der sicheren Mehrmandantenfähigkeit können Nutzer interaktive Arbeitslasten mit isolierten Nutzeridentitäten an den Cluster senden.

Wenn ein Nutzer einen Job an den Cluster sendet, geschieht Folgendes:

  • Wird als bestimmter Betriebssystemnutzer mit einem bestimmten Kerberos-Principal ausgeführt

  • Zugriff auf Google Cloud-Ressourcen mithilfe der zugeordneten Dienstkonto-Anmeldedaten

Überlegungen und Einschränkungen

Wenn Sie einen Cluster mit aktivierter sicherer Mehrmandantenfähigkeit erstellen, gilt Folgendes:

  • Sie können Jobs nur über die Dataproc Jobs API senden.

  • Der Cluster ist nur für Nutzer mit zugeordneten Dienstkonten verfügbar. Beispielsweise können nicht zugewiesene Nutzer keine Jobs auf dem Cluster ausführen.

  • Dienstkonten können nur Google-Nutzern, nicht Google-Gruppen zugeordnet werden.

  • Das Dataproc Component Gateway ist nicht aktiviert.

  • Der direkte SSH-Zugriff auf den Cluster und Compute Engine-Features wie die Möglichkeit, Startskripts auf Cluster-VMs auszuführen, wird blockiert. Außerdem können Jobs nicht mit sudo-Berechtigungen ausgeführt werden.

  • Kerberos ist auf dem Cluster für eine sichere Intra-Cluster-Kommunikation aktiviert und konfiguriert. Die Endnutzerauthentifizierung über Kerberos wird nicht unterstützt.

  • Dataproc-Workflows werden nicht unterstützt.

Sicheren Cluster für Mehrmandantenfähigkeit erstellen

Verwenden Sie zum Erstellen eines sicheren Dataproc-Clusters für Mandanten das Flag --secure-multi-tenancy-user-mapping, um eine Liste der Nutzer-zu-Dienstkonto-Zuordnungen anzugeben.

Example:

Mit dem folgenden Befehl wird ein Cluster erstellt, wobei der Nutzer bob@my-company.com dem Dienstkonto service-account-for-bob@iam.gserviceaccount.com und der Nutzer alice@my-company.com dem Dienstkonto service-account-for-alice@iam.gserviceaccount.com zugeordnet ist.

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 ...

Alternativ können Sie die Liste der Nutzer-zu-Dienstkonto-Zuordnungen in einer lokalen oder Cloud Storage-YAML- oder JSON-Datei speichern. Verwenden Sie das Flag --identity-config-file, um den Dateispeicherort anzugeben.

Beispiel für die Konfigurationsdatei der Identität:

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

Beispielbefehl zum Erstellen des Clusters mit dem 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 ...

Hinweise:

  • Wie in den obigen Befehlen gezeigt, muss der Cluster --scopes mindestens https://www.googleapis.com/auth/iam enthalten. Dies ist für das Clusterdienstkonto erforderlich, um eine Identitätsübertragung durchzuführen.

  • Das Dienstkonto des Clusters muss die Berechtigungen haben, die Identität der Dienstkonten zu übernehmen, die den Nutzern zugeordnet sind (siehe Dienstkontoberechtigungen).

  • Empfehlung: Verwenden Sie unterschiedliche Cluster-Dienstkonten für verschiedene Cluster, damit jedes Cluster-Dienstkonto nur die Identität einer begrenzten, beabsichtigten Gruppe zugeordneter Nutzer-Dienstkonten übernehmen kann.