Rôles et autorisations IAM

Cette page décrit les comptes de service, les rôles et les autorisations Cloud Deploy.

Les accès dans Cloud Deploy sont contrôlés à l'aide d'Identity and Access Management (IAM). IAM vous permet de créer et de gérer les autorisations pour les ressources Google Cloud . Cloud Deploy fournit un ensemble spécifique de rôles IAM prédéfinis dans lesquels chaque rôle contient un ensemble d'autorisations. Vous pouvez utiliser ces rôles pour accorder un accès plus précis à des ressources Google Cloud spécifiques et empêcher tout accès indésirable à d'autres ressources. IAM vous permet d'adopter le principe de sécurité du moindre privilège afin de n'accorder que l'accès nécessaire à vos ressources.

Pour en savoir plus sur les fonctionnalités de sécurité avancées de contrôle des accès, consultez Utiliser IAM pour restreindre l'accès à Cloud Deploy.

Comptes de service dans Cloud Deploy

Par défaut, Cloud Deploy s'exécute à l'aide du compte de service Compute Engine par défaut. Pour en savoir plus sur la configuration de ce compte de service pour une utilisation avec Cloud Deploy ou sur le choix d'un autre compte, consultez la documentation sur le compte de service d'exécution Cloud Deploy.

En savoir plus sur l'utilisation des comptes de service par Cloud Deploy

Rôles Cloud Deploy prédéfinis

Avec IAM, toutes les méthodes d'API de l'API Cloud Deploy nécessitent que l'identité effectuant la requête API dispose des autorisations appropriées pour utiliser la ressource. Pour accorder des autorisations, vous devez définir des stratégies qui attribuent des rôles à un compte principal (utilisateur, groupe ou compte de service) du projet. Vous pouvez attribuer plusieurs rôles à une entité principale sur la même ressource.

La documentation IAM inclut une référence consultable de tous les rôles prédéfinis.

Le tableau suivant répertorie les rôles IAM Cloud Deploy et les autorisations associées :

Role Permissions

(roles/clouddeploy.admin)

Full control of Cloud Deploy resources.

clouddeploy.*

  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list
  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.config.get
  • clouddeploy.customTargetTypes.create
  • clouddeploy.customTargetTypes.delete
  • clouddeploy.customTargetTypes.get
  • clouddeploy.customTargetTypes.getIamPolicy
  • clouddeploy.customTargetTypes.list
  • clouddeploy.customTargetTypes.setIamPolicy
  • clouddeploy.customTargetTypes.update
  • clouddeploy.deliveryPipelines.create
  • clouddeploy.deliveryPipelines.createTagBinding
  • clouddeploy.deliveryPipelines.delete
  • clouddeploy.deliveryPipelines.deleteTagBinding
  • clouddeploy.deliveryPipelines.get
  • clouddeploy.deliveryPipelines.getIamPolicy
  • clouddeploy.deliveryPipelines.list
  • clouddeploy.deliveryPipelines.listEffectiveTags
  • clouddeploy.deliveryPipelines.listTagBindings
  • clouddeploy.deliveryPipelines.setIamPolicy
  • clouddeploy.deliveryPipelines.update
  • clouddeploy.deployPolicies.create
  • clouddeploy.deployPolicies.delete
  • clouddeploy.deployPolicies.get
  • clouddeploy.deployPolicies.getIamPolicy
  • clouddeploy.deployPolicies.list
  • clouddeploy.deployPolicies.override
  • clouddeploy.deployPolicies.setIamPolicy
  • clouddeploy.deployPolicies.update
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate
  • clouddeploy.locations.get
  • clouddeploy.locations.list
  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list
  • clouddeploy.releases.abandon
  • clouddeploy.releases.create
  • clouddeploy.releases.get
  • clouddeploy.releases.list
  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.approve
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.create
  • clouddeploy.rollouts.get
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.list
  • clouddeploy.rollouts.retryJob
  • clouddeploy.rollouts.rollback
  • clouddeploy.targets.create
  • clouddeploy.targets.createTagBinding
  • clouddeploy.targets.delete
  • clouddeploy.targets.deleteTagBinding
  • clouddeploy.targets.get
  • clouddeploy.targets.getIamPolicy
  • clouddeploy.targets.list
  • clouddeploy.targets.listEffectiveTags
  • clouddeploy.targets.listTagBindings
  • clouddeploy.targets.setIamPolicy
  • clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.approver)

