Contrôler les accès aux ressources de l'organisation avec IAM

Identity and Access Management (IAM) est une solution proposée parGoogle Cloud qui vous permet d'attribuer un accès précis à des ressources Google Cloud spécifiques et empêche tout accès non souhaité à d'autres ressources. IAM vous permet d'adopter le principe de sécurité du moindre privilège afin de n'accorder que l'accès nécessaire à vos ressources.

Grâce à IAM, vous pouvez contrôler qui (utilisateurs) a accès (rôles) à quelles ressources en définissant des stratégies d'autorisation. Les stratégies d'autorisation attribuent des rôles spécifiques à un utilisateur pour lui accorder certaines autorisations.

Cette page décrit les rôles IAM disponibles sur la ressource d'organisation et explique comment créer et gérer des stratégies d'autorisation pour les ressources d'organisation à l'aide de l'API Cloud Resource Manager. Pour en savoir plus, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Autorisations et rôles

Pour contrôler l'accès aux ressources, Google Cloud exige que les comptes effectuant des requêtes API disposent de rôles IAM appropriés. Les rôles IAM incluent des autorisations permettant aux utilisateurs d'effectuer des actions spécifiques sur les ressourcesGoogle Cloud . Par exemple, l'autorisation resourcemanager.organizations.get permet à un utilisateur d'obtenir des détails sur la ressource de son 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.

Vous pouvez attribuer un ou plusieurs rôles sur la même ressource.

Utiliser des rôles prédéfinis

Le tableau suivant répertorie les rôles que vous pouvez attribuer pour accéder aux propriétés d'une ressource d'organisation, la description de ces rôles et les autorisations qu'ils procurent.

Rôle Autorisations

(roles/resourcemanager.organizationAdmin)

Accorde un accès permettant de gérer les stratégies IAM et d'afficher les règles d'administration des organisations, des dossiers et des projets.

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

  • Projet

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

resourcemanager.folders.deletePolicyBinding

resourcemanager.folders.get

resourcemanager.folders.getIamPolicy

resourcemanager.folders.list

resourcemanager.folders.searchPolicyBindings

resourcemanager.folders.setIamPolicy

resourcemanager.folders.updatePolicyBinding

resourcemanager.organizations.*

  • resourcemanager.organizations.createPolicyBinding
  • resourcemanager.organizations.deletePolicyBinding
  • resourcemanager.organizations.get
  • resourcemanager.organizations.getIamPolicy
  • resourcemanager.organizations.searchPolicyBindings
  • resourcemanager.organizations.setIamPolicy
  • resourcemanager.organizations.updatePolicyBinding

resourcemanager.projects.createPolicyBinding

resourcemanager.projects.deletePolicyBinding

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.list

resourcemanager.projects.searchPolicyBindings

resourcemanager.projects.setIamPolicy

resourcemanager.projects.updatePolicyBinding

(roles/resourcemanager.organizationViewer)

Permet d'afficher une organisation.

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

  • Organisation

resourcemanager.organizations.get

(roles/orgpolicy.policyAdmin)

Fournit un accès permettant de définir les restrictions qu'une organisation souhaite appliquer à la configuration des ressources cloud en définissant des règles d'administration.

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

  • Organisation

cloudasset.assets.analyzeOrgPolicy

cloudasset.assets.exportResource

cloudasset.assets.listResource

cloudasset.assets.searchAllResources

orgpolicy.*

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.create
  • orgpolicy.customConstraints.delete
  • orgpolicy.customConstraints.get
  • orgpolicy.customConstraints.list
  • orgpolicy.customConstraints.update
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

policysimulator.orgPolicyViolations.list

policysimulator.orgPolicyViolationsPreviews.*

  • policysimulator.orgPolicyViolationsPreviews.create
  • policysimulator.orgPolicyViolationsPreviews.get
  • policysimulator.orgPolicyViolationsPreviews.list

recommender.orgPolicyInsights.*

  • recommender.orgPolicyInsights.get
  • recommender.orgPolicyInsights.list
  • recommender.orgPolicyInsights.update

recommender.orgPolicyRecommendations.*

  • recommender.orgPolicyRecommendations.get
  • recommender.orgPolicyRecommendations.list
  • recommender.orgPolicyRecommendations.update

(roles/browser)

Accès en lecture pour parcourir la hiérarchie d'un projet, y compris le dossier, l'organisation et la stratégie d'autorisation. Ce rôle ne donne pas l'autorisation d'afficher les ressources du projet.

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

  • Projet

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.organizations.get

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.list

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 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 ressources d'organisation, de dossier et de projet permet à l'utilisateur d'accorder toutes les autres autorisations, et doit donc être attribuée avec précaution.

Afficher les accès existants pour une ressource d'organisation

