Contrôle des accès

Cloud Composer 1 | Cloud Composer 2

Cette page décrit les options de contrôle des accès disponibles dans Cloud Composer et explique comment attribuer des rôles.

Présentation

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également contrôler les autorisations de l'interface Web Airflow, au-delà de l'activation ou de la désactivation de l'accès à celle-ci. Pour en savoir plus, consultez la page Contrôle des accès basé sur les rôles Airflow.

À propos de la gestion de l'authentification et des accès dans Cloud Composer

Cloud Composer utilise Identity and Access Management (IAM) pour le contrôle des accès.

Vous contrôlez l'accès à différentes fonctionnalités Cloud Composer en attribuant des rôles et des autorisations à la fois pour les comptes de service IAM et pour les comptes utilisateur de votre projet Google Cloud.

Cloud Composer utilise deux types de comptes de service IAM:

À propos du compte d'agent de service Cloud Composer

Dans votre projet, le service Cloud Composer utilise un compte de service spécial géré par Google pour gérer les ressources liées à Cloud Composer. Ce compte est appelé agent de service Cloud Composer.

L'agent de service Cloud Composer est utilisé pour tous les environnements de votre projet.

À propos des comptes de service pour les environnements Cloud Composer

Lorsque vous créez un environnement, vous spécifiez un compte de service. Le cluster de votre environnement utilise ce compte de service pour exécuter des pods avec différents composants d'environnement, tels que des nœuds de calcul et des programmeurs Airflow.

Par défaut, les environnements Cloud Composer s'exécutent avec le compte de service Compute Engine par défaut. Ce compte de service géré par Google dispose de plus d'autorisations que nécessaire pour exécuter les environnements Cloud Composer, généralement le rôle de base Éditeur.

Nous vous recommandons de configurer un compte de service géré par l'utilisateur pour les environnements Cloud Composer. Attribuez à ce compte un rôle spécifique à Cloud Composer. Ensuite, spécifiez ce compte de service lors de la création d'environnements.

À propos des rôles pour les utilisateurs de Cloud Composer

Pour déclencher une opération dans l'environnement, un utilisateur doit disposer d'autorisations suffisantes. Par exemple, si vous souhaitez créer un environnement, vous devez disposer de l'autorisation composer.environments.create.

Pour Cloud Composer, les autorisations individuelles sont regroupées dans des rôles. Vous pouvez attribuer ces rôles aux principaux.

Si votre compte de service dispose du rôle Éditeur de projet, vous pouvez exécuter toutes les opérations dans l'environnement. Toutefois, ce rôle dispose d'autorisations étendues. Pour les utilisateurs qui travaillent avec des environnements, nous vous recommandons d'utiliser des rôles spécifiques à Cloud Composer. De cette façon, vous pouvez réduire le champ d'application des autorisations et fournir différents niveaux d'accès à des principaux principaux. Par exemple, un utilisateur peut créer, mettre à jour, mettre à niveau et supprimer des environnements, tandis qu'un autre peut uniquement afficher les environnements et accéder à l'interface Web Airflow.

Attribuer des rôles au compte d'agent de service Cloud Composer

Lorsque vous activez l'API Cloud Composer dans votre projet, le compte Composer Service Agent est créé dans votre projet. Cloud Composer utilise ce compte pour effectuer des opérations dans votre projet Google Cloud.

Cloud Composer 2 utilise GKE Autopilot, qui nécessite Workload Identity. Pour utiliser Workload Identity, le compte de service de votre environnement doit comporter des liaisons au compte de service Kubernetes qui exécute le cluster de votre environnement. Ces liaisons sont nécessaires pour que les pods de votre cluster d'environnement puissent accéder aux ressources de votre projet Google Cloud. par exemple, pour lire des fichiers de définition de DAG à partir du bucket de l'environnement.

Pour créer des liaisons entre le compte de service de votre environnement et le compte de service Kubernetes du cluster de votre environnement, le compte de l'agent de service Composer doit disposer des autorisations suffisantes pour le faire. Cela nécessite les autorisations iam.serviceAccounts.getIamPolicy et iam.serviceAccounts.setIamPolicy, fournies par le rôle Extension d'agent de service de l'API Cloud Composer v2. Ce rôle n'est pas accordé automatiquement. Vous devez l'accorder manuellement une fois par projet.

Pour obtenir des instructions sur l'ajout de ce rôle, consultez la page Créer des environnements.

Attribuer des rôles à un compte de service géré par l'utilisateur