Permission to approve or reject rollouts.

clouddeploy.config.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.*

  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list

clouddeploy.rollouts.approve

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.customTargetTypeAdmin)

Permission to manage CustomTargetType resources

clouddeploy.config.get

clouddeploy.customTargetTypes.*

  • clouddeploy.customTargetTypes.create
  • clouddeploy.customTargetTypes.delete
  • clouddeploy.customTargetTypes.get
  • clouddeploy.customTargetTypes.getIamPolicy
  • clouddeploy.customTargetTypes.list
  • clouddeploy.customTargetTypes.setIamPolicy
  • clouddeploy.customTargetTypes.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.developer)

Permission to manage deployment configuration without permission to access operational resources, such as targets.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.createTagBinding

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.deleteTagBinding

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deliveryPipelines.update

clouddeploy.deployPolicies.get

clouddeploy.deployPolicies.list

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.*

  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list

clouddeploy.releases.*

  • clouddeploy.releases.abandon
  • clouddeploy.releases.create
  • clouddeploy.releases.get
  • clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.jobRunner)

Permission to execute Cloud Deploy work without permission to deliver to a target.

clouddeploy.config.get

logging.logEntries.create

storage.objects.create

storage.objects.get

storage.objects.list

(roles/clouddeploy.operator)

Permission to manage deployment configuration.

clouddeploy.automationRuns.*

  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

clouddeploy.automations.*

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.createTagBinding

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.deleteTagBinding

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deliveryPipelines.update

clouddeploy.deployPolicies.get

clouddeploy.deployPolicies.getIamPolicy

clouddeploy.deployPolicies.list

clouddeploy.jobRuns.*

  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.*

  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list

clouddeploy.releases.*

  • clouddeploy.releases.abandon
  • clouddeploy.releases.create
  • clouddeploy.releases.get
  • clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.targets.create

clouddeploy.targets.createTagBinding

clouddeploy.targets.delete

clouddeploy.targets.deleteTagBinding

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.listEffectiveTags

clouddeploy.targets.listTagBindings

clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.policyAdmin)

Permission to manage Deploy Policies.

clouddeploy.deployPolicies.*

  • clouddeploy.deployPolicies.create
  • clouddeploy.deployPolicies.delete
  • clouddeploy.deployPolicies.get
  • clouddeploy.deployPolicies.getIamPolicy
  • clouddeploy.deployPolicies.list
  • clouddeploy.deployPolicies.override
  • clouddeploy.deployPolicies.setIamPolicy
  • clouddeploy.deployPolicies.update

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.*

  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.policyOverrider)

Permission to override Deploy Policies.

clouddeploy.deployPolicies.get

clouddeploy.deployPolicies.list

clouddeploy.deployPolicies.override

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.*

  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.releaser)

Permission to create Cloud Deploy releases and rollouts.

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.deliveryPipelines.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.*

  • clouddeploy.operations.cancel
  • clouddeploy.operations.delete
  • clouddeploy.operations.get
  • clouddeploy.operations.list

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.targets.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/clouddeploy.serviceAgent)

Gives Cloud Deploy Service Account access to managed resources.

cloudbuild.builds.create

cloudbuild.builds.get

cloudbuild.builds.list

cloudbuild.builds.update

cloudbuild.workerpools.use

iam.serviceAccounts.actAs

iam.serviceAccounts.getAccessToken

logging.logEntries.create

pubsub.topics.get

pubsub.topics.publish

servicemanagement.services.report

serviceusage.services.use

storage.buckets.create

storage.buckets.get

storage.objects.get

(roles/clouddeploy.viewer)

Can view Cloud Deploy resources.

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.listEffectiveTags

clouddeploy.deliveryPipelines.listTagBindings

clouddeploy.deployPolicies.get

clouddeploy.deployPolicies.getIamPolicy

clouddeploy.deployPolicies.list

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

  • clouddeploy.locations.get
  • clouddeploy.locations.list

clouddeploy.operations.get

clouddeploy.operations.list

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.listEffectiveTags

clouddeploy.targets.listTagBindings

