Anwendungsfall: Zugriffssteuerung für einen Managed Service for Apache Spark-Cluster in einem anderen Projekt

Auf dieser Seite wird beschrieben, wie Sie die Zugriffssteuerung beim Bereitstellen und Ausführen einer Pipeline verwalten, die Managed Service for Apache Spark-Cluster in einem anderen Google Cloud Projekt verwendet.

Szenario

Wenn eine Cloud Data Fusion-Instanz in einem Google Cloud Projekt gestartet wird, werden standardmäßig Pipelines mit Managed Service for Apache Spark-Clustern im selben Projekt bereitgestellt und ausgeführt. Ihre Organisation erfordert jedoch möglicherweise, dass Sie Cluster in einem anderen Projekt verwenden. In diesem Anwendungsfall müssen Sie den Zugriff zwischen den Projekten verwalten. Auf der folgenden Seite wird beschrieben, wie Sie die Referenzkonfigurationen (Standardkonfigurationen) ändern und die entsprechenden Zugriffssteuerungen anwenden können.

Hinweis

Um die Lösungen in diesem Anwendungsfall zu verstehen, benötigen Sie den folgenden Kontext:

Annahmen und Umfang

Dieser Anwendungsfall hat folgende Anforderungen:

  • Eine private Cloud Data Fusion-Instanz. Aus Sicherheitsgründen kann eine Organisation die Verwendung dieser Art von Instanz erfordern.
  • Eine BigQuery-Quelle und -Senke.
  • Zugriffssteuerung mit IAM, nicht rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC).

Lösung

In dieser Lösung werden die Referenzkonfiguration und die anwendungsfallspezifische Architektur und Konfiguration verglichen.

Architektur

In den folgenden Diagrammen wird die Projektarchitektur zum Erstellen einer Cloud Data Fusion-Instanz und zum Ausführen von Pipelines verglichen, wenn Sie Cluster im selben Projekt (Referenzkonfiguration) und in einem anderen Projekt über die VPC des Mandantenprojekts verwenden.

Referenzarchitektur

Dieses Diagramm zeigt die Referenzarchitektur der Projekte:

Architektur von Mandanten-, Kunden- und Dataproc-Projekten in Cloud Data Fusion.

Für die Referenzkonfiguration erstellen Sie eine private Cloud Data Fusion-Instanz und führen eine Pipeline ohne zusätzliche Anpassung aus:

  • Sie verwenden eines der integrierten Rechenprofile.
  • Die Quelle und die Senke befinden sich im selben Projekt wie die Instanz.
  • Keinem der Dienstkonten wurden zusätzliche Rollen zugewiesen.

Weitere Informationen zu Mandanten- und Kundenprojekten finden Sie unter Netzwerke.

Architektur des Anwendungsfalls

Dieses Diagramm zeigt die Projektarchitektur, wenn Sie Cluster in einem anderen Projekt verwenden:

Architektur von Mandanten-, Kunden- und Dataproc-Projekten in Cloud Data Fusion.

Konfigurationen

In den folgenden Abschnitten werden die Referenzkonfigurationen mit den anwendungsfallspezifischen Konfigurationen für die Verwendung von Managed Service for Apache Spark-Clustern in einem anderen Projekt über die Standard-VPC des Mandantenprojekts verglichen.

In den folgenden Anwendungsfallbeschreibungen ist das Kundenprojekt das Projekt, in dem die Cloud Data Fusion-Instanz ausgeführt wird, und das Managed Service for Apache Spark-Projekt das Projekt, in dem der Managed Service for Apache Spark-Cluster gestartet wird.

VPC und Instanz des Mandantenprojekts

Referenzkonfiguration Anwendungsfall
Im vorherigen Diagramm der Referenzarchitektur enthält das Mandantenprojekt die folgenden Komponenten:
  • Die Standard-VPC, die automatisch erstellt wird.
  • Die physische Bereitstellung der Cloud Data Fusion-Instanz.
Für diesen Anwendungsfall ist keine zusätzliche Konfiguration erforderlich.

Kundenprojekt

Referenzkonfiguration Anwendungsfall
In Ihrem Google Cloud Projekt werden Pipelines bereitgestellt und ausgeführt. Standardmäßig werden die Managed Service for Apache Spark-Cluster in diesem Projekt gestartet, wenn Sie Ihre Pipelines ausführen. In diesem Anwendungsfall verwalten Sie zwei Projekte. Auf dieser Seite bezieht sich das Kundenprojekt auf das Projekt, in dem die Cloud Data Fusion Instanz ausgeführt wird.
Das Managed Service for Apache Spark-Projekt bezieht sich auf das Projekt, in dem die Managed Service for Apache Spark-Cluster gestartet werden.

