Définir des limites pour l'attribution de rôles

Dans les grandes organisations, il peut être utile de laisser les équipes gérer indépendamment les stratégies d'autorisation pour leurs ressources. Toutefois, permettre à un compte principal d'accorder ou de révoquer tous les rôles IAM peut considérablement augmenter les risques liés à la sécurité.

Vous pouvez définir des limites sur les rôles qu'un compte principal peut accorder et révoquer à l'aide des conditions IAM (Identity and Access Management) et de l'attribut d'API iam.googleapis.com/modifiedGrantsByRole. Ces limites vous permettent de créer des administrateurs IAM limités pouvant gérer les stratégies d'autorisation de leur propre équipe, mais uniquement dans les limites que vous avez définies.

Avant de commencer

Autorisations requises

Pour obtenir les autorisations nécessaires pour créer des administrateurs IAM limités pour un projet, un dossier ou une organisation, demandez à votre administrateur de vous accorder les rôles IAM suivants sur la ressource pour laquelle vous souhaitez créer un administrateur IAM limité (projet, dossier ou organisation) :

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour créer des administrateurs IAM limités pour un projet, un dossier ou une organisation. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer des administrateurs IAM limités pour un projet, un dossier ou une organisation :

  • Pour créer un administrateur IAM limité pour un projet :
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Pour créer un administrateur IAM limité pour un dossier :
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • Pour créer un administrateur IAM limité pour une organisation 
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Cas d'utilisation courants

Les sections suivantes décrivent comment utiliser l'attribution de rôles limitée pour activer la gestion en libre-service des stratégies d'autorisation.

Créer des administrateurs IAM limités

Imaginons un scénario dans lequel vous souhaitez autoriser un utilisateur, Finn (finn@example.com), à agir en tant qu'administrateur IAM limité pour votre projet. Vous souhaitez que Finn puisse accorder et révoquer uniquement les rôles Administrateur App Engine (roles/appengine.appAdmin) et Lecteur App Engine (roles/appengine.appViewer) pour votre projet.

Pour accorder cette fonctionnalité limitée, vous accordez de manière conditionnelle à Finn le rôle d'administrateur IAM de projet (roles/resourcemanager.projectIamAdmin). Le rôle d'administrateur IAM de projet permet à Finn d'accorder et de révoquer des rôles IAM, et la condition limite les rôles que Finn peut accorder et révoquer :

{
  "version": 3,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "members": [
        "user:owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "finn@example.com"
      ],
      "role": "roles/resourcemanager.projectIamAdmin",
      "condition": {
        "title": "only_appengine_admin_viewer_roles",
        "description": "Only allows changes to role bindings with the App Engine Admin or Viewer roles",
        "expression":
          "api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/appengine.appAdmin', 'roles/appengine.appViewer'])"
      }
    }
  ]
}

Cette liaison de rôle conditionnelle permet à Finn d'effectuer les opérations suivantes :

  • Révoquez les rôles Administrateur App Engine et Lecteur App Engine du projet.
  • Révoquez les rôles Administrateur App Engine et Lecteur App Engine du projet.
  • Ajoutez, supprimez ou modifiez des conditions pour les liaisons de rôle au niveau du projet qui attribuent les rôles Administrateur App Engine et Lecteur App Engine.
  • Effectuez d'autres actions autorisées par le rôle Administrateur IAM du projet qui ne modifient pas la stratégie d'autorisation du projet. Par exemple, Finn peut utiliser la méthode projects.getIamPolicy pour obtenir la stratégie d'autorisation du projet.

Cette liaison de rôle conditionnelle ne permet pas à Finn d'effectuer les opérations suivantes :

  • Modifier les stratégies d'autorisation pour des ressources autres que le projet
  • Accordez des rôles autres que les rôles Administrateur App Engine ou Lecteur App Engine.
  • Révoquez les rôles autres que les rôles Administrateur App Engine ou Lecteur App Engine.
  • Ajoutez, supprimez ou modifiez des conditions pour les liaisons de rôle qui n'accordent pas les rôles Administrateur App Engine ou Lecteur App Engine.

