Contrôle des accès aux dossiers avec IAM

Vous pouvez utiliser des rôles Identity and Access Management (IAM) au niveau des dossiers pour gérer l'accès à des groupes de projets et de ressources. Les rôles au niveau du dossier vous aident à appliquer le principe du moindre privilège dans votre hiérarchie de ressources lorsque vous associez des rôles à des comptes principaux dans des stratégies d'autorisation.

Utilisez l'API Cloud Resource Manager pour créer et gérer des stratégies d'autorisation, ou appliquez des stratégies de refus pour bloquer explicitement des autorisations spécifiques. Pour configurer un nouvel environnement et accorder l'accès initial, suivez la checklist de configuration deGoogle Cloud . Pour gérer l'accès continu, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Présentation des rôles IAM applicables aux dossiers

Pour configurer les rôles IAM, reportez-vous au tableau ci-dessous qui répertorie les éléments suivants :

  • Type d'actions que vous souhaitez activer.
  • Les rôles requis pour effectuer ces actions.
  • Le niveau de ressource auquel vous devez appliquer ces rôles.
Type d'action Rôles requis Niveau de la ressource
Administrer les dossiers dans la ressource d'organisation Administrateur de dossier Ressource d'organisation
Administrer un dossier et tous les projets et dossiers qu'il contient Administrateur de dossier Dossier spécifique
Accéder aux stratégies d'autorisation d'un dossier et les administrer Administrateur IAM de dossier Dossier spécifique
Créer des dossiers Créateur de dossier Ressource parente de l'emplacement des nouveaux dossiers
Déplacer des dossiers et des projets Déplaceur de dossier Ressource parente de l'emplacement d'origine et du nouvel emplacement du dossier
Déplacer un projet dans un nouveau dossier Éditeur de projet ou Propriétaire du projet Ressource parente de l'emplacement d'origine et du nouvel emplacement du projet
Supprimer un dossier Éditeur ou administrateur de dossier Dossier spécifique

Bonnes pratiques pour l'utilisation des rôles et des autorisations IAM avec des dossiers

Lorsque vous attribuez des rôles et des autorisations IAM pour l'utilisation des dossiers, vous devez garder à l'esprit les points suivants :

  • Utilisez des groupes autant que possible pour gérer les comptes principaux.
  • Réduisez l'utilisation des rôles de base, tels que "Propriétaire", "Éditeur" et "Lecteur". Essayez plutôt d'utiliser les rôles prédéfinis pour respecter le principe du moindre privilège.
  • Pour une gestion à l'échelle du dossier, attribuez des autorisations à ce niveau et laissez les projets en hériter automatiquement. Par exemple, vous pouvez attribuer le rôle d'Administrateur de dossier à un groupe d'administrateurs d'un service. Les administrateurs réseau qui ont besoin d'autorisations à l'échelle du service peuvent se voir attribuer le rôle d'Administrateur réseau pour le dossier.
  • Avant de déplacer une ressource hors d'un dossier, évaluez soigneusement les autorisations susceptibles de changer. Sinon, vous risqueriez de détruire des applications existantes ou des flux de travaux nécessitant ces autorisations pour utiliser cette ressource.
  • Prenez soin de planifier et de tester la hiérarchie des ressources avant de déplacer des projets de production dans des dossiers. Pour ce faire, vous pouvez créer un dossier de test sous votre ressource d'organisation et créer un prototype de la hiérarchie prévue à l'avance.
  • L'attribution d'un rôle à un utilisateur au niveau du dossier lui accordera également ce rôle pour chaque ressource située sous ce dossier. Par exemple, si vous accordez à un utilisateur le rôle Administrateur Compute (roles/compute.admin) sur un dossier, cet utilisateur aura le contrôle total de toutes les ressources Compute Engine dans chaque projet de ce dossier.

Comprendre les rôles et les autorisations des dossiers

Les dossiers agissent comme des limites administratives au sein de votre organisation, ce qui vous permet de regrouper des projets et d'appliquer des règles à grande échelle. L'accès à ces dossiers est géré par une combinaison d'autorisations héritées de l'organisation et de rôles accordés directement au niveau du dossier.

Rôles par défaut

