Créer et gérer des dossiers

Les dossiers sont des nœuds dans la hiérarchie des ressources Cloud Platform. Un dossier peut contenir des projets, d'autres dossiers ou une combinaison des deux. Les ressources de l'organisation peuvent utiliser des dossiers pour regrouper des projets sous le nœud de ressource d'organisation dans une hiérarchie. Par exemple, une ressource d'organisation peut contenir plusieurs services, chacun possédant son propre ensemble de ressources Google Cloud. Les dossiers vous permettent de regrouper ces ressources par service. Ils sont utilisés pour regrouper les ressources partageant des stratégies IAM communes. Alors qu'un dossier peut contenir plusieurs dossiers ou ressources, une ressource ou un dossier donnés ne peuvent posséder qu'un seul parent.

Dans le schéma ci-dessous, la ressource d'organisation "Entreprise" comporte des dossiers représentant deux services, "Service X" et "Service Y", ainsi qu'un dossier "Infrastructure partagée" pour les éléments qui peuvent être communs aux deux services. Sous "Dept Y", deux dossiers correspondant chacun à une équipe ont été créés, eux-mêmes subdivisés en plusieurs dossiers relatifs aux différents produits. Le dossier "Product 1" (Produit 1) contient lui-même trois projets, chacun disposant des ressources qui lui seront nécessaires. Cela offre davantage de flexibilité et de précision pour l'attribution de stratégies IAM aux règles de l'organisation.

Exemple d'arborescence de dossiers

Vous pouvez définir des stratégies IAM au niveau d'un dossier pour contrôler l'accès aux ressources contenues dans ce dernier. Par exemple, si un utilisateur se voit attribuer le rôle Administrateur d'instances de Compute sur un dossier, il bénéficie du rôle Administrateur d'instances de Compute pour tous les projets du dossier.

Avant de commencer

La fonction "Dossier" n'est disponible que pour les clients Google Workspace et Cloud Identity disposant d'une ressource "Organisation". Pour en savoir plus sur l'acquisition d'une ressource "Organisation", consultez la section Créer et gérer des organisations.

Si vous essayez d'optimiser l'utilisation des dossiers, nous vous recommandons ce qui suit :

  1. Consultez la page Contrôle des accès aux dossiers avec IAM. Cet article explique comment contrôler qui a accès aux dossiers et aux ressources qu'ils contiennent.
  2. Découvrez comment définir les autorisations associées à un dossier. Les dossiers sont compatibles avec de nombreux rôles IAM différents. Si vous souhaitez configurer des autorisations générales afin que les utilisateurs puissent voir la structure de leurs projets, accordez à l'ensemble du domaine les rôles Lecteur d'organisation et Lecteur de dossier au niveau de la ressource de l'organisation. Pour restreindre la visibilité aux branches de votre arborescence de dossiers, attribuez le rôle Lecteur de dossier au niveau du ou des dossiers dont vous souhaitez autoriser la consultation par les utilisateurs.
  3. Créez des dossiers. Lorsque vous planifiez l'organisation de vos ressources cloud, nous vous recommandons de commencer avec un seul dossier comme bac à sable dans lequel vous pourrez tester la hiérarchie la plus adaptée à votre ressource d'organisation. Considérez les dossiers comme des limites permettant d'isoler les ressources et comme des points de liaison entre les règles d'accès et de configuration. Vous pouvez choisir de créer des dossiers pour contenir des ressources appartenant à différents services et attribuer des rôles d'administrateur relatifs à ces dossiers pour déléguer les droits. Les dossiers peuvent également servir à regrouper des ressources appartenant à des applications ou à des environnements différents, par exemple ceux de développement, de production ou de test. Adaptez-vous à ces différents cas d'utilisation en utilisant des dossiers imbriqués.

Un cas d'utilisation courant consiste à créer des dossiers qui contiennent à leur tour d'autres dossiers ou projets, comme indiqué dans l'image ci-dessus. Cette structure est appelée arborescence de dossiers. Lors de la création d'une telle arborescence, gardez à l'esprit les points suivants :

  • Vous pouvez imbriquer jusqu'à 10 (dix) dossiers.
  • Un dossier parent ne peut pas contenir plus de 300 dossiers. Ce principe s'applique uniquement aux dossiers enfants directs. Ces dossiers enfants peuvent, à leur tour, contenir d'autres dossiers ou projets.
  • Les noms d'affichage des dossiers doivent être uniques au sein du même niveau d'arborescence.