Autoriser les utilisateurs à gérer des administrateurs IAM limités

Imaginons, par exemple, que vous souhaitiez créer un utilisateur, Lila, un administrateur IAM limité pour son équipe. Vous souhaitez que Lila ne puisse accorder et révoquer que le rôle d'administrateur Compute (roles/compute.admin) pour son projet. Vous souhaitez également que Lila sélectionne d'autres utilisateurs pour agir en tant qu'administrateurs IAM limités. En d'autres termes, vous souhaitez permettre à d'autres utilisateurs d'accorder et de révoquer uniquement le rôle d'administrateur Compute.

Vous pensez peut-être que la solution consiste à attribuer à Lila le rôle d'administrateur de projet IAM (roles/resourcemanager.projectIamAdmin), puis à lui permettre d'accorder ou de révoquer ce rôle pour d'autres personnes. Toutefois, si vous accordez à Lila le rôle d'administrateur de projet IAM, elle peut supprimer la condition de son propre rôle et s'autoriser à accorder ou à révoquer n'importe quel rôle IAM.

Pour éviter cette transmission de privilèges, créez un groupe Google, iam-compute-admins@example.com, pour les administrateurs IAM limités du projet. Ensuite, ajoutez Lila au groupe et rendez-la gestionnaire de groupe.

Après avoir créé le groupe, vous lui accordez de manière conditionnelle le rôle d'administrateur de projet IAM (roles/resourcemanager.projectIamAdmin). Le rôle d'administrateur de projet IAM permet aux membres du groupe d'accorder et de révoquer des rôles IAM, et la condition limite les rôles qu'ils peuvent accorder et révoquer :

{
  "version": 3,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "members": [
        "user:owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "iam-compute-admins@example.com"
      ],
      "role": "roles/resourcemanager.projectIamAdmin",
      "condition": {
        "title": "only_compute_admin_role",
        "description": "Only allows changes to role bindings for the Compute Admin role",
        "expression":
          "api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/compute.admin'])"
      }
    }
  ]
}

En tant que membre du groupe iam-compute-admins@example.com, Lila peut effectuer les opérations suivantes :

  • Accorder le rôle d'administrateur Compute du projet en ajoutant une nouvelle liaison pour le rôle, ou en ajoutant un compte principal à une liaison existante pour le rôle
  • Révoquer le rôle d'administrateur Compute en supprimant une liaison existante pour le rôle ou en supprimant un compte principal d'une liaison existante pour le rôle
  • Modifier les autorisations pour le rôle d'administrateur Compute en ajoutant, supprimant ou modifiant des conditions associées aux liaisons du rôle
  • Effectuez d'autres actions autorisées par le rôle Administrateur IAM du projet qui ne modifient pas la stratégie d'autorisation du projet. Par exemple, elle peut utiliser la méthode projects.getIamPolicy pour obtenir la stratégie d'autorisation du projet.

En tant qu'administrateur du groupe iam-compute-admins@example.com, Lila peut autoriser d'autres utilisateurs à accorder ou à révoquer le rôle d'administrateur Compute en les ajoutant au groupe iam-compute-admins@example.com.

Lila ne peut pas effectuer les opérations suivantes :

  • S'autoriser à accorder ou à révoquer d'autres rôles
  • Modifier les stratégies d'autorisation pour des ressources autres que le projet
  • Accorder des rôles autres que le rôle d'administrateur Compute
  • Révoquer les rôles autres que celui d'administrateur Compute
  • Ajouter, supprimer ou modifier des conditions pour les liaisons de rôles qui n'accordent pas le rôle d'administrateur Compute.

Limiter l'attribution de rôles

Les sections suivantes expliquent comment autoriser des comptes principaux à accorder ou à révoquer uniquement certains rôles.

Écrire une expression de condition pour limiter l'attribution de rôles

Pour limiter la capacité d'un compte principal à attribuer des rôles, écrivez une expression de condition qui spécifie les rôles qu'un compte principal peut accorder ou révoquer.

Utilisez le format suivant pour votre expression de condition :

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(roles)