Vous pouvez afficher les rôles attribués à un utilisateur pour une ressource d'organisation en obtenant la stratégie d'autorisation de cette ressource. Vous pouvez afficher la stratégie d'autorisation pour une ressource d'organisation à l'aide de la console Google Cloud , de la Google Cloud CLI ou de la méthode getIamPolicy().

Console

Pour afficher les rôles attribués au niveau de la ressource Organisation à l'aide de la console Google Cloud  :

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

    Ouvrir la page "Gérer les ressources"

  2. Dans le menu déroulant Organisation, sélectionnez votre ressource Organisation.

  3. Cochez la case correspondant à la ressource Organisation.

  4. Dans le panneau d'informations, sous Autorisations, cliquez sur Développer pour afficher tous les membres qui disposent de ce rôle.

gcloud

Obtenez la stratégie d'autorisation pour la ressource Organisation à l'aide de la commande get-iam-policy :

gcloud alpha organizations get-iam-policy <var>ORGANIZATION_ID</var> --format json >
<var>FILENAME.JSON</var>

La commande génère la stratégie d'autorisation, qui ressemble à ce qui suit :

bindings:
- members:
- user:testuser1@gcp-test.com
role: roles/editor
- members:
- user:admin@gcp-test.com
role:roles/resourcemanager.organizationAdmin
- members:
- user:testuser2@gcp-test.com
role: roles/resourcemanager.projectCreator
etag": "BwU1aRxWk30="

API

L'extrait de code suivant renvoie la stratégie d'autorisation pour la ressource d'organisation https://cloudresourcemanager.googleapis.com/v3/organizations/12345.

Requête :

POST
https://cloudresourcemanager.googleapis.com/v3/organizations/12345:getIamPolicy

Réponse :

{
    "bindings": [
    {
        "role": "roles/resourcemanager.organizationAdmin",
        "members": [
        "user:email1@gmail.com"
    ]
    },
    {
        "role": "roles/resourcemanager.projectCreator",
        "members": [
            "user:email2@gmail.com",
            "user:email3@gmail.com",
            "serviceAccount:my-other-app@appspot.gserviceaccount.com"
        ]
    }
    ]
    "etag": "BwUjHYKHHiQ="
}

Python

La méthode getIamPolicy() vous permet d'obtenir une stratégie d'autorisation précédemment définie.

crm = discovery.build(
    'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))
policy = crm.organizations().getIamPolicy(
    resource=flags.organizationId, body={}).execute()
print json.dumps(policy, indent=2)

Accorder l'accès à une ressource d'organisation

Les administrateurs d'organisation peuvent attribuer des rôles IAM aux membres de l'équipe pour leur permettre d'accéder aux ressources et aux API de cette organisation. Vous pouvez attribuer des rôles à l'adresse e-mail d'un compte utilisateur, à un groupe Google, à un compte de service ou à un domaine G Suite. Vous pouvez attribuer des rôles à l'aide de la console Google Cloud , de la gcloud CLI ou de la méthode setIamPolicy().

Console

Pour définir le contrôle des accès au niveau de la ressource d'organisation à l'aide de la console Google Cloud  :

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

    Ouvrir la page "Gérer les ressources"

  2. Dans le menu déroulant Organisation, sélectionnez votre ressource Organisation.

  3. Cochez la case correspondant à la ressource Organisation. Si vous n'avez pas de ressource Dossier, la ressource Organisation n'est pas visible. Pour continuer, consultez les instructions pour l'attribution de rôles sur la page IAM.

  4. Si le panneau d'informations de droite est masqué, cliquez sur Afficher le panneau d'informations en haut à droite.

  5. Dans le panneau d'informations, accédez à l'onglet Autorisations, puis cliquez sur Ajouter un membre.

  6. Dans le champ Nouveaux membres, saisissez les membres de l'équipe que vous souhaitez ajouter. Vous pouvez indiquer l'adresse e-mail d'un compte utilisateur, un groupe Google, un compte de service ou un domaine G Suite.

  7. Dans le menu déroulant Sélectionner un rôle, sélectionnez le rôle que vous souhaitez attribuer aux membres de l'équipe.

  8. Cliquez sur Ajouter.

gcloud

Pour définir la stratégie d'autorisation d'une ressource Organisation à l'aide de la commande gcloud :

  1. Obtenez la règle d'autorisation pour la ressource d'organisation à l'aide de la commande get-iam-policy et exportez-la dans un fichier JSON :

    gcloud alpha organizations get-iam-policy <var>ORGANIZATION_ID</var>
    --format json > <var>FILENAME.JSON</var>
    
  2. Le fichier JSON affiche un contenu similaire au texte ci-dessous :

{
    "bindings": [
    {
        "members": [
            "user:testuser1@gcp-test.com"
        ],
        "role": "roles/editor"
    },
    {
        "members":