VPC des Kunden

Referenzkonfiguration Anwendungsfall

Aus Kundensicht befindet sich Cloud Data Fusion logisch in der VPC des Kunden.


Wichtig:
Details zur VPC des Kunden finden Sie auf der Seite VPC-Netzwerke Ihres Projekts.

Zur Seite VPC-Netzwerke

Für diesen Anwendungsfall ist keine zusätzliche Konfiguration erforderlich.

Cloud Data Fusion-Subnetz

Referenzkonfiguration Anwendungsfall

Aus Kundensicht befindet sich Cloud Data Fusion logisch in diesem Subnetz.


Wichtig:
Die Region dieses Subnetzes ist dieselbe wie der Standort der Cloud Data Fusion-Instanz im Mandanten projekt.
Für diesen Anwendungsfall ist keine zusätzliche Konfiguration erforderlich.

Managed Service for Apache Spark-Subnetz

Referenzkonfiguration Anwendungsfall

Das Subnetz, in dem Managed Service for Apache Spark-Cluster gestartet werden, wenn Sie eine Pipeline ausführen.


Wichtig:
  • In dieser Referenzkonfiguration wird Managed Service for Apache Spark in demselben Subnetz wie die Cloud Data Fusion-Instanz ausgeführt.
  • Cloud Data Fusion sucht ein Subnetz in derselben Region wie sowohl die Instanz als auch das Subnetz von Cloud Data Fusion. Wenn es in dieser Region nur ein Subnetz gibt, sind die Subnetze identisch.
  • Für das Managed Service for Apache Spark-Subnetz muss der privater Google-Zugriff aktiviert sein.

Dies ist ein neues Subnetz, in dem Managed Service for Apache Spark-Cluster gestartet werden, wenn Sie eine Pipeline ausführen.


Wichtig:
  • Setzen Sie für dieses neue Subnetz den privater Google-Zugriff auf Ein.
  • Das Managed Service for Apache Spark-Subnetz muss sich nicht am selben Standort wie die Cloud Data Fusion-Instanz befinden.

Quellen und Senken

Referenzkonfiguration Anwendungsfall

Die Quellen, aus denen Daten extrahiert werden, und die Senken, in die Daten geladen werden, z. B. BigQuery-Quellen und -Senken.


Wichtig:
  • Die Jobs, mit denen Daten abgerufen und geladen werden, müssen am selben Standort wie das Dataset verarbeitet werden. Andernfalls tritt ein Fehler auf.
Die anwendungsfallspezifischen Konfigurationen für die Zugriffssteuerung auf dieser Seite gelten für BigQuery-Quellen und -Senken.

Cloud Storage

Referenzkonfiguration Anwendungsfall

Der Storage-Bucket im Kundenprojekt, mit dem Dateien zwischen Cloud Data Fusion und Managed Service for Apache Spark übertragen werden.


Wichtig:
  • Sie können diesen Bucket über die Cloud Data Fusion-Web oberfläche in den Einstellungen für Rechenprofil für sitzungsspezifische Cluster angeben.
  • Für Batch- und Echtzeitpipelines oder Replikationsjobs: Wenn Sie im Rechenprofil keinen Bucket angeben, erstellt Cloud Data Fusion zu diesem Zweck einen Bucket im selben Projekt wie die Instanz.
  • Auch für statische Managed Service for Apache Spark-Cluster wird der Bucket in dieser Referenzkonfiguration von Cloud Data Fusion erstellt und unterscheidet sich von den Staging- und temporären Buckets von Managed Service for Apache Spark.
  • Der Cloud Data Fusion API Service Agent hat integrierte Berechtigungen, um diesen Bucket in dem Projekt zu erstellen, das die Cloud Data Fusion-Instanz enthält.
Für diesen Anwendungsfall ist keine zusätzliche Konfiguration erforderlich.

Temporäre Buckets, die von Quelle und Senke verwendet werden

Referenzkonfiguration Anwendungsfall

Die temporären Buckets, die von Plug-ins für Ihre Quellen und Senken erstellt wurden, z. B. die von dem BigQuery-Senken-Plug-in initiierten Ladejobs.


Wichtig:
  • Sie können diese Buckets definieren, wenn Sie die Plug-in-Attribute für Quelle und Senke konfigurieren.
  • Wenn Sie keinen Bucket definieren, wird einer im selben Projekt erstellt, wo Managed Service for Apache Spark ausgeführt wird.
  • Wenn das Dataset multiregional ist, wird der Bucket im selben Bereich erstellt.
  • Wenn Sie in der Plug-in-Konfiguration einen Bucket definieren, muss die Region des Buckets mit der Region des Datasets übereinstimmen.
  • Wenn Sie in den Plug-in-Konfigurationen keinen Bucket definieren, wird der für Sie erstellte Bucket gelöscht, wenn die Pipeline abgeschlossen ist.
