Limiter l'accès à Google Cloud Deploy à l'aide d'IAM

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Comme pour tous les produits Google Cloud, Identity and Access Management protège Google Cloud Deploy en contrôlant quels utilisateurs et comptes de service authentifiés peuvent effectuer quelles actions.

Ce document décrit certaines des fonctionnalités d'IAM et fournit des instructions pour protéger les diffusions de vos applications qui sont gérées à l'aide de Google Cloud Deploy. Voici quelques-unes des méthodes spécifiques permettant de limiter l'accès aux actions et aux ressources dans Google Cloud Deploy:

Avant de commencer

À propos des fonctionnalités avancées d'IAM

Outre les rôles et les autorisations, Google Cloud Deploy utilise les fonctionnalités suivantes d'IAM pour fournir ces contrôles:

À propos des stratégies IAM

Une stratégie IAM est un ensemble de liaisons et de métadonnées. La liaison de rôle accorde un seul rôle à un ou plusieurs comptes principaux (utilisateurs, groupes ou comptes de service), ainsi qu'à des conditions propres au contexte qui déterminent si la liaison prend effet.

Pour en savoir plus sur les stratégies IAM, consultez la page Comprendre les stratégies.

À propos des conditions IAM

Les conditions IAM vous permettent de contrôler l'accès aux ressources et aux actions Google Cloud Deploy en fonction des conditions calculées au moment de l'exécution. Par exemple, vous pouvez restreindre la promotion à une cible donnée afin qu'elle ne soit autorisée que pendant une période donnée.

À propos des attributs de l'API

Lorsque vous créez des conditions IAM, vous pouvez référencer des attributs d'API pour obtenir des informations d'exécution sur une requête. Par exemple, vous pouvez utiliser un attribut d'API pour obtenir le nom de la ressource à laquelle la requête est destinée. Vous pouvez ensuite le comparer à la ou aux ressources auxquelles le compte principal a accès.

Accorder un accès précis à l'aide de fonctionnalités IAM avancées

Ces fonctionnalités IAM avancées vous permettent de contrôler l'accès à des ressources spécifiques et à des types de ressources dans des conditions spécifiques.

Les procédures de cette section accordent l'accès à des ressources spécifiques (cibles, pipelines de livraison). Vous pouvez également accorder l'accès au niveau du projet, ce qui affecte tous les pipelines de livraison ou toutes les cibles de ce projet. Pour définir une stratégie IAM pour un projet, utilisez la commande gcloud projects set-iam-policy:

gcloud projects set-iam-policy PROJECT_ID POLICY_FILE

Accorder l'accès à un pipeline de livraison spécifique

Vous pouvez accorder des autorisations à un compte principal pour créer, modifier et supprimer tous les pipelines de livraison en attribuant simplement un rôle approprié. Cependant, vous aurez parfois besoin d'accorder cet accès à un ou plusieurs pipelines spécifiques.

Pour ce faire, utilisez des liaisons de rôles pour lier le rôle roles/clouddeploy.developer à ce compte principal, puis lorsque vous appliquez la stratégie (avec setIamPolicy), vous spécifiez le pipeline de diffusion pour lequel l'accès est accordé.

Pour accorder l'accès à un pipeline de livraison spécifique:

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.developer
      members:
      - user:fatima@example.com
    

    L'exemple ci-dessus attribue le rôle à un utilisateur, mais vous pouvez aussi l'attribuer à un groupe ou à un compte de service.

  2. Appelez la commande suivante pour appliquer le fichier de stratégie à un pipeline de livraison spécifique:

    gcloud deploy delivery-pipelines set-iam-policy --delivery-pipeline=PIPELINE_NAME --region=REGION POLICY_FILE
    

Accorder l'accès pour configurer une cible spécifique

Pour accorder à un compte principal l'accès à une cible spécifique, vous pouvez utiliser des liaisons de rôles. Pour ce faire, associez le rôle roles/clouddeploy.operator à ce compte principal, puis spécifiez la cible à laquelle l'accès est accordé en appliquant la stratégie (avec setIamPolicy).

L'accès à la cible spécifique permet au compte principal de la mettre à jour et de la supprimer.

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - group:cd_operators@example.com
    

    L'exemple ci-dessus attribue le rôle à un groupe, mais vous pouvez aussi l'attribuer à un utilisateur ou à un compte de service.

  2. Appelez la commande suivante pour appliquer le fichier de stratégie à une cible spécifique:

    gcloud deploy targets set-iam-policy TARGET --region=REGION POLICY_FILE
    

Accorder des autorisations pour promouvoir une version vers une cible spécifique

Cette procédure suppose qu'une stratégie associe déjà le rôle au compte principal. Ici, nous ajoutons une condition spécifiant la cible:

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod"
        title: Deploy to prod
    

    Dans cette liaison de rôle, condition utilise une paire clé/valeur, où la clé est expression et la valeur est une expression CEL. Cette expression fait référence à un ensemble d'attributs contextuels sur la requête et renvoie une valeur booléenne.

    Dans ce cas, l'expression est évaluée lorsque le compte principal tente de promouvoir la version, afin de vérifier que la cible de la promotion correspond à la cible dans l'expression.

    L'expression utilise l'attribut d'API clouddeploy.com/rolloutTarget, qui est la cible vers laquelle le compte principal tente d'effectuer la promotion. L'expression la compare à la cible pour laquelle le compte principal bénéficie de l'accès à la promotion.

  2. Définissez la liaison pour un pipeline de livraison spécifique:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Si vous souhaitez définir cette liaison pour tous les pipelines de livraison, vous pouvez la définir au niveau du projet:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Accorder des autorisations pour approuver des déploiements vers une cible spécifique