Pour un compte de service géré par l'utilisateur qui exécute des environnements Cloud Composer:

  • Pour une configuration d'adresse IP publique, attribuez le rôle Nœud de calcul Composer (composer.worker).
  • Pour une configuration d'adresse IP privée :
    1. Attribuez le rôle Nœud de calcul Composer (composer.worker).
    2. Attribuez le rôle Utilisateur du compte de service (iam.serviceAccountUser).

Attribuer des rôles aux utilisateurs

Suivant le niveau d'accès que vous souhaitez fournir pour les environnements Cloud Composer, accordez les autorisations suivantes aux principaux.

Gérer les environnements et les buckets d'environnement

Pour un utilisateur capable d'afficher, de créer, de mettre à jour, de mettre à niveau et de supprimer des environnements, de gérer des objets (tels que des fichiers DAG) dans les buckets d'environnement et d'accéder à l'interface Web Airflow:

  1. Attribuez le rôle Administrateur de l'environnement et des objets Storage (composer.environmentAndStorageObjectAdmin).
  2. Attribuez le rôle Utilisateur du compte de service (iam.serviceAccountUser).

Gérer les environnements

Pour un utilisateur autorisé à afficher, créer, mettre à jour, mettre à jour et supprimer des environnements, ainsi qu'à accéder à l'interface Web Airflow:

  1. Attribuez le rôle Administrateur Composer (composer.admin).
  2. Attribuez le rôle Utilisateur du compte de service (iam.serviceAccountUser).

Afficher les environnements et gérer les buckets associés

Pour un utilisateur pouvant afficher les environnements, accéder à l'interface Web Airflow et gérer les objets dans les buckets d'environnement (par exemple, pour importer de nouveaux fichiers DAG):

  1. Attribuez le rôle Utilisateur de l'environnement et lecteur des objets de l'espace de stockage (composer.environmentAndStorageObjectViewer).
  2. Attribuez le rôle Administrateur des objets de l'espace de stockage (storage.objectAdmin).

Afficher les environnements et les buckets d'environnement

Pour un utilisateur pouvant afficher les environnements, accéder à l'interface Web Airflow et afficher les objets des buckets d'environnement, attribuez le lecteur d'environnement et d'utilisateur de l'environnement (composer.environmentAndStorageObjectViewer) ).

Afficher les environnements

Pour un utilisateur autorisé à afficher les environnements et à accéder à l'interface Web Airflow, attribuez le rôle Utilisateur de Composer (composer.user).

Attribuer des autorisations permettant d'utiliser gcloud avec les environnements

Les autorisations suivantes sont requises pour utiliser l'outil de ligne de commande gcloud avec les environnements Cloud Composer, par exemple, pour exécuter les commandes CLI Airflow.

Si vous souhaitez gérer des environnements ou des buckets d'environnement avec des commandes gcloud composer, vous devez également disposer d'un rôle disposant des autorisations suffisantes pour le faire.

Pour utiliser gcloud avec des environnements Cloud Composer, vous devez disposer des autorisations suivantes:

  • composer.environments.get
  • container.clusters.get
  • container.clusters.list
  • container.clusters.getCredentials

Rôles

Rôle Autorisations

Extension de l'agent de service de l'API Cloud Composer v2
(roles/composer.ServiceAgentV2Ext)

L'extension de l'agent de service de l'API Cloud Composer v2 est un rôle complémentaire nécessaire pour gérer les environnements Composer v2.

  • iam.serviceAccounts.getiamPolicy
  • iam.serviceAccounts.setIamPolicy

Administrateur Composer
(roles/composer.admin)

Permet un contrôle total des ressources Cloud Composer.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • composer.*
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

Administrateur de l'environnement et des objets Storage
(roles/composer.environmentAndStorageObjectAdmin)

Permet un contrôle total des ressources Cloud Composer ainsi que des objets de tous les buckets du projet.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • composer.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.*

Utilisateur de l'environnement et lecteur des objets Storage
(roles/composer.environmentAndStorageObjectViewer)

Fournit les autorisations nécessaires pour répertorier et obtenir les environnements et les opérations Cloud Composer. Offre un accès en lecture seule aux objets de tous les buckets du projet.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • composer.environments.get
  • composer.environments.list
  • composer.imageversions.*
  • composer.operations.get
  • composer.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.get
  • storage.objects.list

Agent Composer dans le VPC partagé
(roles/composer.sharedVpcAgent)

