Cas d'utilisation : contrôle des accès pour un cluster Managed Service pour Apache Spark dans un autre projet

Cette page explique comment gérer le contrôle des accès lorsque vous déployez et exécutez un pipeline qui utilise des clusters Managed Service pour Apache Spark dans un autre projet Google Cloud .

Scénario

Par défaut, lorsqu'une instance Cloud Data Fusion est lancée dans un projetGoogle Cloud , elle déploie et exécute des pipelines à l'aide de clusters Managed Service for Apache Spark dans le même projet. Toutefois, votre organisation peut vous demander d'utiliser des clusters dans un autre projet. Dans ce cas d'utilisation, vous devez gérer l'accès entre les projets. La page suivante explique comment modifier les configurations de référence (par défaut) et appliquer les contrôles d'accès appropriés.

Avant de commencer

Pour comprendre les solutions de ce cas d'utilisation, vous devez disposer du contexte suivant :

Hypothèses et champ d'application

Ce cas d'utilisation présente les exigences suivantes :

  • Une instance Cloud Data Fusion privée. Pour des raisons de sécurité, une organisation peut exiger que vous utilisiez ce type d'instance.
  • Source et récepteur BigQuery.
  • Le contrôle des accès s'effectue avec IAM, et non avec le contrôle des accès basé sur les rôles (RBAC).

Solution

Cette solution compare l'architecture et la configuration de référence à celles spécifiques à un cas d'utilisation.

Architecture

Les schémas suivants comparent l'architecture du projet pour la création d'une instance Cloud Data Fusion et l'exécution de pipelines lorsque vous utilisez des clusters dans le même projet (référence) et dans un autre projet via le VPC du projet locataire.

Architecture de référence

Ce schéma illustre l'architecture de référence des projets :

Architecture des projets locataires, clients et Dataproc dans Cloud Data Fusion.

Pour la configuration de référence, vous créez une instance Cloud Data Fusion privée et exécutez un pipeline sans personnalisation supplémentaire :

  • Vous utilisez l'un des profils de calcul intégrés.
  • La source et le récepteur se trouvent dans le même projet que l'instance.
  • Aucun rôle supplémentaire n'a été attribué aux comptes de service.

Pour en savoir plus sur les projets locataires et clients, consultez Mise en réseau.

Architecture de cas d'utilisation

Ce schéma illustre l'architecture du projet lorsque vous utilisez des clusters dans un autre projet :

Architecture des projets locataires, clients et Dataproc dans Cloud Data Fusion.

Configurations

Les sections suivantes comparent les configurations de référence aux configurations spécifiques aux cas d'utilisation pour l'utilisation de clusters Managed Service pour Apache Spark dans un autre projet via le VPC par défaut du projet locataire.

Dans les descriptions de cas d'utilisation suivantes, le projet client est celui dans lequel l'instance Cloud Data Fusion s'exécute, et le projet Managed Service pour Apache Spark est celui dans lequel le cluster Managed Service pour Apache Spark est lancé.

Réseau VPC et instance du projet locataire

Référence Cas d'utilisation
Dans le diagramme de l'architecture de référence précédent, le projet locataire contient les composants suivants :
  • Le VPC par défaut, qui est créé automatiquement.
  • Déploiement physique de l'instance Cloud Data Fusion.
Aucune configuration supplémentaire n'est requise pour ce cas d'utilisation.

Projet client

Référence Cas d'utilisation
Votre projet Google Cloud est l'endroit où vous déployez et exécutez des pipelines. Par défaut, les clusters Managed Service pour Apache Spark sont lancés dans ce projet lorsque vous exécutez vos pipelines. Dans ce cas d'utilisation, vous gérez deux projets. Sur cette page, le projet client fait référence à l'emplacement d'exécution de l'instance Cloud Data Fusion.
 Le projet Managed Service pour Apache Spark fait référence à l'emplacement où les clusters Managed Service pour Apache Spark sont lancés.