La création d'un dossier vous attribue les rôles Administrateur de dossier et Éditeur de dossier, qui vous offrent un contrôle total. Consultez le tableau suivant pour connaître les autorisations fournies par ces rôles. Vous pouvez modifier ces rôles par défaut dans une stratégie d'autorisation.

Utiliser des rôles prédéfinis

Rôle Autorisations

(roles/resourcemanager.folderAdmin)

Fournit toutes les autorisations disponibles pour utiliser des dossiers.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Dossier

essentialcontacts.*

  • essentialcontacts.contacts.create
  • essentialcontacts.contacts.delete
  • essentialcontacts.contacts.get
  • essentialcontacts.contacts.list
  • essentialcontacts.contacts.send
  • essentialcontacts.contacts.update

iam.policybindings.*

  • iam.policybindings.get
  • iam.policybindings.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.*

  • resourcemanager.capabilities.get
  • resourcemanager.capabilities.update

resourcemanager.folders.*

  • resourcemanager.folders.create
  • resourcemanager.folders.createPolicyBinding
  • resourcemanager.folders.delete
  • resourcemanager.folders.deletePolicyBinding
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.list
  • resourcemanager.folders.move
  • resourcemanager.folders.searchPolicyBindings
  • resourcemanager.folders.setIamPolicy
  • resourcemanager.folders.undelete
  • resourcemanager.folders.update
  • resourcemanager.folders.updatePolicyBinding

resourcemanager.hierarchyNodes.*

  • resourcemanager.hierarchyNodes.createTagBinding
  • resourcemanager.hierarchyNodes.deleteTagBinding
  • resourcemanager.hierarchyNodes.listEffectiveTags
  • resourcemanager.hierarchyNodes.listTagBindings

resourcemanager.projects.createPolicyBinding

resourcemanager.projects.deletePolicyBinding

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.list

resourcemanager.projects.move

resourcemanager.projects.searchPolicyBindings

resourcemanager.projects.setIamPolicy

resourcemanager.projects.updatePolicyBinding

(roles/resourcemanager.folderIamAdmin)

Fournit les autorisations nécessaires pour administrer les stratégies d'autorisation appliquées à des dossiers.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Dossier

iam.policybindings.*

  • iam.policybindings.get
  • iam.policybindings.list

resourcemanager.folders.createPolicyBinding

resourcemanager.folders.deletePolicyBinding

resourcemanager.folders.get

resourcemanager.folders.getIamPolicy

resourcemanager.folders.searchPolicyBindings

resourcemanager.folders.setIamPolicy

resourcemanager.folders.updatePolicyBinding

(roles/resourcemanager.folderCreator)

Fournit les autorisations nécessaires pour parcourir la hiérarchie et créer des dossiers.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Dossier

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.get

resourcemanager.folders.create

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/resourcemanager.folderEditor)

Fournit les autorisations nécessaires pour modifier des dossiers et afficher la stratégie d'autorisation d'un dossier.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Dossier

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.*

  • resourcemanager.capabilities.get
  • resourcemanager.capabilities.update

resourcemanager.folders.delete

resourcemanager.folders.get

resourcemanager.folders.getIamPolicy

resourcemanager.folders.list

resourcemanager.folders.searchPolicyBindings

resourcemanager.folders.undelete

resourcemanager.folders.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/resourcemanager.folderMover)

Permet de déplacer des projets et des dossiers dans une organisation ou un dossier parent, ou en dehors.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Dossier

resourcemanager.folders.move

resourcemanager.projects.move

(roles/resourcemanager.folderViewer)

Permet d'obtenir un dossier, et de répertorier les dossiers et les projets situés sous une ressource.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • Dossier

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.get

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.projects.get

resourcemanager.projects.list

Créer des rôles personnalisés

En plus des rôles prédéfinis décrits dans cet article, vous pouvez également créer des rôles personnalisés, qui sont des ensembles d'autorisations que vous adaptez à vos besoins. Lorsque vous créez un rôle personnalisé à utiliser avec Resource Manager, tenez compte des points suivants :
  • Les autorisations de type obtenir/répertorier, telles que resourcemanager.projects.get/list, doivent toujours être accordées en tant que paire.
  • Lorsque votre rôle personnalisé inclut les autorisations folders.list et folders.get, il doit également inclure projects.list et projects.get.
  • Sachez que l'autorisation setIamPolicy pour les ressources d'organisation, de dossier et de projet permet à l'utilisateur d'accorder toutes les autres autorisations. Elle doit donc être attribuée avec précaution.

