Modify the constraint

Vérifier ma progression

/ 100

Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.

GSP1021

Google Cloud – Ateliers d'auto-formation

Présentation

Dans cet atelier, vous allez découvrir la commande gcloud beta terraform vet, appelée outil de validation dans la suite de l'atelier. L'outil de validation permet d'appliquer la conformité aux stratégies dans un pipeline CI/CD d'infrastructure. Vous pouvez l'utiliser pour détecter les cas de non-respect des stratégies, et générer des avertissements ou interrompre les déploiements avant qu'ils n'atteignent l'environnement de production.

Dans cet atelier, vous allez apprendre à implémenter une contrainte qui applique une restriction de domaine. Vous testerez cette contrainte et générerez intentionnellement une erreur. Vous modifierez ensuite la contrainte de sorte que votre domaine soit validé.

Objectifs

Au cours de cet atelier, vous allez :

  • implémenter une contrainte qui applique une restriction de domaine ;
  • tester une contrainte pour générer intentionnellement une erreur de validation ;
  • modifier la contrainte pour qu'elle soit validée ;

Prérequis

Pour cet atelier, vous devez déjà avoir utilisé Terraform. Suivez le cours Créer une infrastructure avec Terraform sur Google Cloud pour vous familiariser davantage avec Terraform.

Préparation

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la droite, vous trouverez le panneau Préparation et accès à l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google Cloud
    • Les identifiants temporaires (nom d'utilisateur et mot de passe) que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier, si nécessaire

    Notez que le minuteur de l'atelier se trouve en haut de la page et indique le temps restant.

  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans une fenêtre en navigation privée si vous utilisez Chrome).

    L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau Préparation et accès à l'atelier.

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau Préparation et accès à l'atelier.

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. N'utilisez pas les identifiants de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires pourront vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais sans frais.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche. Icône du menu de navigation et champ de recherche

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

  2. Passez les fenêtres suivantes :

    • Accédez à la fenêtre d'informations de Cloud Shell.
    • Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

Résultat :

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Valider une contrainte

Pour découvrir comment implémenter une contrainte, vous allez copier une contrainte existante, fournir un scénario de test qui échoue à la validation, puis modifier la contrainte pour qu'elle passe la validation.

Copier la contrainte

  1. Ouvrez une nouvelle fenêtre Cloud Shell et exécutez la commande suivante pour cloner le dépôt de la bibliothèque de stratégies.
git clone https://github.com/GoogleCloudPlatform/policy-library.git
  1. Dans l'invite de commande, saisissez la commande suivante pour copier l'exemple de contrainte de restriction de domaine IAM :
cd policy-library/ cp samples/iam_service_accounts_only.yaml policies/constraints
  1. Examinez la contrainte que vous avez copiée en l'affichant sur le terminal.
cat policies/constraints/iam_service_accounts_only.yaml

Le résultat ressemble à ceci :

# This constraint checks that all IAM policy members are in the # "gserviceaccount.com" domain. apiVersion: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV2 metadata: name: service_accounts_only annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. spec: severity: high match: target: # {"$ref":"#/definitions/io.k8s.cli.setters.target"} - "organizations/**" parameters: domains: - gserviceaccount.com

Notez la section en surbrillance située en bas. Elle indique que seuls les membres du domaine gserviceaccount.com peuvent figurer dans une stratégie IAM.

Tester la contrainte

  1. Pour vérifier que la stratégie fonctionne comme prévu, vous allez créer un fichier Terraform dans le répertoire actuel.
touch main.tf
  1. Dans la barre d'outils Cloud Shell, cliquez sur Ouvrir l'éditeur. Pour passer de Cloud Shell à l'éditeur de code et vice versa, cliquez sur Ouvrir l'éditeur ou Ouvrir le terminal selon les besoins, ou cliquez sur Ouvrir dans une nouvelle fenêtre pour laisser l'éditeur ouvert dans un autre onglet.

  2. Ouvrez le fichier policy-library/main.tf et copiez-y le code suivant :

terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.84" } } } resource "google_project_iam_binding" "sample_iam_binding" { project = "<YOUR PROJECT ID>" role = "roles/viewer" members = [ "user:<USER>" ] }
  1. Remplacez <YOUR PROJECT ID> par .

  2. Remplacez <USER> par .

  3. Ensuite, revenez au terminal et exécutez la commande suivante pour initialiser Terraform :