Cette expression effectue les opérations suivantes :

  • Récupérer l'attribut de l'API iam.googleapis.com/modifiedGrantsByRole à l'aide de la fonction api.getAttribute()

    Pour une requête permettant de définir la stratégie d'autorisation d'une ressource, cet attribut contient les noms de rôle des liaisons modifiées par la requête. Pour les autres types de requêtes, l'attribut n'est pas défini. Dans ces cas, la fonction renvoie la valeur par défaut ([]).

  • Utilise la fonction Common Expression Language hasOnly() pour définir et appliquer les rôles que le compte principal est autorisé à accorder ou à révoquer.

    L'entrée de la fonction hasOnly() est une liste des rôles que le compte principal est autorisé à accorder ou à révoquer. Si les rôles de l'attribut iam.googleapis.com/modifiedGrantsByRole sont inclus dans cette liste, la fonction renvoie true. Si elles ne sont pas égales, la fonction renvoie false.

    Si l'attribut iam.googleapis.com/modifiedGrantsByRole contient la valeur par défaut ([]), la fonction renvoie true, car [] ne contient aucun rôle non inclus dans la liste.

Pour personnaliser cette expression, remplacez roles par la liste des rôles que le compte principal peut accorder ou révoquer. Par exemple, pour permettre au compte principal d'accorder ou de révoquer uniquement les rôles de publication Pub/Sub (roles/pubsub.editor) et d'éditeur Pub/Sub (roles/pubsub.publisher), utilisez la valeur ['roles/pubsub.editor', 'roles/pubsub.publisher'].

Vous pouvez inclure jusqu'à 10 valeurs dans la liste des rôles autorisés. Toutes ces valeurs doivent être des constantes de chaîne.

Opérateurs logiques pour les instructions hasOnly()

N'utilisez pas les opérateurs && ou || pour joindre plusieurs instructions hasOnly() dans une seule condition. Dans ce cas, les requêtes qui attribuent ou révoquent plusieurs rôles peuvent échouer, même si le compte principal peut attribuer ou révoquer ces rôles individuellement.

Par exemple, considérons la condition suivante :

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor']) ||
api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.publisher'])

Cette condition renvoie true si la requête accorde le rôle roles/pubsub.editor ou roles/pubsub.publisher, et false si la requête accorde à la fois les rôles roles/pubsub.editor et roles/pubsub.publisher.

Limiter l'attribution de rôles à l'aide de liaisons de rôles conditionnelles