Définir des autorisations pour gérer les dossiers

Pour accéder aux dossiers et les gérer, vous devez attribuer des rôles IAM spécifiques aux dossiers à des groupes d'utilisateurs donnés. Pour en savoir plus sur ces rôles, consultez la section Contrôler l'accès aux dossiers à l'aide d'une stratégie IAM. Nous vous recommandons également de consulter nos bonnes pratiques pour vous aider à déterminer la configuration optimale des autorisations.

Au départ, seul l'administrateur de l'organisation peut attribuer le rôle Administrateur de dossier à la ressource Organisation. Les comptes auxquels ce rôle est attribué peuvent ensuite l'affecter à d'autres comptes.

Pour configurer les autorisations associées à un dossier :

Console

  1. Dans la console Google Cloud, ouvrez la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Cliquez sur la liste déroulante Organisation en haut à gauche, puis sélectionnez votre organisation dans la liste des ressources.

  3. Dans le champ Ajouter des membres, saisissez votre adresse e-mail.

  4. Dans la liste déroulante Sélectionner un rôle, accédez à la catégorie Resource Manager, puis sélectionnez le rôle Administrateur de dossiers.

  5. Cliquez sur Ajouter pour attribuer le nouveau rôle.

gcloud

Les dossiers peuvent être créés de manière automatisée à l'aide de la Google Cloud CLI. Pour ce faire, exécutez la commande suivante :

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member=user:USER_ID \
    --role=roles/resourcemanager.folderAdmin

API

Requête JSON :

request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [   "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'

Requête curl :

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/ORGANIZATION_NAME:setIamPolicy

Remplacez ORGANIZATION_NAME par le nom de l'organisation dont la stratégie IAM est définie, par exemple organizations/123.

Créer des dossiers

Pour créer des dossiers, vous devez bénéficier du rôle Administrateur de dossier ou Créateur de dossier au niveau du dossier parent. Par exemple, pour créer des dossiers au niveau de l'organisation, vous devez disposer de l'un de ces rôles au niveau de l'organisation.

Lorsque vous créez un dossier, vous devez lui attribuer un nom. Les noms de dossier doivent répondre aux exigences suivantes :

  • Le nom peut contenir des lettres, des chiffres, des espaces, des traits d'union et des traits de soulignement.
  • Le nom d'affichage du dossier doit commencer et se terminer par une lettre ou un chiffre.
  • Le nom doit contenir entre 3 et 30 caractères.
  • Le nom ne doit pas être le même que celui d'un autre dossier possédant le même parent.

Pour créer un dossier, procédez comme suit :

Console

Vous pouvez créer des dossiers sur la page "Gérer les projets et les dossiers" de l'interface utilisateur.

  1. Accédez à la page Gérer les ressources de la console Google Cloud:

    Ouvrir la page "Gérer les ressources"

  2. Assurez-vous que le nom de ressource de votre organisation est sélectionné dans la liste déroulante des organisations en haut de la page.

  3. Cliquez sur Créer un dossier, puis sélectionnez l'une des options suivantes:

    • Dossier standard: ressource de dossier standard.
    • Dossier Assured Workloads: dossier Assured Workloads qui fournit des contrôles réglementaires, régionaux ou souverains supplémentaires pour les ressources Google Cloud. En sélectionnant cette option, vous accédez à Assured Workloads pour créer un dossier.
  4. Dans le champ Nom du dossier, saisissez le nom de votre nouveau dossier.

  5. Sous Destination, cliquez sur Parcourir, puis sélectionnez la ressource ou le dossier de l'organisation sous lequel vous souhaitez créer votre dossier.

    1. Cliquez sur Créer.

gcloud

Les dossiers peuvent être créés de manière automatisée à l'aide de la Google Cloud CLI.

Pour créer un dossier sous la ressource Organisation à l'aide de l'outil de ligne de commande gcloud, exécutez la commande suivante.

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --organization=[ORGANIZATION_ID]

Pour créer un dossier ayant pour parent un autre dossier, procédez comme suit :

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --folder=[FOLDER_ID]

Où :

  • [DISPLAY_NAME] correspond au nom à afficher pour le dossier. Deux dossiers possédant le même parent ne peuvent pas porter le même nom à afficher. Le nom à afficher doit commencer et se terminer par une lettre ou un chiffre. Il peut contenir des lettres, des chiffres, des espaces, des traits d'union et des traits de soulignement. Il ne peut pas dépasser 30 caractères.
  • [ORGANIZATION_ID] est l'ID de la ressource d'organisation parente si le parent est une ressource d'organisation.
  • [FOLDER_ID] correspond à l'identifiant du dossier parent si le parent est un dossier.

API

Les dossiers peuvent être créés avec une requête API.

Requête JSON :

request_json= '{
  display_name: DISPLAY_NAME,
  parent: ORGANIZATION_NAME
}'