VPC client

Référence Cas d'utilisation

Du point de vue du client, le VPC client est l'emplacement logique de Cloud Data Fusion.


Point clé :
Vous trouverez les détails du VPC client sur la page "Réseaux VPC" de votre projet.

Accéder aux réseaux VPC

Aucune configuration supplémentaire n'est requise pour ce cas d'utilisation.

Sous-réseau Cloud Data Fusion

Référence Cas d'utilisation

Du point de vue du client, ce sous-réseau est l'emplacement logique de Cloud Data Fusion.


Point clé :
La région de ce sous-réseau est la même que celle de l'instance Cloud Data Fusion dans le projet locataire.
Aucune configuration supplémentaire n'est requise pour ce cas d'utilisation.

Sous-réseau Managed Service pour Apache Spark

Référence Cas d'utilisation

Sous-réseau dans lequel les clusters Managed Service pour Apache Spark sont lancés lorsque vous exécutez un pipeline.


Points à retenir :
  • Pour cette configuration de référence, Managed Service pour Apache Spark est exécuté dans le même sous-réseau que l'instance Cloud Data Fusion.
  • Cloud Data Fusion localise un sous-réseau dans la même région que l'instance et le sous-réseau Cloud Data Fusion. S'il n'y a qu'un seul sous-réseau dans cette région, les sous-réseaux sont identiques.
  • Le sous-réseau Managed Service pour Apache Spark doit disposer de l'accès privé à Google.

Il s'agit d'un nouveau sous-réseau dans lequel les clusters Managed Service pour Apache Spark sont lancés lorsque vous exécutez un pipeline.


Points à retenir :
  • Pour ce nouveau sous-réseau, définissez l'accès privé à Google sur Activé.
  • Le sous-réseau Managed Service pour Apache Spark ne doit pas nécessairement se trouver au même emplacement que l'instance Cloud Data Fusion.

Sources et récepteurs

Référence Cas d'utilisation

Les sources à partir desquelles les données sont extraites et les récepteurs dans lesquels elles sont chargées, comme les sources et les récepteurs BigQuery.


Point clé à retenir :
  • Les jobs qui récupèrent et chargent des données doivent être traités au même emplacement que l'ensemble de données. Sinon, une erreur se produit.
Les configurations de contrôle des accès spécifiques aux cas d'utilisation sur cette page concernent les sources et les récepteurs BigQuery.

Cloud Storage

Référence Cas d'utilisation

Bucket de stockage dans le projet client qui permet de transférer des fichiers entre Cloud Data Fusion et Managed Service pour Apache Spark.


Points à retenir :
  • Vous pouvez spécifier ce bucket via l'interface Web Cloud Data Fusion dans les paramètres Profil de calcul pour les clusters éphémères.
  • Pour les pipelines par lot et en temps réel, ou les jobs de réplication : si vous ne spécifiez pas de bucket dans le profil de calcul, Cloud Data Fusion en crée un dans le même projet que l'instance à cet effet.
  • Même pour les clusters Managed Service pour Apache Spark statiques, dans cette configuration de référence, le bucket est créé par Cloud Data Fusion et diffère des buckets de préproduction et temporaires Managed Service pour Apache Spark.
  • L'agent de service de l'API Cloud Data Fusion dispose d'autorisations intégrées pour créer ce bucket dans le projet contenant l'instance Cloud Data Fusion.
Aucune configuration supplémentaire n'est requise pour ce cas d'utilisation.

Buckets temporaires utilisés par la source et le récepteur

Référence Cas d'utilisation

Les buckets temporaires créés par les plug-ins pour vos sources et vos récepteurs, tels que les tâches de chargement lancées par le plug-in BigQuery Sink.