Rôle qui doit être attribué au compte de service de l'agent Composer dans le projet hôte VPC partagé

  • compute.networks.access
  • compute.networks.addPeering
  • compute.networks.get
  • compute.networks.list
  • compute.networks.listPeeringRoutes
  • compute.networks.removePeering
  • compute.networks.updatePeering
  • compute.networks.use
  • compute.networks.useExternalIp
  • compute.projects.get
  • compute.regions.*
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp
  • compute.zones.*

Utilisateur de Composer
(roles/composer.user)

Fournit les autorisations nécessaires pour répertorier et obtenir les environnements et les opérations Cloud Composer.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • composer.environments.get
  • composer.environments.list
  • composer.imageversions.*
  • composer.operations.get
  • composer.operations.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

Nœud de calcul Composer
(roles/composer.worker)

Fournit les autorisations nécessaires pour exécuter une VM avec environnement Cloud Composer. Destiné aux comptes de service.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Projet
  • artifactregistry.*
  • cloudbuild.builds.create
  • cloudbuild.builds.get
  • cloudbuild.builds.list
  • cloudbuild.builds.update
  • cloudbuild.workerpools.use
  • container.*
  • containeranalysis.occurrences.create
  • containeranalysis.occurrences.delete
  • containeranalysis.occurrences.get
  • containeranalysis.occurrences.list
  • containeranalysis.occurrences.update
  • logging.logEntries.create
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.timeSeries.*
  • pubsub.schemas.attach
  • pubsub.schemas.create
  • pubsub.schemas.delete
  • pubsub.schemas.get
  • pubsub.schemas.list
  • pubsub.schemas.validate
  • pubsub.snapshots.create
  • pubsub.snapshots.delete
  • pubsub.snapshots.get
  • pubsub.snapshots.list
  • pubsub.snapshots.seek
  • pubsub.snapshots.update
  • pubsub.subscriptions.consume
  • pubsub.subscriptions.create
  • pubsub.subscriptions.delete
  • pubsub.subscriptions.get
  • pubsub.subscriptions.list
  • pubsub.subscriptions.update
  • pubsub.topics.attachSubscription
  • pubsub.topics.create
  • pubsub.topics.delete
  • pubsub.topics.detachSubscription
  • pubsub.topics.get
  • pubsub.topics.list
  • pubsub.topics.publish
  • pubsub.topics.update
  • pubsub.topics.updateTag
  • remotebuildexecution.blobs.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • source.repos.get
  • source.repos.list
  • storage.buckets.create
  • storage.buckets.get
  • storage.buckets.list
  • storage.objects.*

Rôles de base

Rôle Titre Description Autorisations Ressource la plus basse
roles/owner Propriétaire Rôle de base permettant un contrôle complet sur les ressources Cloud Composer. composer.environments.create
composer.environments.delete
composer.environments.get
composer.environments.list
composer.environnements.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations.list
iam.serviceAccounts.actAs
Projet
roles/editor Éditeur Rôle de base permettant un contrôle complet sur les ressources Cloud Composer. composer.environments.create
composer.environments.delete
composer.environments.get
composer.environments.list
composer.environnements.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations.list
iam.serviceAccounts.actAs
Projet
roles/viewer Lecteur Rôle de base permettant à un utilisateur de répertorier et d'obtenir des ressources Cloud Composer. composer.environments.get
composer.environments.list
composer.imageversions.list
composer.operations.get
compositeur.opérations.list
Projet

Autorisations

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour appeler chaque méthode d'API dans l'API Cloud Composer ou pour effectuer des tâches à l'aide des outils Google Cloud utilisant l'API (tels que Google Cloud Console ou le SDK Cloud) à

Méthode Autorisation
environments.create composer.environments.create et iam.serviceAccounts.actAs sur le compte de service de l'environnement.
environments.delete composer.environments.delete
environments.get composer.environments.get
environments.list composer.environments.list
environments.update composer.environments.update
operations.delete composer.operations.delete
operations.get composer.operations.get
operations.list composer.operations.list

Utiliser un compte de service d'un autre projet

Si vous souhaitez qu'un environnement Cloud Composer d'un projet utilise un compte de service géré par l'utilisateur d'un autre projet, procédez comme suit:

  1. Configurez le compte de service géré par l'utilisateur pour qu'il fonctionne sur plusieurs projets.
  2. Dans le cadre de ce processus, vous devez attribuer le rôle Créateur de jetons de compte de service aux comptes de service gérés par Google suivants sur votre compte de service géré par l'utilisateur:

    1. Compte de service Compute Engine par défaut (PROJECT_NUMBER-compute@developer.gserviceaccount.com)
    2. Agent de service Cloud Composer (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)

Étape suivante