Comme pour tous les produits Google Cloud, Identity and Access Management protège Cloud Deploy en contrôlant quels utilisateurs et comptes de service authentifiés actions.
Ce document décrit certaines des fonctionnalités d'IAM fournit des instructions pour protéger les diffusions de votre application gérées à l'aide de Cloud Deploy. Voici quelques exemples de méthodes spécifiques peut 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
En plus des rôles et autorisations, Cloud Deploy utilise les fonctionnalités IAM suivantes pour offrir 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 d'effectuer les opérations suivantes : le contrôle. l'accès aux ressources et aux actions Cloud Deploy en fonction des conditions calculées au moment de l'exécution. Par exemple, vous pouvez limiter la promotion. à une cible donnée de sorte qu'elles ne soient autorisées que pendant une période spécifiée.
À propos des attributs d'API
Lorsque vous créez des conditions IAM, vous pouvez référencer Attributs d'API pour obtenir l'environnement d'exécution sur une demande. Par exemple, vous pouvez utiliser un attribut d'API pour obtenir le nom de la ressource concernée par la requête. Vous pouvez ensuite la comparer au ou les ressources auxquelles le compte principal a accès.
Accordez un accès précis à l'aide des 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 un
la stratégie IAM d'un projet, utilisez la méthode 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 à un compte principal les autorisations nécessaires pour créer, modifier et supprimer des pipelines de livraison standards, en lui attribuant simplement un rôle approprié. Mais il se peut que vous souhaitiez parfois accorder cet accès à un compte principal 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:
Créez un fichier de stratégie avec les éléments suivants : liaison:
bindings: - role: roles/clouddeploy.developer members: - user:fatima@example.com
L'exemple ci-dessus attribue le rôle à un utilisateur, mais vous pouvez aussi lui attribuer ce rôle à un groupe ou à un compte de service.
Appelez la commande suivante pour appliquer le fichier de règles à une distribution spécifique. pipeline:
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
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 d'effectuer des mises à jour supprimer cette cible.
Créez un fichier de stratégie avec les éléments suivants : liaison:
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.
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'il existe déjà une stratégie qui lie le rôle à le 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 prod
Dans cette liaison de rôle,
condition
utilise une paire clé/valeur, où la clé estexpression
et la valeur 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 promouvoir l'album, pour confirmer que la cible de la promotion correspond à la cible dans l'expression.
L'expression utilise l'attribut d'API
clouddeploy.googleapis.com/rolloutTarget
, qui correspond à la cible vers laquelle le compte principal tente d'effectuer la promotion. L'expression compare à la cible pour laquelle le compte principal bénéficie d'un accès à la promotion.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
.
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é estexpression
et sa valeur est 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 le déploiement, pour confirmer que la cible correspond à la cible de l'expression.
L'expression utilise l'attribut d'API
clouddeploy.googleapis.com/rolloutTarget
, qui est la cible du déploiement et la compare à la cible pour laquelle compte principal dispose d'un accès pour approbation. La L'attributclouddeploy.googleapis.com/rolloutTarget
est la seule 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_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.
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é estexpression
et la valeur une expression CEL. L'expression fait référence à un ensemble d'attributs contextuels sur la requête et renvoie une valeur booléenne. Cette expression vérifie que la demande est effectuée du lundi au vendredi.Ici, l'expression est évaluée lorsque le compte principal tente de promouvoir la sortie, pour confirmer que la cible de la promotion correspond à la cible dans .
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.
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é estexpression
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 se situe entre le lundi et le vendredi.Dans ce cas, l'expression est évaluée lorsque le compte principal le déploiement, pour confirmer que la cible de déploiement correspond à la cible dans .
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 du type de tâche
La liaison de cette section accorde à un compte principal l'autorisation de relancer une Job Cloud Deploy, en fonction du type de tâche
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é estexpression
et sa valeur est une expression CEL. L'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 faire une nouvelle tentative. la tâche, pour vérifier que les types de tâches correspondent au type de tâche indiqué dans .
L'expression utilise l'attribut d'API
clouddeploy.googleapis.com/jobType
, qui peut êtredeploy
ouverify
.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