In diesem Anwendungsfall kann der Bucket in einem beliebigen Projekt erstellt werden.

Buckets, die Quellen oder Senken von Daten für Plug-ins sind

Referenzkonfiguration Anwendungsfall
Kunden-Buckets, die Sie in den Konfigurationen für Plug-ins angeben, z. B. das Cloud Storage-Plug-in und das FTP zu Cloud Storage-Plug-in. Für diesen Anwendungsfall ist keine zusätzliche Konfiguration erforderlich.

IAM: Cloud Data Fusion API Service Agent

Referenzkonfiguration Anwendungsfall

Wenn die Cloud Data Fusion API aktiviert ist, wird dem Cloud Data Fusion-Dienstkonto, dem primären Dienst-Agenten, automatisch die Rolle Cloud Data Fusion API Service Agent (roles/datafusion.serviceAgent) zugewiesen.


Wichtig:
  • Die Rolle enthält Berechtigungen für Dienste im selben Projekt wie die Instanz, z. B. BigQuery und Managed Service for Apache Spark. Alle unterstützten Dienste finden Sie in den Details zur Rolle.
  • Das Cloud Data Fusion-Dienstkonto führt folgende Aktionen aus:
    • Kommunikation der Datenebene (Pipeline-Design und -Ausführung) mit anderen Diensten (z. B. Kommunikation mit Cloud Storage, BigQuery und Datastream zur Designzeit).
    • Bereitstellung von Managed Service for Apache Spark-Clustern.
  • Wenn Sie aus einer Oracle-Quelle replizieren, müssen diesem Dienstkonto auch die Rollen „Datastream-Administrator“ und „Storage-Administrator“ in dem Projekt zugewiesen werden, in dem der Job ausgeführt wird. Dieser Anwendungsfall behandelt keine Replikation.

Weisen Sie in diesem Anwendungsfall dem Dienstkonto im Managed Service for Apache Spark-Projekt die Rolle „Cloud Data Fusion API Service Agent“ zu. Weisen Sie dann die folgenden Rollen in diesem Projekt zu:

  • Rolle „Compute-Netzwerknutzer“
  • Rolle „Dataproc-Bearbeiter“

IAM: Managed Service for Apache Spark-Dienstkonto

Referenzkonfiguration Anwendungsfall

Das Dienstkonto, das zum Ausführen der Pipeline als Job im Managed Service for Apache Spark-Cluster verwendet wird. Standardmäßig ist es das Compute Engine-Dienstkonto.


Optional: In der Referenzkonfiguration können Sie das Standard Dienstkonto in ein anderes Dienstkonto aus demselben Projekt ändern. Weisen Sie dem neuen Dienstkonto die folgenden IAM-Rollen zu:

  • Die Rolle „Cloud Data Fusion-Ausführer“. Mit dieser Rolle kann Managed Service for Apache Spark mit der Cloud Data Fusion API kommunizieren.
  • Die Rolle „Dataproc-Worker“. Mit dieser Rolle können die Jobs in Managed Service for Apache Spark-Clustern ausgeführt werden.
Wichtig:
  • Dem API-Agent-Dienstkonto für den neuen Dienst muss die Rolle „Dienstkontonutzer“ für das Managed Service for Apache Spark-Dienstkonto zugewiesen werden, damit der Dienst-API-Agent es zum Starten von Managed Service for Apache Spark-Clustern verwenden kann.

In diesem Anwendungsfall wird davon ausgegangen, dass Sie das Standard Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com) des Managed Service for Apache Spark-Projekts verwenden.


Weisen Sie dem Compute Engine-Standarddienstkonto im Managed Service for Apache Spark-Projekt die folgenden Rollen zu.

  • Die Rolle „Dataproc-Worker“
  • Die Rolle „Storage-Administrator“ oder mindestens die Berechtigung `storage.buckets.create`, damit Managed Service for Apache Spark temporäre Buckets für BigQuery erstellen kann.
  • Rolle „BigQuery-Jobnutzer“. Mit dieser Rolle kann Managed Service for Apache Spark Ladejobs erstellen. Die Jobs werden standardmäßig im Managed Service for Apache Spark Projekt erstellt.
  • Rolle „BigQuery-Dataset-Bearbeiter“. Mit dieser Rolle kann Managed Service for Apache Spark beim Laden von Daten Datasets erstellen.