resourcemanager.projects.get

resourcemanager.projects.list

Outre les rôles Cloud Deploy prédéfinis, les rôles de base Lecteur, Éditeur et Propriétaire incluent également les autorisations associées à Cloud Deploy. Cependant, nous vous recommandons d'attribuer des rôles prédéfinis lorsque cela est possible afin de respecter le principe de sécurité du moindre privilège.

Autorisations

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour appeler chaque méthode :

Méthode API Autorisation requise Description
automations.create() clouddeploy.automations.create Créez une ressource d'automatisation.
automations.delete() clouddeploy.automations.delete Supprime une ressource d'automatisation existante.
automations.get() clouddeploy.automations.get Récupère les détails d'une ressource d'automatisation individuelle.
automations.list() clouddeploy.automations.list Répertorie les ressources d'automatisation et leurs métadonnées.
automations.update() clouddeploy.automations.update Mettez à jour une ressource d'automatisation existante.
automationRuns.cancel() clouddeploy.automationRuns.cancel Annule une automatisation en cours d'exécution.
automationRuns.get() clouddeploy.automationRuns.get Récupère les détails d'une exécution d'automatisation individuelle.
automationRuns.list() clouddeploy.automationRuns.list Répertorie les exécutions d'automatisation et leurs métadonnées.
customTargetTypes.create() clouddeploy.customTargetTypes.create Créez une ressource de type de cible personnalisée.
customTargetTypes.delete() clouddeploy.customTargetTypes.delete Supprime une ressource de type de cible personnalisée.
customTargetTypes.get() clouddeploy.customTargetTypes.get Récupère les détails d'un type de cible personnalisée.
customTargetTypes.getIamPolicy() clouddeploy.customTargetTypes.getIamPolicy Obtenir la stratégie IAM associée à une ressource de type de cible personnalisée.
customTargetTypes.list() clouddeploy.customTargetTypes.list Répertorie les types de cibles personnalisées disponibles et leurs métadonnées.
customTargetTypes.patch() clouddeploy.customTargetTypes.patch Mettez à jour un type de cible personnalisée existant.
customTargetTypes.setIamPolicy() clouddeploy.customTargetTypes.setIamPolicy Définissez la stratégie IAM pour une ressource de type de cible personnalisée.
deliveryPipelines.create() clouddeploy.deliveryPipelines.create Crée une ressource de pipeline de diffusion.
deliveryPipelines.delete() clouddeploy.deliveryPipelines.delete Supprime une ressource de pipeline de diffusion existante.
deliveryPipelines.get() clouddeploy.deliveryPipelines.get Récupère les informations sur un pipeline de diffusion individuel.
deliveryPipelines.getIamPolicy() clouddeploy.deliveryPipelines.getIamPolicy Obtient la stratégie IAM associée à une ressource de pipeline de diffusion.
deliveryPipelines.list() clouddeploy.deliveryPipelines.list Répertorie les pipelines de diffusion et leurs métadonnées.
deliveryPipelines.rollbackTarget() clouddeploy.rollouts.rollback Effectue un rollback d'une cible.
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy Définit la stratégie IAM pour une ressource de pipeline de diffusion.
deliveryPipelines.update() clouddeploy.deliveryPipelines.update Met à jour une ressource de pipeline de diffusion existante.
deployPolicies.create() clouddeploy.deployPolicies.create Créez une ressource de règle de déploiement.
deployPolicies.delete() clouddeploy.deployPolicies.delete Supprime une ressource de règle de déploiement.
deployPolicies.get() clouddeploy.deployPolicies.get Récupère les détails d'une ressource de stratégie de déploiement.
deployPolicies.list() clouddeploy.deployPolicies.list Répertorie les stratégies de déploiement disponibles et leurs métadonnées.
jobRuns.get() clouddeploy.jobRuns.get Récupérez une ressource JobRuns.
jobRuns.list() clouddeploy.jobRuns.list Répertorie les ressources JobRuns et leurs métadonnées.
jobRuns.terminate() clouddeploy.jobRuns.terminate Arrêtez une exécution de job en cours.
operations.cancel() clouddeploy.operations.cancel Annule une opération de longue durée.
operation.delete() clouddeploy.operations.delete Supprime une opération de longue durée.
operations.get() clouddeploy.operations.get Obtenez une opération de longue durée spécifique (par exemple, pour renvoyer l'état de la création d'une version).
operations.list() clouddeploy.operations.list Répertorie les opérations de longue durée.
releases.abandon() clouddeploy.releases.abandon Abandonner une version et empêcher d'autres déploiements pour cette version
releases.create() clouddeploy.releases.create Crée une ressource de version. L'appelant doit également disposer de l'autorisation iam.serviceAccounts.actAs sur le compte de service utilisé pour afficher le fichier manifeste.
releases.get() clouddeploy.releases.get Récupère les détails de la version individuelle.
releases.list() clouddeploy.releases.list Répertorie les versions et les métadonnées.
rollouts.advance() clouddeploy.rollouts.advance Faites passer un déploiement à la phase suivante.
rollouts.approve() clouddeploy.rollouts.approve Approuve ou refuse un déploiement avec l'état d'approbation required.
rollouts.cancel() clouddeploy.rollouts.cancel Annuler un déploiement
rollouts.create() clouddeploy.rollouts.create Créez une ressource de déploiement ou promouvez une version. L'appelant doit également disposer de l'autorisation iam.serviceAccounts.actAs sur le projet ou le compte de service utilisé pour le déploiement.
rollouts.get() clouddeploy.rollouts.get Récupère les détails du déploiement individuel.
rollouts.ignoreJob() clouddeploy.rollouts.ignoreJob Ignorer un job en échec
rollouts.list() clouddeploy.rollouts.list Répertorie les déploiements et les métadonnées.
rollouts.retryJob() clouddeploy.rollouts.retryJob Relance un job ayant échoué.
rollouts.advance(), rollouts.approve(), rollouts.cancel(), rollouts.create(), rollouts.ignoreJob(), rollouts.retryJob(), deliveryPipelines.rollbackTarget(), jobRuns.terminate() clouddeploy.deployPolicies.override Remplace une ressource de règle de déploiement.
deployPolicies.update() clouddeploy.deployPolicies.update Mettez à jour une ressource de règle de déploiement existante.
targets.create() clouddeploy.targets.create Crée une ressource cible.
targets.delete() clouddeploy.targets.delete Supprime une ressource cible existante.
targets.get() clouddeploy.targets.get Récupère les détails d'une cible individuelle.
targets.getIamPolicy() clouddeploy.targets.getIamPolicy Obtient la stratégie IAM pour une ressource cible.
targets.list() clouddeploy.targets.list Répertorie les cibles et leurs métadonnées.
targets.setIamPolicy() clouddeploy.targets.setIamPolicy Définit la stratégie IAM pour une ressource cible.
targets.update() clouddeploy.targets.update Met à jour une ressource cible existante.