Points à retenir :
  • Vous pouvez définir ces buckets lorsque vous configurez les propriétés du plug-in source et du récepteur.
  • Si vous ne définissez pas de bucket, un bucket est créé dans le même projet que celui où s'exécute Managed Service pour Apache Spark.
  • Si l'ensemble de données est multirégional, le bucket est créé dans le même champ d'application.
  • Si vous définissez un bucket dans la configuration du plug-in, la région du bucket doit correspondre à celle de l'ensemble de données.
  • Si vous ne définissez pas de bucket dans les configurations du plug-in, celui qui est créé pour vous est supprimé à la fin du pipeline.
Dans ce cas d'utilisation, le bucket peut être créé dans n'importe quel projet.

Buckets qui sont des sources ou des récepteurs de données pour les plug-ins

Référence Cas d'utilisation
Les buckets client, que vous spécifiez dans les configurations des plug-ins, tels que le plug-in Cloud Storage et le plug-in FTP vers Cloud Storage. Aucune configuration supplémentaire n'est requise pour ce cas d'utilisation.

IAM : agent de service de l'API Cloud Data Fusion

Référence Cas d'utilisation

Lorsque l'API Cloud Data Fusion est activée, le rôle Agent de service de l'API Cloud Data Fusion (roles/datafusion.serviceAgent) est automatiquement attribué au compte de service Cloud Data Fusion, qui est l'agent de service principal.


Points à retenir :
  • Ce rôle contient des autorisations pour les services du même projet que l'instance, tels que BigQuery et Managed Service pour Apache Spark. Pour tous les services compatibles, consultez les informations sur les rôles.
  • Le compte de service Cloud Data Fusion effectue les opérations suivantes :
    • Communication du plan de données (conception et exécution du pipeline) avec d'autres services (par exemple, communication avec Cloud Storage, BigQuery et Datastream lors de la conception).
    • Provisionne des clusters Managed Service pour Apache Spark.
  • Si vous effectuez une réplication à partir d'une source Oracle, ce compte de service doit également disposer des rôles Administrateur Datastream et Administrateur Storage dans le projet où le job a lieu. Cette page ne traite pas d'un cas d'utilisation de la réplication.

Pour ce cas d'utilisation, attribuez le rôle Agent de service de l'API Cloud Data Fusion au compte de service dans le projet Managed Service pour Apache Spark. Attribuez ensuite les rôles suivants dans ce projet :

  • Rôle d'utilisateur de réseau de Compute
  • Rôle Éditeur Dataproc

IAM : compte de service Managed Service pour Apache Spark

Référence Cas d'utilisation

Compte de service utilisé pour exécuter le pipeline en tant que job dans le cluster Managed Service pour Apache Spark. Par défaut, il s'agit du compte de service Compute Engine.


Facultatif : Dans la configuration de référence, vous pouvez remplacer le compte de service par défaut par un autre compte de service du même projet. Accordez les rôles IAM suivants au nouveau compte de service :

  • Le rôle "Exécuteur Cloud Data Fusion". Ce rôle permet à Managed Service pour Apache Spark de communiquer avec l'API Cloud Data Fusion.
  • Rôle "Nœud de calcul Dataproc". Ce rôle permet aux jobs de s'exécuter sur les clusters Managed Service pour Apache Spark.
Points à retenir :
  • Le compte de service de l'agent de service de l'API pour le nouveau service doit disposer du rôle Utilisateur de compte de service sur le compte de service Managed Service pour Apache Spark afin que l'agent de service de l'API puisse l'utiliser pour lancer des clusters Managed Service pour Apache Spark.

Cet exemple de cas d'utilisation suppose que vous utilisez le compte de service Compute Engine par défaut (PROJECT_NUMBER-compute@developer.gserviceaccount.com) du projet Managed Service pour Apache Spark.