Attribuer des rôles pour permettre la navigation dans les dossiers

Les autorisations de liste permettent la navigation dans les dossiers. Les deux types d'autorisations de liste qui doivent généralement être accordées sont resourcemanager.folders.list, qui permet aux utilisateurs de lister les dossiers d'une ressource, et resourcemanager.projects.list, qui permet aux utilisateurs de parcourir les projets d'une ressource d'organisation ou d'un dossier. L'administrateur de l'organisation est initialisé avec ces deux autorisations. Pour les utilisateurs auxquels le rôle d'Administrateur de l'organisation n'a pas été attribué :

  • resourcemanager.folders.list peut être accordé à l'aide des rôles Lecteur de dossier et Éditeur de dossier.
  • resourcemanager.projects.list peut être accordé à l'aide des rôles Lecteur ou Navigateur.

Pour que les comptes principaux de la ressource Organisation puissent parcourir l'intégralité de la hiérarchie des ressources de l'organisation, les autorisations de listage doivent être accordées au niveau de la ressource Organisation.

Attribuer des rôles pour permettre la création de dossiers

Les utilisateurs devant créer des dossiers doivent se voir attribuer le rôle de Créateur de dossier pour une ressource de la hiérarchie située au-dessus du niveau auquel le dossier sera créé. Il peut être utile d'accorder des autorisations de navigation et de création de dossier pour permettre aux utilisateurs d'accéder efficacement à l'emplacement dans la hiérarchie où le dossier sera créé. Pour en savoir plus sur les autorisations de navigation, consultez la section ci-dessus.

Le rôle de Créateur de dossier n'accorde pas à un utilisateur l'autorisation de supprimer un dossier. Toutefois, lorsqu'une personne crée un dossier, le rôle d'Éditeur de dossier lui est automatiquement attribué. Le rôle d'Éditeur de dossier permet de supprimer des dossiers.

Attribuer des rôles pour permettre le déplacement de dossiers

Pour déplacer un dossier d'une ressource parente vers une autre, les utilisateurs doivent disposer du rôle de Déplaceur de dossier pour chacune des ressources parentes, l'ancienne et la nouvelle, ou pour un ancêtre commun.

Attribuer des rôles pour permettre le déplacement de projets

Pour déplacer un projet dans un dossier, les utilisateurs doivent disposer des rôles Éditeur de projet ou Propriétaire du projet sur le projet, et du rôle Outil de déplacement de projet sur les ressources parentes source et de destination.

Cette exigence est légèrement différente de celle requise pour déplacer un projet n'appartenant pas à l'organisation vers la ressource d'organisation, où les utilisateurs doivent disposer du rôle Éditeur de projet ou Propriétaire du projet sur le projet, et du rôle Créateur de projet sur la ressource d'organisation.

Attribuer des rôles spécifiques à un dossier pour permettre la création de projets

Pour créer des projets, les utilisateurs doivent disposer du rôle de Créateur de projet. Toutefois, au lieu d'accorder l'autorisation de création de projet à l'échelle de l'organisation, il peut être utile de limiter cette autorisation à l'affichage et à la création de projets uniquement dans un dossier donné.

Pour accorder des autorisations spécifiques à un dossier, procédez comme suit :

  1. Attribuez à l'utilisateur le rôle Lecteur de l'organisation au niveau de la ressource d'organisation (par exemple, domain.com). Dans la console Google Cloud , sélectionnez votre ressource d'organisation dans le sélecteur de projet et d'organisation en haut de la page, ou cliquez sur votre domaine dans la colonne Héritage de la page IAM.
  2. Créer un dossier.
  3. Ajoutez l'utilisateur à IAM au niveau du dossier et attribuez-lui les rôles Lecteur de dossiers et Créateur de projet.

Cela permet à l'utilisateur de créer des projets dans son dossier sans lui accorder de visibilité sur tous les projets de la ressource d'organisation plus vaste.