Contrôle des accès aux projets avec l'IAM

Google Cloud Platform offre la gestion de l'authentification et des accès (IAM), qui vous permet de définir de manière plus précise l'accès à des ressources spécifiques de Google Cloud Platform et d'empêcher tout accès indésirable à d'autres ressources. L'IAM vous permet d’adopter le principe de sécurité du moindre privilège afin de n'accorder l'accès qu'aux ressources nécessaires.

Grâce à l'IAM, vous pouvez contrôler qui (utilisateurs) a accès (rôles) à quelles ressources en définissant des stratégies IAM. Ces stratégies permettent d'attribuer un ou plusieurs rôles spécifiques à un utilisateur afin de lui accorder certaines autorisations.

Vous trouverez sur cette page des informations sur les rôles IAM (gestion de l'authentification et des accès) disponibles au niveau du projet. Pour obtenir une description détaillée de Cloud IAM, consultez la documentation IAM, et en particulier la page Accorder, modifier et révoquer les accès à des ressources.

Autorisations et rôles

Pour pouvoir utiliser toutes les méthodes Google Cloud Platform avec Cloud IAM, le compte effectuant la requête d'API doit disposer d'autorisations appropriées pour accéder à la ressource. Les autorisations permettent aux utilisateurs de réaliser des opérations spécifiques sur les ressources cloud. Par exemple, l'autorisation resourcemanager.projects.list permet à un utilisateur de répertorier ses projets, tandis que resourcemanager.projects.delete lui permet de supprimer un projet.

Le tableau suivant répertorie les autorisations dont l'appelant doit disposer pour appeler une API de projet :

Méthode Autorisation(s) requise(s)
resourcemanager.projects.create() resourcemanager.projects.create
resourcemanager.projects.delete() resourcemanager.projects.delete
resourcemanager.projects.get() resourcemanager.projects.get
resourcemanager.projects.getIamPolicy() resourcemanager.projects.getIamPolicy
resourcemanager.projects.list() Ne nécessite aucune autorisation. La méthode répertorie les projets pour lesquels l'appelant dispose de l'autorisation resourcemanager.projects.get. Si vous fournissez un filtre en appelant la méthode list() (par exemple, byParent), elle répertorie les projets pour lesquels vous disposez de l'autorisation resourcemanager.projects.get et qui remplissent la condition de filtre.
resourcemanager.projects.setIamPolicy() resourcemanager.projects.setIamPolicy
resourcemanager.projects.testIamPermissions() Does not require any permission.
resourcemanager.projects.undelete() resourcemanager.projects.undelete
resourcemanager.projects.update() La mise à jour des métadonnées d'un projet requiert l'autorisation resourcemanager.projects.update. Pour mettre à jour le parent d'un projet et déplacer celui-ci dans une organisation, vous devez disposer de l'autorisation resourcemanager.projects.create sur cette organisation.

Vous n'accordez pas directement des autorisations aux utilisateurs, mais vous leur attribuez des rôles auxquels sont associées une ou plusieurs autorisations. Ces rôles sont accordés à un utilisateur particulier sur une ressource particulière de la hiérarchie des ressources. Un rôle accordé à un utilisateur sur une ressource s'appliquera également à tous les enfants de cette ressource.

Par exemple, si vous accordez à un utilisateur le rôle Administrateur de calcul (roles/compute.admin) sur une ressource d'organisation, cet utilisateur aura le contrôle total de toutes les ressources Compute Engine dans chaque projet de votre organisation. Si vous accordiez à l'utilisateur ce rôle dans un dossier, il ne pourrait voir que les projets sous ce dossier.

Vous pouvez attribuer un ou plusieurs rôles sur le même projet. Lorsque vous appelez la méthode resourcemanager.projects.getIamPolicy() pour afficher les autorisations, seules les autorisations affectées au projet lui-même s'affichent, et non les autorisations héritées.

Utiliser des rôles primitifs

Le tableau suivant répertorie les rôles primitifs que vous pouvez accorder pour accéder à un projet, la description de ce que fait le rôle et les autorisations regroupées dans ce rôle. Évitez d'utiliser des rôles primitifs, sauf en cas d'absolue nécessité. Ces rôles sont très puissants et incluent un grand nombre d'autorisations sur tous les services Google Cloud. Pour plus de détails sur le moment où vous devez utiliser des rôles primitifs, consultez la FAQ sur la gestion des identités et des accès au cloud.

Les rôles prédéfinis de Cloud IAM sont beaucoup plus précis et vous permettent de gérer soigneusement l'ensemble des autorisations auxquelles vos utilisateurs ont accès. Voir Comprendre les rôles pour une liste des rôles pouvant être accordés au niveau du projet. La création de rôles personnalisés peut accroître encore le contrôle que vous avez sur les autorisations des utilisateurs.

Rôle Description Autorisations
roles/owner Accès complet à toutes les ressources Permet d'accéder à toutes les autorisations pour toutes les ressources.
roles/editor Accès en écriture à toutes les ressources Permet de créer et de mettre à jour l'accès pour toutes les ressources.
roles/viewer Accès en lecture à toutes les ressources Permet d'obtenir et de répertorier l'accès pour toutes les ressources.
roles/browserBêta Accès permettant de parcourir les ressources dans le projet
  • resourcemanager.organizations.get
  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.list
  • resourcemanager.projectInvites.get

Créer des rôles personnalisés

En plus des rôles prédéfinis décrits dans cette rubrique, vous pouvez créer des rôles personnalisés regroupant des autorisations adaptées à vos besoins. Lorsque vous créez un rôle personnalisé à utiliser avec Cloud Resource Manager, vous devez tenir 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 le rôle personnalisé inclut les autorisations folders.list et folders.get, il doit également inclure projects.list et projects.get.
  • Notez que l'autorisation setIamPolicy pour les organisations, les dossiers et les projets permet à l'utilisateur d'accorder toutes les autres autorisations, et doit donc être attribuée avec précaution.

Contrôle des accès au niveau du projet

Vous pouvez attribuer des rôles aux utilisateurs au niveau du projet à l'aide de Google Cloud Console, de l'API Resource Manager et de l'outil de ligne de commande gcloud. Pour obtenir des instructions, consultez la page Accorder, modifier et révoquer les accès à des ressources.

Rôles par défaut

Lorsque vous créez un projet, le rôle roles/owner du projet vous est attribué pour vous procurer un contrôle total en tant que créateur. Les autorisations associées à ce rôle sont décrites ci-dessus. Vous pouvez modifier ce rôle par défaut en appliquant la procédure usuelle via une stratégie Cloud IAM.

VPC Service Controls

VPC Service Controls offre une sécurité supplémentaire lors de l'utilisation de l'API Resource Manager. Pour en savoir plus sur VPC Service Controls, consultez la page Présentation de VPC Service Controls.

Pour en savoir plus sur les limites actuelles liées à l'utilisation de Resource Manager avec VPC Service Controls, consultez la page Produits compatibles et limites.