Pour permettre à un compte principal de n'accorder ou de révoquer que certains rôles, utilisez l'expression de condition de la section précédente pour créer une liaison de rôle conditionnelle. Ajoutez ensuite la liaison de rôle conditionnelle à la stratégie d'autorisation d'une ressource.

  1. Sélectionnez une ressource qui représente le champ d'application pour lequel un compte principal peut attribuer et révoquer des rôles :

    • Si vous souhaitez autoriser un compte principal à accorder et révoquer certains rôles pour toutes les ressources d'une organisation, sélectionnez une organisation.
    • Si vous souhaitez autoriser un compte principal à accorder et révoquer certains rôles pour toutes les ressources d'un dossier, sélectionnez un dossier.
    • Si vous souhaitez autoriser un compte principal à accorder et révoquer certains rôles pour toutes les ressources d'un projet, sélectionnez un projet.
  2. Sélectionnez un rôle permettant à un compte principal de définir la stratégie d'autorisation pour le type de ressource que vous avez sélectionné (projet, dossier ou organisation). Pour suivre le principe du moindre privilège, choisissez l'un des rôles prédéfinis suivants :

    • Projets : administrateur IAM de projets (roles/resourcemanager.projectIamAdmin)
    • Dossiers : administrateur IAM de dossiers (roles/resourcemanager.folderIamAdmin)
    • Organisations : administrateur de l'organisation (roles/resourcemanager.organizationAdmin)

    Vous pouvez également choisir un rôle personnalisé qui inclut les autorisations resourcemanager.resource-type.setIamPolicy et resourcemanager.resource-type.getIamPolicy, où resource-type correspond à project, folder ou organization.

  3. Accordez de manière conditionnelle à un compte principal le rôle que vous avez choisi pour le projet, le dossier ou l'organisation que vous avez sélectionné.

    La nouvelle stratégie d'autorisation est appliquée et votre compte principal ne peut modifier les liaisons que pour les rôles que vous avez autorisés.

    Console

    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à la page IAM

    2. Assurez-vous que le nom de votre projet, dossier ou organisation apparaît dans le sélecteur de ressources en haut de la page. Le sélecteur de ressources indique le projet, le dossier ou l'organisation dans lequel vous travaillez actuellement.

      Si vous ne voyez pas le nom de votre ressource, cliquez sur le sélecteur de ressource, puis sélectionnez votre ressource.

    3. Dans la liste des comptes principaux, recherchez celui qui accorde et révoque les rôles, puis cliquez sur le bouton .

    4. Dans le panneau Modifier les autorisations, sélectionnez le rôle que vous avez choisi précédemment. Puis sous Condition IAM (facultatif), cliquez sur Ajouter une condition IAM.

    5. Dans le panneau Modifier la condition, saisissez un titre et une description facultative pour la condition.

    6. Cliquez sur l'onglet Éditeur de conditions, puis saisissez l'expression que vous avez écrite dans Écrire une expression de condition pour limiter l'attribution des rôles. Cette expression limite les rôles que le compte principal peut accorder ou révoquer.

      Par exemple, l'expression de condition suivante limite le compte principal à accorder et à révoquer les rôles d'Éditeur Pub/Sub (roles/pubsub.editor et roles/pubsub.publisher) :

      api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

      Avertissement : N'incluez pas les types de rôles suivants dans la liste des rôles autorisés :

      • Rôles disposant d'autorisations pour accorder et révoquer les rôles IAM (c'est-à-dire, les rôles avec des noms d'autorisation se terminant par setIamPolicy)
      • Rôles personnalisés que l'administrateur IAM limité peut modifier. Par exemple, si l'administrateur IAM limité dispose également du rôle d'administrateur de rôle (roles/iam.roleAdmin) sur un projet, ne l'autorisez pas à accorder ou à révoquer les rôles personnalisés au niveau du projet.

      Les administrateurs IAM limités qui peuvent accorder et révoquer ces types de rôles peuvent s'accorder eux-mêmes l'autorisation d'accorder et de révoquer tous les rôles IAM. Pour en savoir plus, consultez la section Écrire une expression de condition pour limiter l'attribution de rôles.

    7. Cliquez sur Enregistrer pour appliquer la condition.

    8. Une fois le panneau Modifier la condition fermé, cliquez sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour votre stratégie d'autorisation.

    gcloud

    Les stratégies d'autorisation sont définies à l'aide du modèle lecture-modification-écriture.

    Consultez la stratégie d'autorisation associée à la ressource :

    Exécutez la commande get-iam-policy. Cette commande obtient la stratégie d'autorisation actuelle de la ressource.

    Commande :

    gcloud resource-type get-iam-policy resource-id --format=json > path

    Remplacez les valeurs suivantes :

    • resource-type : type de ressource pour lequel un compte principal peut accorder ou révoquer des rôles. Utilisez l'un des éléments suivants : projects, resource-manager folders ou organizations.
    • resource-id : votre projet, dossier ou ID Google Cloud
    • path : chemin d'accès au fichier vers lequel télécharger la stratégie d'autorisation

    La stratégie d'autorisation est enregistrée au format JSON, par exemple :

    {
      "bindings": [
        {
          "members": [
            "user:project-owner@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

    Ensuite, modifiez la stratégie d'autorisation.

    Pour permettre à un compte principal de ne modifier que les liaisons de certains rôles, ajoutez la liaison de rôle conditionnelle en surbrillance :

    {
      "bindings": [
        {
          "members": [
            "user:owner@example.com"
          ],
          "role": "roles/owner"
        },
        {
          "members": [
            "principal"
          ],
          "role": "role",
          "condition": {
            "title": "title",
            "description": "description",
            "expression":
              "expression"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

    Remplacez les valeurs suivantes :

    • principal : compte principal qui accorde ou révoque certains rôles. Par exemple, user:my-user@example.com. Pour connaître les formats de chaque type de compte principal, consultez la documentation de référence sur Binding.
    • role : rôle que vous avez choisi lors des étapes précédentes. Ce rôle doit inclure l'autorisation setIamPolicy pour le type de ressource que vous avez choisi.
    • title : chaîne décrivant brièvement la condition. Par exemple, only_pubsub_roles.
    • description : facultatif. Une description supplémentaire de la condition. Par exemple, Only allows granting/revoking the Pub/Sub editor and publisher roles.
    • expression : expression que vous avez écrite dans la section Écrire une expression de condition pour limiter l'attribution de rôles. Cette expression limite les rôles que le compte principal peut accorder ou révoquer.

      Par exemple, l'expression de condition suivante limite le compte principal à accorder et à révoquer les rôles d'Éditeur Pub/Sub (roles/pubsub.editor et roles/pubsub.publisher) :

      api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

      Avertissement : N'incluez pas les types de rôles suivants dans la liste des rôles autorisés :

      • Rôles disposant d'autorisations pour accorder et révoquer les rôles IAM (c'est-à-dire, les rôles avec des noms d'autorisation se terminant par setIamPolicy)
      • Rôles personnalisés que l'administrateur IAM limité peut modifier. Par exemple, si l'administrateur IAM limité dispose également du rôle d'administrateur de rôle (roles/iam.roleAdmin) sur un projet, ne l'autorisez pas à accorder ou à révoquer les rôles personnalisés au niveau du projet.

      Les administrateurs IAM limités qui peuvent accorder et révoquer ces types de rôles peuvent s'accorder eux-mêmes l'autorisation d'accorder et de révoquer tous les rôles IAM. Pour en savoir plus, consultez la section Écrire une expression de condition pour limiter l'attribution de rôles.

    Enfin, écrivez la stratégie d'autorisation mise à jour :

    Définissez la nouvelle stratégie d'autorisation en exécutant la commande set-iam-policy pour la ressource :

    gcloud resource-type set-iam-policy resource-id path

    Remplacez les valeurs suivantes :

    • resource-type : type de ressource pour lequel un compte principal peut accorder ou révoquer des rôles. Utilisez l'un des éléments suivants : projects, resource-manager folders ou organizations.
    • resource-id : votre projet, dossier ou ID Google Cloud
    • path : chemin d'accès au fichier contenant la stratégie d'autorisation mise à jour

    La nouvelle stratégie d'autorisation est appliquée et le compte principal ne peut modifier les liaisons que pour les rôles que vous avez autorisés.

    REST

    Les stratégies d'autorisation sont définies à l'aide du modèle lecture-modification-écriture.

    Consultez la stratégie d'autorisation associée à la ressource :

    La méthode getIamPolicy de l'API Resource Manager permet d'obtenir la stratégie d'autorisation d'un projet, d'un dossier ou d'une organisation.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • API_VERSION : version de l'API à utiliser. Pour les projets et les organisations, utilisez v1. Pour les dossiers, utilisez v2.
    • RESOURCE_TYPE : type de ressource dont vous souhaitez gérer la stratégie. Utilisez la valeur projects, folders ou organizations.
    • RESOURCE_ID : ID du projet, de l'organisation ou du dossier Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project. Les ID de dossier et d'organisation sont numériques, tels que 123456789012.
    • POLICY_VERSION : version de la stratégie à renvoyer. Les requêtes doivent spécifier la version de stratégie la plus récente, qui est la version 3. Pour plus d'informations, consultez la section Spécifier une version de stratégie lors de l'obtention d'une stratégie.

    Méthode HTTP et URL :

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

    Corps JSON de la requête :

    {
      "options": {
        "requestedPolicyVersion": POLICY_VERSION
      }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    La réponse contient la stratégie d'autorisation de la ressource. Exemple :

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "user:owner@example.com"
          ]
        }
      ]
    }
    

    Ensuite, modifiez la stratégie d'autorisation.

    Ajoutez une liaison de rôle conditionnelle permettant à un compte principal d'accorder et de révoquer uniquement certains rôles. Veillez à remplacer la valeur du champ version par la valeur 3 :

    {
      "version": 3,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "members": [
            "user:owner@example.com"
          ],
          "role": "roles/owner"
        },
        {
          "members": [
            "PRINCIPAL"
          ],
          "role": "ROLE",
          "condition": {
            "title": "TITLE",
            "description": "DESCRIPTION",
            "expression":
              "EXPRESSION"
          }
        }
      ]
    }
    • PRINCIPAL : compte principal qui accorde ou révoque certains rôles. Par exemple, user:my-user@example.com. Pour connaître les formats de chaque type de compte principal, consultez la documentation de référence sur Binding.
    • ROLE : rôle que vous avez choisi lors des étapes précédentes. Ce rôle doit inclure l'autorisation setIamPolicy pour le type de ressource que vous avez choisi.
    • TITLE : chaîne décrivant brièvement la condition. Par exemple, only_pubsub_roles.
    • DESCRIPTION : facultatif. Une description supplémentaire de la condition. Par exemple, Only allows granting/revoking the Pub/Sub editor and publisher roles.
    • EXPRESSION : expression que vous avez écrite dans la section Écrire une expression de condition pour limiter l'attribution de rôles. Cette expression limite les rôles que le compte principal peut accorder ou révoquer.

      Par exemple, l'expression de condition suivante limite le compte principal à accorder et à révoquer les rôles d'Éditeur Pub/Sub (roles/pubsub.editor et roles/pubsub.publisher) :

      api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', []).hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

      Avertissement : N'incluez pas les types de rôles suivants dans la liste des rôles autorisés :

      • Rôles disposant d'autorisations pour accorder et révoquer les rôles IAM (c'est-à-dire, les rôles avec des noms d'autorisation se terminant par setIamPolicy)
      • Rôles personnalisés que l'administrateur IAM limité peut modifier. Par exemple, si l'administrateur IAM limité dispose également du rôle d'administrateur de rôle (roles/iam.roleAdmin) sur un projet, ne l'autorisez pas à accorder ou à révoquer les rôles personnalisés au niveau du projet.

      Les administrateurs IAM limités qui peuvent accorder et révoquer ces types de rôles peuvent s'accorder eux-mêmes l'autorisation d'accorder et de révoquer tous les rôles IAM. Pour en savoir plus, consultez la section Écrire une expression de condition pour limiter l'attribution de rôles.

    Enfin, écrivez la stratégie d'autorisation mise à jour :

    La méthode setIamPolicy de l'API Resource Manager définit la stratégie d'autorisation de la requête comme nouvelle stratégie d'autorisation pour le projet, le dossier ou l'organisation.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • API_VERSION : version de l'API à utiliser. Pour les projets et les organisations, utilisez v1. Pour les dossiers, utilisez v2.
    • RESOURCE_TYPE : type de ressource dont vous souhaitez gérer la stratégie. Utilisez la valeur projects, folders ou organizations.
    • RESOURCE_ID : ID du projet, de l'organisation ou du dossier Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project. Les ID de dossier et d'organisation sont numériques, tels que 123456789012.
    • POLICY : représentation JSON de la stratégie que vous souhaitez définir. Pour en savoir plus sur le format d'une stratégie, consultez la documentation de référence sur les stratégies.

      Par exemple, pour définir la stratégie présentée à l'étape précédente, remplacez POLICY par ce qui suit :

      {
        "version": 3,
        "etag": "BwWKmjvelug=",
        "bindings": [
          {
            "members": [
              "user:owner@example.com"
            ],
            "role": "roles/owner"
          },
          {
            "members": [
              "principal"
            ],
            "role": "role",
            "condition": {
              "title": "title",
              "description": "description",
              "expression":
                "expression"
            }
          }
        ]
      }

    Méthode HTTP et URL :

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

    Corps JSON de la requête :

    {
      "policy": POLICY
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    La réponse contient la stratégie d'autorisation mise à jour.

Étape suivante