Requête curl pour créer un dossier :

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders

Où :

  • [DISPLAY_NAME] correspond au nom à afficher pour le nouveau dossier, par exemple "Mon dossier préféré".
  • [ORGANIZATION_NAME] est le nom de la ressource d'organisation sous laquelle vous créez le dossier, par exemple organizations/123.

Réponse pour la création du dossier :

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  }
}

Requête curl pour l'opération Get :

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fc.123456789

Réponse pour l'opération Get :

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

Ajouter des balises lors de la création du dossier

Les tags permettent de créer des annotations pour les ressources. Vous pouvez ajouter des balises au moment de créer les dossiers. Pour ce faire, vous devez attribuer le rôle Utilisateur de balises. Pour en savoir plus sur les autorisations contenues dans ce rôle, consultez Gérer les tags sur les ressources. Vous ne pouvez ajouter l'espace de noms pour les paires clé/valeur du tag que de l'une des manières suivantes:

gcloud

Pour ajouter des balises lors de la création du dossier, exécutez la commande suivante:

  gcloud resource-manager folders create \
  --display-name=DISPLAY_NAME \
  --organization=ORGANIZATION_ID
  --tags=KEY_VALUE_PAIRS

Remplacez les éléments suivants :

  • DISPLAY_NAME correspond au nom à afficher pour le dossier.
  • ORGANIZATION_ID est l'identifiant unique de la ressource d'organisation parente.
  • KEY_VALUE_PAIRS est une liste de paires clé/valeur séparées par une virgule que vous pouvez attribuer à votre ressource. Voici un exemple de paires clé/valeur séparées par une virgule : 123/environment=production, 456/create=testresource.

API

L'extrait de code suivant est une requête JSON qui crée un dossier et y ajoute des balises.

  POST https://cloudresourcemanager.googleapis.com/v3/projects/
  Authorization: *************
  Content-Type: application/json

  {
    "display_name": "our-folder-456",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
    }
  }

Configurer l'accès aux dossiers

Pour configurer l'accès aux dossiers, vous devez bénéficier du rôle Administrateur de dossier IAM ou Administrateur de dossier au niveau du dossier parent.

Console

  1. Dans la console Google Cloud, ouvrez la page Gérer les ressources.

    Ouvrir la page "Gérer les ressources"

  2. Cliquez sur la liste déroulante Organisation en haut à gauche, puis sélectionnez votre ressource d'organisation.

  3. Cochez la case à côté du projet pour lequel vous souhaitez modifier les autorisations.

    1. Dans le Panneau d'informations situé à droite, sous Autorisations, saisissez les adresses e-mail des membres que vous souhaitez ajouter.

    2. Dans la liste déroulante Sélectionner un rôle, sélectionnez le rôle que vous souhaitez attribuer à ces membres.

    3. Cliquez sur Ajouter. Une notification s'affiche pour confirmer l'ajout ou la mise à jour du nouveau rôle des membres.

gcloud

Vous pouvez configurer l'accès aux dossiers de manière automatisée à l'aide de Google Cloud CLI ou de l'API.

gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderEditor
gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderViewer

Vous pouvez également procéder comme suit :

gcloud resource-manager folders \
  set-iam-policy [FOLDER_ID] [POLICY_FILE]