Attribuez les rôles suivants au compte de service Compute Engine par défaut dans le projet Managed Service pour Apache Spark.

  • Rôle Nœud de calcul Dataproc
  • Le rôle "Administrateur de l'espace de stockage" (ou, au minimum, l'autorisation `storage.buckets.create`) pour permettre à Managed Service pour Apache Spark de créer des buckets temporaires pour BigQuery.
  • Rôle Utilisateur de job BigQuery Ce rôle permet à Managed Service pour Apache Spark de créer des jobs de chargement. Les jobs sont créés par défaut dans le projet Managed Service pour Apache Spark.
  • Rôle Éditeur d'ensemble de données BigQuery Ce rôle permet à Managed Service pour Apache Spark de créer des ensembles de données lors du chargement des données.

Attribuez le rôle Utilisateur du compte de service au compte de service Cloud Data Fusion sur le compte de service Compute Engine par défaut du projet Managed Service pour Apache Spark. Cette action doit être effectuée dans le projet Managed Service pour Apache Spark.

Ajoutez le compte de service Compute Engine par défaut du projet Managed Service pour Apache Spark au projet Cloud Data Fusion. Attribuez également les rôles suivants :

  • Le rôle Lecteur des objets Storage pour récupérer les artefacts liés aux jobs de pipeline à partir du bucket consommateur Cloud Data Fusion.
  • Rôle "Exécuteur Cloud Data Fusion" pour que le cluster Managed Service for Apache Spark puisse communiquer avec Cloud Data Fusion pendant son exécution.

API

Référence Cas d'utilisation
Lorsque vous activez l'API Cloud Data Fusion, les API suivantes sont également activées. Pour en savoir plus sur ces API, accédez à la page "API et services" de votre projet.

Accéder à "API et services"

  • API 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

Lorsque vous activez l'API Cloud Data Fusion, les comptes de service suivants sont automatiquement ajoutés à votre projet :

  • Agent de service des Google APIs
  • Agent de service Compute Engine
  • Agent de service Kubernetes Engine
  • Agent de service Google Container Registry
  • Agent de service Google Cloud Dataproc
  • Agent de service Cloud KMS
  • Compte de service Cloud Pub/Sub
Pour ce cas d'utilisation, activez les API suivantes dans le projet qui contient le projet Managed Service pour Apache Spark, si elles ne sont pas déjà activées :
  • API Compute Engine
  • API Dataproc
  • API Cloud Resource Manager

Clés de chiffrement

Référence Cas d'utilisation

Dans la configuration de référence, les clés de chiffrement peuvent être gérées par Google ou CMEK .


Points à retenir :

Si vous utilisez CMEK, votre configuration de référence doit inclure les éléments suivants :

  • La clé doit être régionale et créée dans la même région que l'instance Cloud Data Fusion.
  • Attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS aux comptes de service suivants au niveau de la clé (et non sur la page IAM de la console Google Cloud ) dans le projet où elle a été créée :
    • Compte de service de l'API Cloud Data Fusion
    • Compte de service Managed Service pour Apache Spark, qui est l'agent de service Compute Engine (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) par défaut
    • Agent de service Google Cloud Dataproc (service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com)
    • Agent de service Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

En fonction des services utilisés dans votre pipeline, tels que BigQuery ou Cloud Storage, les comptes de service doivent également disposer du rôle Chiffreur/Déchiffreur de CryptoKey Cloud KMS :

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

Si vous n'utilisez pas de CMEK, aucune autre modification n'est requise pour ce cas d'utilisation.

Si vous utilisez CMEK, le rôle Chiffreur/Déchiffreur de CryptoKey Cloud KMS doit être attribué au compte de service suivant au niveau de la clé dans le projet où il est créé :

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

En fonction des services utilisés dans votre pipeline, tels que BigQuery ou Cloud Storage, d'autres comptes de service doivent également se voir attribuer le rôle Chiffreur/Déchiffreur de CryptoKey Cloud KMS au niveau de la clé. Exemple :

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

Une fois ces configurations spécifiques au cas d'utilisation effectuées, votre pipeline de données peut commencer à s'exécuter sur des clusters d'un autre projet.

Étapes suivantes