La liaison de cette section accorde à un compte principal une autorisation pour approuver les déploiements d'un pipeline et inclut une condition qui applique l'autorisation pour la cible prod.

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.approver
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/rolloutTarget", "") == "prod"
        title: Deploy to prod
    

    Dans cette liaison de rôle, condition utilise une paire clé/valeur, où la clé est expression et la valeur est une expression CEL. L'expression fait référence à un ensemble d'attributs contextuels concernant la requête et renvoie une valeur booléenne.

    Dans ce cas, l'expression est évaluée lorsque le compte principal tente d'approuver le déploiement pour vérifier que la cible correspond bien à la cible de l'expression.

    L'expression utilise l'attribut d'API clouddeploy.com/rolloutTarget, qui est la cible du déploiement, et la compare à la cible pour laquelle le compte principal a accès à l'approbation. L'attribut clouddeploy.googleapis.com/rolloutTarget est le seul attribut d'API compatible avec Google Cloud Deploy.

  2. Définissez la liaison pour un pipeline de livraison spécifique:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Si vous souhaitez définir cette liaison pour tous les pipelines de livraison, vous pouvez la définir au niveau du projet:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Accorder des autorisations pour promouvoir une version pendant une période spécifique

La liaison de cette section accorde à un compte principal une autorisation pour promouvoir les versions d'un pipeline et inclut une condition qui spécifie la période pendant laquelle la liaison est appliquée.

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6
        title: Promote during safe window
    

    Dans cette liaison de rôle, condition utilise une paire clé/valeur, où la clé est expression et la valeur est une expression CEL. L'expression fait référence à un ensemble d'attributs contextuels concernant la requête et renvoie une valeur booléenne. Cette expression vérifie que l'heure de la requête a lieu du lundi au vendredi.

    Dans ce cas, l'expression est évaluée lorsque le compte principal tente de promouvoir la version, afin de vérifier que la cible de la promotion correspond à la cible dans l'expression.

  2. Définissez la liaison pour un pipeline de livraison spécifique:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Si vous souhaitez définir cette liaison pour tous les pipelines de livraison, vous pouvez la définir au niveau du projet:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Accorder des autorisations pour approuver des déploiements pendant une période spécifique

La liaison de cette section accorde à un compte principal une autorisation pour approuver les déploiements et inclut une condition qui spécifie la période pendant laquelle la liaison est appliquée.

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.approver
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: request.time.getDayOfWeek("America/Los_Angeles") > 0 && request.time.getDayOfWeek("America/Los_Angeles") < 6
        title: Approve during safe window
    

    Dans cette liaison de rôle, condition utilise une paire clé/valeur, où la clé est expression et la valeur une expression CEL qui fait référence à un ensemble d'attributs contextuels relatifs à la requête et renvoie une valeur booléenne Cette expression vérifie que l'heure de la requête a lieu du lundi au vendredi.

    Dans ce cas, l'expression est évaluée lorsque le compte principal tente d'approuver le déploiement pour vérifier que la cible du déploiement correspond bien à la cible de l'expression.

  2. Définissez la liaison pour un pipeline de livraison spécifique:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Si vous souhaitez définir cette liaison pour tous les pipelines de livraison, vous pouvez la définir au niveau du projet:

    gcloud projects set-iam-policy PROJECT POLICY_FILE
    

Accorder des autorisations pour relancer une tâche en fonction de son type

La liaison de cette section accorde à un compte principal l'autorisation de relancer une tâche Google Cloud Deploy, en fonction du type de tâche

  1. Créez un fichier de stratégie avec la liaison suivante:

    bindings:
    - role: roles/clouddeploy.operator
      members:
      - serviceAccount:prod_operator@project-12345.iam.gserviceaccount.com
      condition:
        expression: api.getAttribute("clouddeploy.googleapis.com/jobType", "") == "deploy"
        title: Retry deploy job
    

    Dans cette liaison de rôle, condition utilise une paire clé/valeur, où la clé est expression et la valeur est une expression CEL. L'expression fait référence à un ensemble d'attributs contextuels concernant la requête et renvoie une valeur booléenne.

    Dans ce cas, l'expression est évaluée lorsque le compte principal tente de relancer la tâche, pour vérifier que les types de tâches correspondent bien à ceux de l'expression.

    L'expression utilise l'attribut d'API clouddeploy.com/jobType, qui peut être deploy ou verify.

  2. Définissez la liaison pour un pipeline de livraison spécifique:

    gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILE
    

    Si vous souhaitez définir cette liaison pour tous les pipelines de livraison, vous pouvez la définir au niveau du projet:

    gcloud projects set-iam-policy PROJECT POLICY_FILE