terraform init
  1. Exécutez la commande suivante pour exporter le plan Terraform. Si vous y êtes invité, cliquez sur Autoriser.
terraform plan -out=test.tfplan
  1. Convertissez le plan Terraform au format JSON.
terraform show -json ./test.tfplan > ./tfplan.json
  1. Installez le composant terraform-tools.
sudo apt-get install google-cloud-sdk-terraform-tools
  1. Saisissez la commande suivante pour vérifier que votre plan Terraform est conforme à vos stratégies :
gcloud beta terraform vet tfplan.json --policy-library=. Remarque : Vous pouvez ignorer les avertissements concernant la récupération de votre ID de projet.

Étant donné que l'adresse e-mail que vous avez fournie dans la liaison de stratégie IAM n'appartient pas à un compte de service, le plan ne respecte pas la contrainte que vous avez configurée. Le résultat doit se présenter comme suit :

constraint: GCPIAMAllowedPolicyMemberDomainsConstraintV2.service_accounts_only constraint_config: api_version: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV2 metadata: annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. validation.gcp.forsetisecurity.org/originalName: service_accounts_only validation.gcp.forsetisecurity.org/yamlpath: policies/constraints/iam_service_accounts_only.yaml name: service-accounts-only spec: match: target: - organizations/** parameters: domains: - gserviceaccount.com severity: high message: 'IAM policy for //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d contains member from unexpected domain: user:student-02-0edcb8aed69f@qwiklabs.net' metadata: ancestry_path: organizations/616463121992/folders/365352270458/folders/474147567761/folders/125430737939/projects/qwiklabs-gcp-02-ec89de7c9f9d constraint: annotations: description: Checks that members that have been granted IAM roles belong to allowlisted domains. validation.gcp.forsetisecurity.org/originalName: service_accounts_only validation.gcp.forsetisecurity.org/yamlpath: policies/constraints/iam_service_accounts_only.yaml labels: {} parameters: domains: - gserviceaccount.com details: member: user:student-02-0edcb8aed69f@qwiklabs.net resource: //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d resource: //cloudresourcemanager.googleapis.com/projects/qwiklabs-gcp-02-ec89de7c9f9d severity: high Dépannage : Si l'erreur "Error 403: The caller does not have permission, forbidden" s'affiche, cela signifie que vous n'avez pas remplacé l'argument project_id dans policy-library/main.tf ou que vous ne disposez pas des autorisations nécessaires pour le projet que vous avez spécifié.

Tâche 2 : Modifier la contrainte

La contrainte fonctionne comme prévu, mais supposons que vous souhaitez la modifier pour autoriser d'autres adresses e-mail de votre domaine.

  1. Dans l'éditeur, accédez au fichier policy-library/policies/constraints/iam_service_accounts_only.yaml.

  2. Dans la section domains, ajoutez le domaine de messagerie qwiklabs.net à la liste d'autorisation des domaines :

apiVersion: constraints.gatekeeper.sh/v1alpha1 kind: GCPIAMAllowedPolicyMemberDomainsConstraintV1 metadata: name: service_accounts_only spec: severity: high match: target: ["organizations/**"] parameters: domains: - gserviceaccount.com - qwiklabs.net
  1. Revenez à la fenêtre Cloud Shell et exportez un nouveau plan Terraform au format JSON.
terraform plan -out=test.tfplan
  1. Validez à nouveau votre plan Terraform. Aucune violation ne devrait être détectée.
gcloud beta terraform vet tfplan.json --policy-library=.

Résultat :

Validating resources...done.
  1. Enfin, appliquez le plan Terraform pour que la stratégie IAM attribue un rôle au membre.
terraform apply test.tfplan

Cliquez sur Vérifier ma progression pour valider l'objectif. Modifier la contrainte

Félicitations !

Dans cet atelier, vous avez implémenté une contrainte qui applique une restriction de domaine. Vous avez testé cette contrainte, laquelle a déclenché une erreur. Vous l'avez ensuite modifiée pour que les domaines que vous définissez puissent passer la validation.

Étapes suivantes et informations supplémentaires

Pour vous familiariser davantage avec l'outil de validation et Terraform, consultez les ressources suivantes :

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 29 novembre 2024

Dernier test de l'atelier : 29 novembre 2024

Copyright 2026 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Le meilleur moyen d'exécuter cet atelier consiste à utiliser une fenêtre de navigation privée. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.