Comme tous les Google Cloud produits, Identity and Access Management protège Cloud Deploy en contrôlant les utilisateurs authentifiés et les comptes de service qui peuvent effectuer des actions.
Ce document décrit certaines des fonctionnalités d'IAM et fournit des instructions pour protéger les diffusions d'applications gérées à l'aide de Cloud Deploy. Voici quelques-unes des façons spécifiques de restreindre l'accès aux actions et aux ressources dans Cloud Deploy :
Accorder des autorisations pour promouvoir une version vers une cible spécifique
Accorder des autorisations pour approuver des déploiements vers une cible spécifique
Accorder des autorisations pour promouvoir une version pendant une période donnée
Accorder des autorisations pour approuver des déploiements pendant une période spécifique
Avant de commencer
Explorez les concepts fondamentaux d'IAM.
Découvrez les rôles et les autorisations Cloud Deploy.
À propos des fonctionnalités avancées d'IAM
Outre les rôles et les autorisations, 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
Avec les conditions IAM, vous pouvez contrôler l'accès aux ressources et aux actions Cloud Deploy en fonction de conditions calculées au moment de l'exécution. Par exemple, vous pouvez limiter la promotion à une cible donnée afin qu'elle ne soit autorisée que pendant une période spécifiée.
À propos des attributs d'API
Lorsque vous créez des conditions IAM, vous pouvez faire référence à 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 la comparer à la ou aux ressources auxquelles le compte principal a accès.
Accorder un accès précis à l'aide des fonctionnalités avancées d'IAM
Ces fonctionnalités avancées d'IAM 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 diffusion). Vous pouvez également accorder l'accès au niveau du projet, ce qui affecte tous les pipelines de diffusion ou toutes les cibles de ce projet. Pour définir une
stratégie IAM pour un projet, utilisez la gcloud projects set-iam-policy
commande :
gcloud projects set-iam-policy PROJECT_ID POLICY_FILE
Accorder l'accès à un pipeline de diffusion spécifique
Vous pouvez accorder à un compte principal des autorisations pour créer, modifier et supprimer tous les pipelines de diffusion en lui attribuant simplement un rôle approprié. Toutefois, vous pouvez parfois souhaiter accorder cet accès à un compte principal pour 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 diffusion spécifique, procédez comme suit :
Créez un fichier de stratégie avec la liaison suivante :
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.comL'exemple ci-dessus accorde le rôle à un utilisateur, mais vous pouvez également l'accorder à un groupe ou à un compte de service.
Appelez la commande suivante pour appliquer le fichier de stratégie à un pipeline de diffusion 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 l'accès à une cible spécifique à un compte principal, vous pouvez utiliser
des liaisons de rôles. Pour ce faire, liez le rôle roles/clouddeploy.operator à ce compte principal, puis lorsque vous appliquez la stratégie (avec setIamPolicy), vous spécifiez la cible pour laquelle l'accès est accordé.
L'accès à la cible spécifique permet au compte principal de la mettre à jour et de la supprimer.
Créez un fichier de stratégie avec la liaison suivante :
bindings: - role: roles/clouddeploy.operator members: - group:cd_operators@example.comL'exemple ci-dessus accorde le rôle à un groupe, mais vous pouvez également l'accorder à un utilisateur ou à un compte de service.
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 est déjà en place et qu'elle lie le rôle au compte principal. Ici, nous ajoutons une condition qui spécifie la cible :
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 prodDans cette liaison de rôle,
conditionutilise une paire clé/valeur, où la clé estexpressionet la valeur une expression CEL. Cette expression fait référence à un ensemble d'attributs contextuels relatifs à 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 confirmer que la cible de promotion correspond à la cible de l'expression.
L'expression utilise l'attribut d'API
clouddeploy.googleapis.com/rolloutTarget, qui correspond à la cible vers laquelle le compte principal tente de promouvoir la version. L'expression la compare à la cible pour laquelle le compte principal reçoit un accès de promotion.Définissez la liaison pour un pipeline de diffusion spécifique :
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESi vous souhaitez définir cette liaison pour tous les pipelines de diffusion, 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.
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 prodDans cette liaison de rôle,
conditionutilise une paire clé/valeur, où la clé estexpressionet la valeur une expression CEL. L'expression fait référence à un ensemble d'attributs contextuels relatifs à 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, afin de confirmer que la cible correspond à la cible de l'expression.
L'expression utilise l'attribut d'API
clouddeploy.googleapis.com/rolloutTarget, qui correspond à la cible du déploiement, et la compare à la cible pour laquelle le compte principal reçoit un accès d'approbation. L'attributclouddeploy.googleapis.com/rolloutTargetest le seul attribut d'API compatible avec Cloud Deploy.Définissez la liaison pour un pipeline de diffusion spécifique :
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESi vous souhaitez définir cette liaison pour tous les pipelines de diffusion, 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.
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 windowDans cette liaison de rôle,
conditionutilise une paire clé/valeur, où la clé estexpressionet la valeur une expression CEL. L'expression 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 se situe entre le lundi et le vendredi.Dans ce cas, l'expression est évaluée lorsque le compte principal tente de promouvoir la version, afin de confirmer que la cible de promotion correspond à la cible de l'expression.
Définissez la liaison pour un pipeline de diffusion spécifique :
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESi vous souhaitez définir cette liaison pour tous les pipelines de diffusion, 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.
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 windowDans cette liaison de rôle,
conditionutilise une paire clé/valeur, où la clé estexpressionet 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 se situe entre le lundi et le vendredi.Dans ce cas, l'expression est évaluée lorsque le compte principal tente d'approuver le déploiement, afin de confirmer que la cible de déploiement correspond à la cible de l'expression.
Définissez la liaison pour un pipeline de diffusion spécifique :
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESi vous souhaitez définir cette liaison pour tous les pipelines de diffusion, vous pouvez la définir au niveau du projet :
gcloud projects set-iam-policy PROJECT POLICY_FILE
Accorder des autorisations pour réessayer une tâche, en fonction de son type
La liaison de cette section accorde à un compte principal une autorisation pour réessayer une tâche Cloud Deploy, en fonction de son type.
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 jobDans cette liaison de rôle,
conditionutilise une paire clé/valeur, où la clé estexpressionet la valeur une expression CEL. L'expression fait référence à un ensemble d'attributs contextuels relatifs à la requête et renvoie une valeur booléenne.Dans ce cas, l'expression est évaluée lorsque le compte principal tente de réessayer la tâche, afin de confirmer que le type de tâche correspond au type de tâche de l'expression.
L'expression utilise l'attribut d'API
clouddeploy.googleapis.com/jobType, qui peut êtredeployouverify.Définissez la liaison pour un pipeline de diffusion spécifique :
gcloud deploy delivery-pipelines set-iam-policy PIPELINE_NAME --region=REGION POLICY_FILESi vous souhaitez définir cette liaison pour tous les pipelines de diffusion, vous pouvez la définir au niveau du projet :
gcloud projects set-iam-policy PROJECT POLICY_FILE