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 lequel 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 du contrôle des accès, consultez la page 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. Ce compte de service dispose des autorisations suffisantes pour afficher les fichiers manifestes et les déployer sur vos cibles.

Apprenez-en plus sur la manière dont Cloud Deploy utilise les comptes de service.

Rôles Cloud Deploy prédéfinis

Avec IAM, chaque méthode de l'API Cloud Deploy nécessite 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:

Rôle Description Autorisations
roles/clouddeploy.viewer Peut consulter Cloud Deploy

aux ressources Google Cloud,

clouddeploy.*.get

clouddeploy.*.list

roles/clouddeploy.admin Contrôle complet des ressources Cloud Deploy. clouddeploy.*
roles/clouddeploy.customTargetTypeAdmin Contrôle complet des types de cibles personnalisées Cloud Deploy. clouddeploy.customTargetType.*
roles/clouddeploy.developer Peut créer, récupérer, mettre à jour

supprimer les ressources du pipeline de livraison Cloud Deploy.

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.update

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.operations.*

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

roles/clouddeploy.operator Peut créer, récupérer, mettre à jour et supprimer

Pipeline de livraison Cloud Deploy et ressources cibles

Peut créer et récupérer des ressources de publication, de déploiement et d'exécution de jobs.

Peut récupérer des ressources de type cible personnalisé.

clouddeploy.customTargetType.get

clouddeploy.customTargetType.list

clouddeploy.customTargetType.getIamPolicy

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.update

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.releases.*

clouddeploy.targets.get

clouddeploy.targets.list

clouddeploy.targets.create

clouddeploy.targets.delete

clouddeploy.targets.update

clouddeploy.targets.getIamPolicy

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

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.jobRuns.terminate

clouddeploy.automations.*

clouddeploy.automationRuns.*

roles/clouddeploy.approver Peut consulter et approuver Cloud Deploy

Google Cloud Deploy uniquement.

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.approve

clouddeploy.operations.*

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

roles/clouddeploy.jobRunner Peut exécuter des tâches Cloud Deploy

l'autorisation de déployer sur une cible.

logging.logEntries.create

storage.objects.create

storage.objects.list

storage.objects.get

roles/clouddeploy.releaser Peut créer et récupérer des versions et des déploiements clouddeploy.customTargetType.get

clouddeploy.deliveryPipelines.get

clouddeploy.targets.get

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

clouddeploy.jobRuns.list

En plus des rôles prédéfinis Cloud Deploy, les rôles Lecteur, Éditeur et Propriétaire de base incluent également des autorisations lié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 Supprimez une ressource d'automatisation existante.
automations.get() clouddeploy.automations.get Récupérez les détails d'une ressource d'automatisation individuelle.
automations.list() clouddeploy.automations.list Listez les ressources d'automatisation et leurs métadonnées.
automations.update() clouddeploy.automations.update Mettre à jour une ressource d'automatisation existante
automationRuns.cancel() clouddeploy.automationRuns.cancel Annuler une automatisation en cours d'exécution.
automationRuns.get() clouddeploy.automationRuns.get Récupérez les détails d'une exécution d'automatisation individuelle.
automationRuns.list() clouddeploy.automationRuns.list Listez les exécutions d'automatisation et leurs métadonnées.
customTargetTypes.create() clouddeploy.customTargetType.create Créez une ressource de type de cible personnalisée.
customTargetTypes.delete() clouddeploy.customTargetType.delete Supprimez une ressource de type de cible personnalisée.
customTargetTypes.get() clouddeploy.customTargetType.get Récupérez les détails d'un type de cible personnalisé.
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy Obtenez la stratégie IAM d'une ressource de type de cible personnalisée.
customTargetTypes.list() clouddeploy.customTargetType.list Listez les types de cibles personnalisées disponibles et leurs métadonnées.
customTargetTypes.patch() clouddeploy.customTargetType.patch Mettez à jour un type de cible personnalisée existant.
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.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 Annule une cible.
deliveryPipelines.setIamPolicy() clouddeploy.deliveryPipelines.setIamPolicy Définissez la stratégie IAM pour une ressource de pipeline de livraison.
deliveryPipelines.update() clouddeploy.deliveryPipelines.update Met à jour une ressource de pipeline de diffusion existante.
jobRuns.get() clouddeploy.jobRuns.get Récupérez une ressource JobRuns.
jobRuns.list() clouddeploy.jobRuns.list Répertorier les ressources JobRuns et leurs métadonnées.
jobRuns.terminate() clouddeploy.jobRuns.terminate mettre fin à l'exécution d'un 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 obtenir une opération de longue durée spécifique (par exemple, pour renvoyer l'état de 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 par rapport à celle-ci
releases.create() clouddeploy.releases.create Créez une ressource de version. L'appelant a également besoin 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.
releases.promote() clouddeploy.rollouts.create Convertit la version en cible suivante.
rollouts.advance() clouddeploy.rollouts.advance Avancer le 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. L'appelant a également besoin 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 une tâche ayant échoué.
rollouts.list() clouddeploy.rollouts.list Répertorie les déploiements et les métadonnées.
rollouts.retryJob() clouddeploy.rollouts.retryJob Relance une tâche ayant échoué.
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 Récupère la stratégie IAM d'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 Mettre à 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 conditionnelle

    Appliquez des stratégies d'accès par programmation, y compris les conditions sous 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.

  • Mettre à jour 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.

  • Mettre à jour 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 à des groupes spécifiques pour une cible ou un pipeline de livraison spécifique.

    Vous pouvez également définir une condition qui limite cet accès pendant une période spécifiée.

Étapes suivantes