Où :

  • [FOLDER_ID] correspond à l'identifiant du nouveau dossier.
  • [POLICY_FILE] correspond au chemin d'accès à un fichier de stratégie associé au dossier.

API

La méthode setIamPolicy définit la stratégie de contrôle des accès sur un dossier et remplace toute stratégie existante. Le champ resource doit contenir le nom de ressource du dossier, par exemple folders/1234.

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

Requête curl :

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]:setIamPolicy

Où :

  • [FOLDER_NAME] correspond au nom du dossier pour lequel vous définissez la stratégie IAM, par exemple "folders/123".

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

  1. Dans la console Google Cloud, ouvrez la page "Gérer les ressources".

    Ouvrir la console Google Cloud

  2. Accédez à la page "Gérer les ressources".
  3. Sélectionnez votre ressource d'organisation dans la liste déroulante Organisation, en haut à gauche de la page.
  4. Cliquez sur Créer un projet.
  5. Saisissez le Nom du projet.
  6. Dans le champ Destination, cliquez sur Parcourir pour sélectionner le dossier sous lequel vous souhaitez créer le projet.

  7. Cliquez sur Créer.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

Remplacez les éléments suivants :

  • PROJECT_ID est l'ID de l'ID du projet à créer.
  • FOLDER_ID correspond à l'ID du dossier dans lequel le projet doit être créé.

API

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 est l'identifiant unique du projet en cours de création. Par exemple, my-awesome-proj-123.
  • DISPLAY_NAME est le nom à afficher pour le projet en cours de création.
  • PARENT_ID est l'identifiant unique du parent sous lequel la création est créée. Par exemple, 123.
  • PARENT_TYPE est le type du parent (par exemple, folder ou organization).

N'incluez aucune information sensible dans le nom de votre dossier ou d'autres ressources. Toute référence au dossier ou à des 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 Identity and Access Management que vous définissez au niveau du projet seront transférées avec le projet, mais les stratégies héritées d'une ressource parente ne seront pas déplacées.

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 avez déplacé 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 ne peut plus importer de 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 avez besoin de ce rôle sur la ressource d'organisation.

Ces rôles vous donnent les autorisations requises suivantes :

  • resourcemanager.projects.update sur le projet
  • Si la ressource se trouve dans un dossier : resourcemanager.projects.move dans le dossier source et la destination
  • Si la ressource ne se trouve pas dans un dossier:resourcemanager.projects.move sur la ressource d'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 :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Sélectionnez votre organisation dans la liste déroulante Organisation, en haut à gauche de la page.

  3. 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 correspondante.

  4. Cliquez sur le menu d'options (icône représentant des points de suspension verticaux) situé sur cette ligne et cliquez sur Déplacer.

  5. Cliquez sur Parcourir pour sélectionner le dossier dans lequel vous souhaitez déplacer le projet.

  6. 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

Où :

  • PROJECT_ID est l'ID ou le numéro du projet que vous souhaitez déplacer.

  • DESTINATION_TYPE correspond à organization ou folder.

  • DESTINATION_ID est l'ID de la ressource ou du dossier d'organisation vers lequel vous souhaitez déplacer le projet. Vous ne pouvez spécifier qu'une seule cible.

API

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
}

Où :

  • PROJECT_NAME est le nom du projet que vous souhaitez mettre à jour. Par exemple, projects/415104041262.

  • DESTINATION_PARENT est la nouvelle ressource ou le nouveau dossier de l'organisation 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.

  1. Dans la console Google Cloud, ouvrez la page "Gérer les ressources".

    Ouvrir la console Google Cloud

  2. Sélectionnez votre ressource d'organisation dans la liste déroulante Organisation, en haut à gauche de la page.
  3. Cliquez sur la ligne de votre dossier pour le sélectionner dans la liste des projets et des dossiers.
  4. Cliquez sur le menu d'options (icône représentant des points de suspension verticaux) situé sur cette ligne et cliquez sur Move (Déplacer).
  5. Cliquez sur Parcourir pour sélectionner le dossier dans lequel vous souhaitez déplacer le dossier.
  6. Cliquez sur Déplacer.

gcloud

Pour déplacer un dossier sous la ressource Organisation, exécutez la commande suivante dans la Google Cloud CLI:

