Cette page explique comment organiser votre hiérarchie Google Cloud en imbriquant des projets dans des dossiers.
Présentation
Dans la hiérarchie des ressources Google Cloud , les projets servent d'unités d'organisation et de facturation de base pour vos ressources. Ils se situent entre les dossiers (ou la ressource d'organisation) et les ressources sous-jacentes, telles que les instances de machines virtuelles et les buckets de stockage.
Bien que les dossiers soient un mécanisme de regroupement facultatif, l'organisation de vos projets dans des dossiers présente plusieurs avantages clés :
Gouvernance évolutive : appliquez automatiquement des stratégies IAM (Identity and Access Management) et des contraintes de sécurité à plusieurs projets grâce à l'héritage basé sur la hiérarchie.
Alignement sur l'activité : structurez votre environnement cloud pour refléter les départements, les centres de coûts ou les cycles de vie de développement de votre organisation (par exemple, développement, préproduction et production).
Administration déléguée : accordez à des équipes spécifiques l'autonomie nécessaire pour gérer leurs propres projets et sous-dossiers sans avoir besoin d'autorisations étendues au niveau de l'organisation.
Visibilité des coûts : regroupez les projets associés pour simplifier le suivi des dépenses et améliorer l'analyse de la facturation pour des applications ou des unités commerciales spécifiques.
Isolation de la sécurité : établissez des limites de confiance claires pour limiter la zone affectée par les modifications de configuration et réduire les risques de sécurité dans différents environnements.
Créer un projet dans un dossier
Pour créer un projet dans un dossier, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator) sur le dossier. Ce rôle peut être hérité d'un dossier parent.
Console
- Dans la console Google Cloud , ouvrez la page "Gérer les ressources".
- Accédez à la page Gérer les ressources.
- Sélectionnez votre ressource Organisation dans la liste déroulante Organisation, en haut à gauche de la page.
- Cliquez sur Créer un projet.
- Saisissez le Nom du projet.
- Dans le champ Destination, cliquez sur Parcourir pour sélectionner le dossier sous lequel vous souhaitez créer le projet.
- Cliquez sur Créer.
gcloud
gcloud projects create PROJECT_ID --folder FOLDER_ID
Remplacez les éléments suivants :
PROJECT_ID: ID du projet à créerFOLDER_ID: ID du dossier dans lequel le projet doit être créé.
REST
Requête JSON :
request_json= '{
name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
}'
Requête curl :
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/projects
Remplacez les éléments suivants :
PROJECT_ID: identifiant unique du projet en cours de création. Exemple :my-awesome-proj-123DISPLAY_NAME: nom à afficher du projet en cours de création.PARENT_ID: identifiant unique du parent sous lequel l'enfant est créé. Exemple :123PARENT_TYPE: type du parent, tel quefolderouorganization.
N'incluez aucune information sensible dans le nom de votre dossier ni dans les autres noms de ressources. Toute référence au dossier ou aux ressources associées expose le nom du dossier et le nom de la ressource.
Déplacer un projet dans un dossier
Vous devez prendre en compte toutes les implications en termes de stratégie avant de déplacer un projet dans un dossier ou en dehors. Les stratégies d'autorisation que vous définissez au niveau du projet seront déplacées avec le projet, mais pas les stratégies héritées d'une ressource parente.
Lorsque vous déplacez un projet, toutes les stratégies IAM (Identity and Access Management) ou règles d'administration directement associées seront déplacées. Toutefois, les projets de votre hiérarchie de ressources sont également affectés par les stratégies dont ils héritent des ressources parentes. Si un projet hérite d'un rôle IAM qui autorise les utilisateurs à utiliser un service particulier, ces derniers n'auront pas accès à ce service dans la destination, sauf s'ils héritent de cette autorisation au niveau de la destination.
Par exemple, imaginons qu'un compte de service dispose du rôle Créateur d'objets de l'espace de stockage, lié à un utilisateur du dossier A. Le compte de service est autorisé à importer des données vers Cloud Storage dans n'importe quel projet du dossier A. Si vous déplacez l'un de ces projets vers le dossier B, qui ne dispose pas des mêmes autorisations héritées, le compte de service de ce projet perd la possibilité de mettre en ligne des données, ce qui entraîne une interruption de service.
Ces mêmes remarques s'appliquent si des règles de l'organisation sont définies dans les dossiers source et de destination. Tout comme les stratégies IAM, les règles de l'organisation sont héritées. Par conséquent, vous devez vous assurer que les règles d'administration sont cohérentes entre les dossiers source et de destination.
Pour en savoir plus sur les règles d'administration, consultez la Présentation du service de règles d'administration.
Pour déplacer un projet, vous devez disposer du rôle IAM Déplaceur de projets (roles/resourcemanager.projectMover) dans le dossier source et le dossier de destination. Si la ressource ne se trouve pas dans un dossier, vous devez disposer de ce rôle au niveau de la ressource d'organisation.
Ces rôles vous donnent les autorisations requises suivantes :
resourcemanager.projects.updatesur le projet- Si la ressource se trouve dans un dossier :
resourcemanager.projects.movedans le dossier source et la destination - Si la ressource ne se trouve pas dans un dossier :
resourcemanager.projects.movedans la ressource Organisation
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Console
Pour déplacer un projet, procédez comme suit :
Dans la console Google Cloud , accédez à la page Gérer les ressources.
Sélectionnez votre organisation dans la liste déroulante Organisation, en haut à gauche de la page.
Dans la liste des ressources, cliquez sur la ligne correspondant à votre projet pour le sélectionner. Notez que vous ne devez pas cliquer sur le nom du projet. Cela vous redirigerait vers la page IAM (Identity and Access Management) correspondante.
Cliquez sur le menu d'options (icône représentant des points de suspension verticaux) situé sur cette ligne et cliquez sur Déplacer.
Cliquez sur Parcourir pour sélectionner le dossier dans lequel vous souhaitez déplacer le projet.
Cliquez sur Déplacer.
gcloud
Pour déplacer un projet, exécutez la commande gcloud beta projects move :
gcloud beta projects move PROJECT_ID \ --DESTINATION_TYPE DESTINATION_ID
Remplacez les éléments suivants :
PROJECT_ID: ID ou numéro du projet que vous souhaitez déplacer.DESTINATION_TYPE: type de destination,organizationoufolder.DESTINATION_ID: ID de la ressource ou du dossier de l'organisation vers laquelle vous souhaitez déplacer le projet.
REST
Pour déplacer un projet, vous pouvez utiliser la méthode v3 projects.move.
Requête :
POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
"destinationParent": DESTINATION_PARENT
}
Remplacez les éléments suivants :
PROJECT_NAME: nom du projet que vous souhaitez mettre à jour. Par exemple,projects/415104041262.DESTINATION_PARENT: nouvelle organisation ou nouveau dossier parent sous lequel vous souhaitez déplacer le projet. Exemple :organizations/12345678901.
Si la requête aboutit, elle renvoie une opération qui peut être utilisée pour suivre le déplacement du projet.
Déplacer un dossier dans un autre dossier
Pour déplacer un dossier dans un autre dossier, vous devez disposer de l'autorisation resourcemanager.folders.move pour les dossiers source et de destination.
Console
Le processus consistant à déplacer des dossiers dans d'autres dossiers de la console s'apparente au transfert de projets.
- Dans la console Google Cloud , ouvrez la page "Gérer les ressources".
- Sélectionnez votre ressource Organisation dans la liste déroulante Organisation, en haut à gauche de la page.
- Cliquez sur la ligne correspondant à votre dossier pour le sélectionner dans la liste des projets et des dossiers.
- Cliquez sur le menu d'options (icône représentant des points de suspension verticaux) situé sur cette ligne et cliquez sur Déplacer.
- Cliquez sur Parcourir pour sélectionner le dossier dans lequel vous souhaitez déplacer le dossier.
- Cliquez sur Déplacer.
gcloud
Pour déplacer un dossier sous la ressource Organisation, exécutez la commande suivante :
gcloud resource-manager folders move FOLDER_ID \
--organization=PARENT_ID
Remplacez les éléments suivants :
FOLDER_ID: ID du dossier à déplacerPARENT_ID: ID de la ressource de l'organisation parente
Pour déplacer un dossier sous un autre dossier, exécutez la commande suivante :
gcloud resource-manager folders move FOLDER_ID \
--folder=PARENT_ID
Remplacez les éléments suivants :
FOLDER_ID: ID du dossier à déplacerPARENT_ID: ID du dossier parent
REST
Requête JSON :
request_json= '{
destinationParent: "folders/DESTINATION_FOLDER_ID"
}'
Requête curl pour déplacer un dossier :
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/DISPLAY_NAME:move
Remplacez les éléments suivants :
- DESTINATION_FOLDER_ID : ID du dossier sous lequel vous déplacez un autre dossier, par exemple
98765. - DISPLAY_NAME : nom à afficher du dossier en cours de déplacement, par exemple "Mon dossier préféré".
Réponse pour le transfert de dossier :
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
}
}
Requête curl pour l'opération Get :
curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890
Réponse pour l'opération Get :
{
"name": "operations/fm.1234567890",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "MOVE"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
"name": "folders/12345",
"parent": "folders/98765",
"displayName": "DISPLAY_NAME",
"lifecycleState": "ACTIVE",
"createTime": "2017-07-19T23:29:26.018Z",
"updateTime": "2017-07-20T00:54:44.295Z"
}
}
Afficher ou lister les projets d'un dossier
Pour afficher ou lister les projets qui sont des enfants directs d'un dossier, vous devez disposer du rôle Lecteur de dossier (roles/resourcemanager.folderViewer) ou du rôle Navigateur (roles/browser) sur le dossier.
Console
Dans la console Google Cloud , ouvrez la page Gérer les ressources.
Dans le menu déroulant Organisation, sélectionnez votre organisation.
Dans la liste des ressources, cliquez sur le nom du dossier pour le développer et afficher ses projets.
Facultatif : Utilisez la barre Filtrer en haut de la liste pour rechercher un projet spécifique par nom ou ID.
gcloud
Pour lister tous les projets qui sont des enfants directs d'un dossier spécifique, utilisez la commande gcloud projects list avec un filtre :
gcloud projects list --filter="parent.id:FOLDER_ID AND parent.type:folder"
Remplacez FOLDER_ID par l'ID unique du dossier.
REST
Utilisez la méthode projects.list avec un paramètre de requête définissant le dossier parent.
Requête HTTP : GET https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID
Exemple de commande curl :
Bash
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
"https://cloudresourcemanager.googleapis.com/v3/projects?parent=folders/FOLDER_ID"
Remplacez FOLDER_ID par l'ID unique du dossier.
Filtrer les projets par tags ou libellés (facultatif)
Si vous avez un grand nombre de projets dans un dossier, vous pouvez utiliser des filtres pour trouver des ressources spécifiques en fonction des métadonnées.
Console
- Dans la barre Filtrer de la page Gérer les ressources, saisissez
Labels:key=valuepour limiter la liste aux projets comportant des libellés spécifiques. Notez que la console offre une compatibilité limitée avec le filtrage visuel par tags. Utilisez la Google Cloud CLI pour les requêtes de tags avancées.
gcloud
Pour lister les projets d'un dossier qui ont une valeur de tag spécifique, utilisez l'indicateur --filter avec l'attribut tags :
gcloud projects list \ --filter="parent.id:FOLDER_ID AND tags.TAG_KEY_PARENT/TAG_KEY_SHORT_NAME:TAG_VALUE_SHORT_NAME"
Remplacez les éléments suivants :
FOLDER_ID: ID unique du dossier.TAG_KEY_PARENT: ID de la ressource parente de la clé de tag, telle qu'une organisation ou un projet.TAG_KEY_SHORT_NAME: nom abrégé de la clé de tag.TAG_VALUE_SHORT_NAME: nom abrégé de la valeur du tag.
Pour filtrer par libellé :
gcloud projects list \ --filter="parent.id:FOLDER_ID AND labels.KEY=VALUE"
Remplacez les éléments suivants :
FOLDER_ID: ID unique du dossier.KEY: clé du libellé.VALUE: valeur du libellé.
Étapes suivantes
- Découvrez comment afficher et modifier des projets.
- Découvrez les rôles et les autorisations pour gérer les projets.