Utiliser IAM pour limiter les actions sur les ressources Cloud Deploy

Vous pouvez sécuriser vos ressources Cloud Deploy à l'aide d'IAM de différentes manières :

  • API méta IAM

    Utilisez setIamPolicy sur les ressources Cloud Deploy pour limiter les actions sur ces ressources.

  • IAM conditionnel

    Appliquez des règles d'accès de manière programmatique, y compris les conditions dans lesquelles accorder ou refuser l'accès.

Vous pouvez utiliser ces règles et conditions pour limiter les actions suivantes sur vos ressources Cloud Deploy :

  • Créer un pipeline ou une cible de livraison

    Vous pouvez accorder cet accès à des utilisateurs ou des groupes spécifiques.

  • Modifier ou supprimer un pipeline de livraison spécifique

    Vous pouvez accorder cet accès à des utilisateurs ou des groupes spécifiques.

  • Créer une version pour un pipeline de diffusion spécifique

    Vous pouvez accorder cet accès à des utilisateurs ou des groupes spécifiques.

  • Modifier ou supprimer une cible spécifique

    Vous pouvez accorder cet accès à des utilisateurs ou des groupes spécifiques.

  • Créer ou approuver un déploiement ou promouvoir une version

    Vous pouvez accorder cet accès à des utilisateurs ou groupes spécifiques pour un pipeline cible ou de livraison spécifique.

    Vous pouvez également définir une condition qui limite cet accès à une période spécifique.

Étape suivante