gcloud resource-manager folders move [FOLDER_ID] \
  --organization=[PARENT_ID]

Pour déplacer un dossier sous un autre dossier :

gcloud resource-manager folders move [FOLDER_ID] \
  --folder=[PARENT_ID]

Remplacez les éléments suivants :

  • [FOLDER_ID] correspond à l'identifiant du dossier à déplacer.
  • [PARENT_ID] est l'ID de ressource de l'organisation, ou l'ID de dossier de la ressource ou du dossier de l'organisation parent.

API

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] correspond à l'ID du dossier sous lequel vous déplacez un autre dossier, par exemple 98765.
  • [DISPLAY_NAME] correspond au nom 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 répertorier des dossiers et des projets

Pour afficher ou répertorier des dossiers, vous devez disposer des rôles Lecteur d'organisation et Lecteur de dossier.

Pour afficher ou répertorier des dossiers et des projets, procédez comme suit :

Console

  1. Dans la console Google Cloud, ouvrez la page "Gérer les ressources".

    Accéder à la page Gérer les ressources

  2. Dans le sélecteur de projet en haut de la page, sélectionnez la ressource de votre organisation. Les dossiers doivent être créés avant d'apparaître dans cette liste.

  3. Sélectionnez une ligne dans l'arborescence pour effectuer des opérations spécifiques sur un dossier ou un projet.

  4. Saisissez le nom ou l'identifiant du projet ou du dossier dans la barre de recherche pour filtrer la liste.

gcloud

Pour obtenir les détails d'un dossier, utilisez la commande resource-manager folders describe.

gcloud resource-manager folders describe FOLDER_ID

Remplacez FOLDER_ID par l'ID du dossier que vous souhaitez afficher.

Pour répertorier les dossiers enfants d'une ressource d'organisation, utilisez la commande resource-manager folders list.

gcloud resource-manager folders list \
  --organization ORGANIZATION_ID

Remplacez ORGANIZATION_ID par l'ID de la ressource Organisation pour laquelle vous souhaitez afficher une liste des dossiers enfants.

Pour répertorier les dossiers enfants d'une ressource de dossier, utilisez la commande resource-manager folders list.

gcloud resource-manager folders list \
  --folder FOLDER_ID

Remplacez FOLDER_ID par l'ID de la ressource de dossier pour laquelle vous souhaitez afficher la liste des dossiers enfants.

Pour répertorier les projets sous une ressource ou un dossier d'organisation ou de dossier, utilisez la commande projects list avec l'argument filter.

gcloud projects list \
  --filter=" parent.id: 'RESOURCE_ID' "

Remplacez RESOURCE_ID par l'ID de l'organisation ou du dossier pour lequel vous souhaitez afficher une liste des projets enfants.

API

Requête curl pour obtenir des dossiers :

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]

Remplacez FOLDER_NAME par le nom du dossier, par exemple folders/123.

Requête curl pour répertorier des dossiers :

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/folders?parent=[PARENT_NAME]

Remplacez PARENT_NAME par le nom de la ressource parente sous laquelle vous créez le dossier, tel que organizations/123 ou folders/123.

Utiliser Google Cloud CLI

Les commandes permettant d'interagir avec l'API Folders à l'aide de l'outil de ligne de commande gcloud sont disponibles dans le groupe de commandes gcloud resource-manager folders.

Créer

Pour créer un dossier, utilisez gcloud resource-manager folders create avec des options définissant le nom du dossier et l'ID de la ressource ou du dossier d'organisation dans lequel vous souhaitez le créer.

gcloud resource-manager folders create \
  --display-name="Super Fantastic Folder" \
  --organization=2518

Created Folder 245321.

Afficher

Pour consulter un dossier, utilisez gcloud resource-manager folders describe avec l'ID du dossier que vous souhaitez afficher.

gcloud resource-manager folders describe 245321
name: folders/245321
parent: organizations/2518
display_name: Super Fantastic Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <timestamp info …>

Affichage d'arborescence

Pour répertorier les dossiers sous un dossier, utilisez gcloud resource-manager folders list en renseignant l'identifiant du dossier dans l'option --folder. Cette commande permet également de répertorier les dossiers de premier niveau d'une ressource d'organisation, à l'aide de l'option --organization.