Weisen Sie dem Cloud Data Fusion Dienstkonto die Rolle „Dienstkontonutzer“ für das Compute Engine-Standarddienstkonto des Managed Service for Apache Spark-Projekts zu. Diese Aktion muss im Managed Service for Apache Spark-Projekt ausgeführt werden.

Fügen Sie das Compute Engine-Standarddienstkonto des Managed Service for Apache Spark-Projekts dem Cloud Data Fusion-Projekt hinzu. Weisen Sie außerdem die folgenden Rollen zu:

  • Die Rolle „Storage-Objekt-Betrachter“, um Artefakte im Zusammenhang mit Pipelinejobs aus dem Cloud Data Fusion-Consumer-Bucket abzurufen.
  • Die Rolle „Cloud Data Fusion-Ausführer“, damit der Managed Service for Apache Spark Cluster während der Ausführung mit Cloud Data Fusion kommunizieren kann.

APIs

Referenzkonfiguration Anwendungsfall
Wenn Sie die Cloud Data Fusion API aktivieren, werden auch die folgenden APIs aktiviert. Weitere Informationen zu diesen APIs finden Sie auf der Seite „APIs &Dienste“ in Ihrem Projekt.

Zu APIs &Dienste

  • Cloud Autoscaling API
  • Dataproc API
  • Cloud Dataproc Control API
  • Cloud DNS API
  • Cloud OS Login API
  • Pub/Sub API
  • Compute Engine API
  • Container Filesystem API
  • Container Registry API
  • Service Account Credentials API
  • Identity and Access Management API
  • Kubernetes Engine API

Wenn Sie die Cloud Data Fusion API aktivieren, werden die folgenden Dienstkonten automatisch Ihrem Projekt hinzugefügt:

  • Google APIs-Dienst-Agent
  • Compute Engine-Dienst-Agent
  • Kubernetes Engine-Dienst-Agent
  • Google Container Registry-Dienst-Agent
  • Google Cloud Dataproc-Dienst-Agent
  • Cloud KMS-Dienst-Agent
  • Cloud Pub/Sub-Dienstkonto
Aktivieren Sie für diesen Anwendungsfall die folgenden APIs in dem Projekt, das das Managed Service for Apache Spark-Projekt enthält:
  • Compute Engine API
  • Dataproc API (ist wahrscheinlich bereits in diesem Projekt aktiviert). Die Dataproc Control API wird automatisch aktiviert, wenn Sie die Dataproc API aktivieren.
  • Resource Manager API.

Verschlüsselungsschlüssel

Referenzkonfiguration Anwendungsfall

In der Referenzkonfiguration können Verschlüsselungsschlüssel von Google verwaltet oder CMEK sein.


Wichtig:

Wenn Sie CMEK verwenden, sind für Ihre Referenzkonfiguration die folgenden Schritte erforderlich:

  • Der Schlüssel muss regional sein und in derselben Region wie die Cloud Data Fusion-Instanz erstellt werden.
  • Weisen Sie den folgenden Dienstkonten auf Schlüsselebene (nicht auf der IAM-Seite der Google Cloud Console) die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ in dem Projekt zu, in dem der Schlüssel erstellt wurde:
    • Cloud Data Fusion API-Dienstkonto
    • Managed Service for Apache Spark-Dienstkonto, das standardmäßig der Compute Engine-Dienst-Agent (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) ist
    • Google Cloud Dataproc-Dienst-Agent (service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com)
    • Cloud Storage-Dienst-Agent (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Je nach den in Ihrer Pipeline verwendeten Diensten, z. B. BigQuery oder Cloud Storage, muss den Dienstkonten auch die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ zugewiesen werden:

  • Das BigQuery-Dienstkonto (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • Das Pub/Sub-Dienstkonto (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • Das Spanner-Dienstkonto (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Wenn Sie CMEK nicht verwenden, sind für diesen Anwendungsfall keine zusätzlichen Änderungen erforderlich.

Wenn Sie CMEK verwenden, muss dem folgenden Dienstkonto auf Schlüsselebene in dem Projekt, in dem der Schlüssel erstellt wurde, die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ zugewiesen werden:

  • Cloud Storage-Dienst-Agent (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Je nach den in Ihrer Pipeline verwendeten Diensten, z. B. BigQuery oder Cloud Storage, muss auch anderen Dienstkonten auf Schlüsselebene die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ zugewiesen werden. Beispiel:

  • Das BigQuery-Dienstkonto (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • Das Pub/Sub-Dienstkonto (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • Das Spanner-Dienstkonto (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Nachdem Sie diese anwendungsfallspezifischen Konfigurationen vorgenommen haben, kann Ihre Datenpipeline in Clustern in einem anderen Projekt ausgeführt werden.

Nächste Schritte