gcloud resource-manager folders list --folder 245321
<table output showing the folders underneath the folder with the specified ID>

gcloud resource-manager folders list --organization 2518
<table output showing folders in this Organization but not in any folder>

Pour inclure dans la liste les dossiers dont la suppression est demandée, ajoutez l'indicateur --show-deleted.

gcloud beta resource-manager folders list --folder 245321 --show-deleted
<table output showing all the folders including the delete requested ones underneath the folder with the specified ID>

Vous pouvez répertorier les projets à l'aide de la commande gcloud projects list, en transmettant l'ID de ressource de l'organisation ou du dossier parent dans l'option --filter.

gcloud projects list --filter=" parent.id: '245321' "
<table output showing the projects underneath the resource with the specified ID>

Pour plus d'informations sur l'interaction des autorisations et des filtres avec les commandes de liste, consultez Répertorier toutes les ressources de votre hiérarchie.

Pour rechercher des dossiers correspondant à la requête spécifiée, utilisez gcloud alpha resource-manager folders search en transmettant la condition dans l'option --query. La portée de la recherche inclut tous les dossiers pour lesquels l'utilisateur dispose de droits d'affichage.

gcloud alpha resource-manager folders search --query="name:vij*"
<table output showing the folders with names starting from vij eg. vijeta, vijay-folder>

gcloud alpha resource-manager folders search --query="state:DELETE_REQUESTED"
<table output showing folders for which delete has been requested>

Tous les dossiers pour lesquels l'utilisateur dispose de droits d'affichage peuvent être affichés à l'aide de la commande gcloud folders search.

gcloud folders search
<table output showing all viewable folders>

Mettre à jour

Les dossiers peuvent être mis à jour à l'aide de la commande gcloud resource-manager folders update. Actuellement, seul le champ display_name d'un dossier peut être mis à jour.

gcloud resource-manager folders update \
  --display-name="Mega Incredible Folder" 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

Supprimer

Les dossiers peuvent être supprimés et rétablis à l'aide de l'outil de ligne de commande. Un utilisateur doit posséder le rôle "Administrateur de dossier" ou "Éditeur de dossier" pour disposer de l'autorisation de supprimer un dossier. Vous ne pouvez supprimer un dossier que s'il est vide.

gcloud resource-manager folders delete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: DELETE_REQUESTED
create_time: <timestamp info …>
update_time: <recent timestamp info …>

gcloud resource-manager folders undelete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

Transfert de projet

Les projets peuvent être créés et déplacés dans des dossiers à l'aide des commandes gcloud projects create et gcloud projects move existantes. Les dossiers peuvent également être déplacés en utilisant gcloud resource-manager folders move..

gcloud projects create --folder=245321 fancy-folder-project
project_id: fancy-folder-project
project_number: 905283
parent:
  type: "folder"
  id: 245321
other fields …

gcloud projects move --folder=245321 soon-to-be-fancy-project
project_id: soon-to-be-fancy-project
project_number: 428714
parent:
  type: "folder"
  id: 245321
other fields …

Opérations de longue durée

Certaines opérations comme la création de dossiers peuvent prendre beaucoup de temps. Pour vous permettre d'exécuter plusieurs tâches, certaines commandes relatives aux dossiers sont disponibles en mode asynchrone. Vous pouvez ajouter l'option --async à ces commandes pour activer ce comportement asynchrone et recevoir immédiatement le résultat d'une opération de longue durée, plutôt que d'attendre la fin de l'opération. Vous pouvez interroger cette opération vous-même à l'aide de la commande gcloud beta resource-manager operations describe. Actuellement, seules les commandes folders create et folders move permettent une utilisation asynchrone.

gcloud resource-manager folders create \
  --display-name="Awe-Inspiring Async Folder" \
  --organization=2518 \
  --async

name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: false

[wait for some time …]

gcloud beta resource-manager operations describe fc.8572
name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: true
response:
  name: folders/6428
  parent: organizations/2518
  display_name: Awe-Inspiring Async Folder
  lifecycle_state: ACTIVE
  create_time: <recent timestamp info …>
  update_time: <recent timestamp info …>