Gérer des stratégies conditionnelles

Cette rubrique explique comment ajouter, modifier et supprimer des liaisons conditionnelles dans vos stratégies Cloud IAM (Cloud Identity and Access Management).

Avant de commencer

Ajouter une liaison de rôle conditionnelle à une stratégie

Vous pouvez ajouter des liaisons de rôles conditionnelles à des stratégies Cloud IAM nouvelles ou existantes afin de restreindre davantage l'accès aux ressources Google Cloud. Cette section vous explique comment ajouter une condition temporelle simple à une stratégie existante à l'aide de Cloud Console, de l'outil de ligne de commande gcloud et de l'API REST.

Pour ajouter une liaison de rôle conditionnelle à une stratégie existante, procédez comme suit :

Console

  1. Ouvrez la page IAM dans Cloud Console.

    Ouvrir la page IAM

  2. Cliquez sur Sélectionner un projet, choisissez un projet et cliquez sur Ouvrir.
  3. Dans la liste des membres, localisez le membre souhaité, puis cliquez sur le bouton .
  4. Dans le panneau Modifier les autorisations, localisez le rôle pour lequel vous souhaitez configurer une condition. Sous Condition, cliquez sur Ajouter une condition.
  5. Dans le panneau Modifier la condition, saisissez un titre et une description facultative pour la condition.
  6. Vous pouvez ajouter une expression de condition à l'aide du Créateur de conditions ou de l'Éditeur de conditions. L'outil Créateur de conditions fournit une interface interactive permettant de sélectionner le type de condition, l'opérateur et d'autres informations applicables concernant l'expression. L'outil Éditeur de conditions fournit une interface textuelle permettant de saisir manuellement une expression à l'aide de la syntaxe CEL.

    Créateur de conditions

    1. Dans la liste déroulante Type de condition, sélectionnez Expiration de l'accès.
    2. Dans le menu déroulant Opérateur, sélectionnez par.
    3. Dans le menu déroulant Heure, cliquez sur le menu déroulant pour sélectionner une date et une période.
    4. Cliquez sur Enregistrer pour appliquer la condition.
    5. Une fois le panneau Modifier la condition fermé, cliquez à nouveau sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour votre stratégie Cloud IAM.

    Éditeur de conditions

    1. Cliquez sur l'onglet Éditeur de conditions, puis saisissez l'expression suivante (en remplaçant l'horodatage par le vôtre) :

      request.time < timestamp("2019-12-31T12:00:00.000Z")
    2. Après avoir saisi votre expression, vous pouvez choisir de valider la syntaxe CEL en cliquant sur Exécuter l'outil lint au-dessus de la zone de texte en haut à droite.
    3. Cliquez sur Enregistrer pour appliquer la condition.
    4. Une fois le panneau Modifier la condition fermé, cliquez à nouveau sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour votre stratégie Cloud IAM.

Commande gcloud

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

Exécutez la commande gcloud projects get-iam-policy pour obtenir la stratégie Cloud IAM actuelle du projet. Dans l'exemple suivant, la version JSON de la stratégie est téléchargée dans un chemin sur le disque.

Commande :

gcloud projects get-iam-policy [PROJECT-ID] --format json > [FILE-PATH]

Le format JSON de la stratégie Cloud IAM est téléchargé :

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

Notez la stratégie version actuelle, qui est 1. Pour configurer la stratégie avec un accès pouvant expirer, ajoutez l'expression de condition en surbrillance suivante (en remplaçant l'horodatage par le vôtre). Si vous n'utilisez pas la version 263.0.0 ou une version plus récente de l'outil gcloud, vérifiez que vous avez remplacé la valeur version par3. Si vous utilisez une version plus récente de l'outil gcloud, la valeur maximale de la stratégie est automatiquement définie :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/iam.securityReviewer",
          "condition": {
              "title": "Expires_2019",
              "description": "Expires at noon on 2019-12-31",
              "expression":
                "request.time < timestamp('2019-12-31T12:00:00Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Définissez ensuite la nouvelle stratégie conditionnelle en exécutant la commande gcloud projects set-iam-policy :

gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]

La nouvelle stratégie conditionnelle est appliquée et la liaison de rôle de example@gmail.com expire à l'heure spécifiée.

API REST

Appelez projects.getIamPolicy() pour obtenir la stratégie Cloud IAM actuelle du projet.

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy

Le corps de la requête est défini comme suit :

{
      "options": {
        "requestedPolicyVersion": 3
      }
    }

Le corps de la réponse contiendra la stratégie Cloud IAM du projet :

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

Notez la stratégie version actuelle, qui est 1. Pour configurer la stratégie avec un accès pouvant expirer, ajoutez l'expression de condition en surbrillance suivante (en remplaçant l'horodatage par le vôtre). Pour respecter les exigences concernant la version des conditions, assurez-vous d'avoir remplacé la valeur version par 3 :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/iam.securityReviewer",
          "condition": {
              "title": "Expires_2019",
              "description": "Expires at noon on 2019-12-31",
              "expression":
                "request.time < timestamp('2019-12-31T12:00:00Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Appelez projects.setIamPolicy() pour définir la nouvelle stratégie Cloud IAM conditionnelle du projet, y compris la stratégie mise à jour dans le corps de la requête :

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy

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

Modifier une liaison de rôle conditionnelle existante

Les stratégies Cloud IAM contenant des liaisons de rôles conditionnelles peuvent être modifiées pour mettre à jour la restriction d'accès actuelle sur une ressource. Cette section vous explique comment mettre à jour une condition temporelle dans une stratégie existante à l'aide de Cloud Console, de l'outil de ligne de commande gcloud et de l'API REST.

Pour modifier une liaison de rôle conditionnelle dans une stratégie existante, procédez comme suit :

Console

  1. Ouvrez la page IAM dans Cloud Console.

    Ouvrir la page IAM

  2. Cliquez sur Sélectionner un projet, choisissez un projet et cliquez sur Ouvrir.
  3. Dans la liste des membres, localisez le membre souhaité, puis cliquez sur le bouton .
  4. Dans le panneau Modifier les autorisations, localisez le rôle pour lequel vous souhaitez configurer une condition. Sous Condition, cliquez sur le nom de la condition existante pour la modifier.
  5. Dans le panneau Modifier la condition, vous pouvez conserver ou mettre à jour le titre et la description de la condition.
  6. Vous pouvez modifier l'expression de condition existante ou en ajouter une à l'aide du Créateur de conditions ou de l'Éditeur de conditions. L'outil Créateur de conditions fournit une interface interactive permettant de sélectionner le type de condition, l'opérateur et d'autres informations applicables concernant l'expression. L'outil Éditeur de conditions fournit une interface textuelle permettant de saisir manuellement une expression à l'aide de la syntaxe CEL.

    Créateur de conditions

    1. Ajoutez une nouvelle expression de condition ou modifiez l'expression de condition existante.
    2. Cliquez sur Enregistrer pour appliquer la condition.
    3. Une fois le panneau Modifier la condition fermé, cliquez à nouveau sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour votre stratégie Cloud IAM.

    Éditeur de conditions

    1. Cliquez sur l'onglet Éditeur de conditions, puis ajoutez une nouvelle expression de condition ou modifiez l'expression de condition existante.
    2. Après avoir saisi votre expression, vous pouvez choisir de valider la syntaxe CEL en cliquant sur Exécuter l'outil lint au-dessus de la zone de texte en haut à droite.
    3. Cliquez sur Enregistrer pour appliquer la condition.
    4. Une fois le panneau Modifier la condition fermé, cliquez à nouveau sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour votre stratégie Cloud IAM.

Commande gcloud

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

Exécutez la commande gcloud projects get-iam-policy pour obtenir la stratégie Cloud IAM actuelle du projet. Dans l'exemple suivant, la version JSON de la stratégie est téléchargée dans un chemin sur le disque.

Commande :

gcloud projects get-iam-policy [PROJECT-ID] --format json > [FILE-PATH]

Le format JSON de la stratégie Cloud IAM est téléchargé :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Duration_3_months",
              "description": "Expires in 3 months on 2019-10-12",
              "expression":
                "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") &&
                request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Dans cet exemple, nous allons mettre à jour les valeurs title et description, ainsi que les valeurs d'horodatage dans l'expression pour modifier la durée de la condition d'accès planifié. Mettez à jour la partie en surbrillance suivante de la condition (en remplaçant les valeurs par les vôtres). Si vous n'utilisez pas la version 263.0.0 ou une version plus récente de l'outil gcloud, vérifiez que vous avez remplacé la valeur version par 3. Si vous utilisez une version plus récente de l'outil gcloud, la valeur maximale de la stratégie est automatiquement définie :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
          
          "condition": {
              "title": "Duration_5_months",
              "description": "Expires in 5 months on 2020-01-12",
              "expression":
                "request.time > timestamp('2019-07-12T07:00:00.000Z') &&
                request.time < timestamp('2020-01-12T07:00:00.000Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Définissez ensuite la nouvelle stratégie conditionnelle en exécutant la commande gcloud projects set-iam-policy.

gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]

La stratégie conditionnelle mise à jour est appliquée et la liaison de rôle de example@gmail.com expire à la nouvelle heure.

API REST

Appelez projects.getIamPolicy() pour obtenir la stratégie Cloud IAM actuelle du projet.

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy

Le corps de la requête est défini comme suit :

{
      "options": {
        "requestedPolicyVersion": 3
      }
    }

Le corps de la réponse contiendra la stratégie Cloud IAM du projet :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Duration_3_months",
              "description": "Expires in 3 months on 2019-10-12",
              "expression":
                "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") &&
                request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Dans cet exemple, nous allons mettre à jour les valeurs d'horodatage afin de modifier la durée de la condition d'accès planifié. Mettez à jour la partie en surbrillance suivante de l'expression de condition (en remplaçant l'horodatage par la vôtre) :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Duration_5_months",
              "description": "Expires in 5 months on 2020-01-12",
              
              "expression":
                "request.time > timestamp('2019-07-12T07:00:00.000Z') &&
                request.time < timestamp('2020-01-12T07:00:00.000Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Appelez projects.setIamPolicy() pour définir la stratégie Cloud IAM conditionnelle mise à jour du projet, y compris la stratégie mise à jour dans le corps de la requête :

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy

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

Supprimer une liaison de rôle conditionnelle

Lorsque vous supprimez la liaison de rôle conditionnelle dans une stratégie Cloud IAM, l'accès à la ressource est limité à la liaison de rôle uniquement. Cette section vous explique comment supprimer une condition temporelle dans une stratégie à l'aide de Cloud Console, de l'outil de ligne de commande gcloud et de l'API REST.

Pour supprimer une condition d'une liaison de rôle dans une stratégie, procédez comme suit :

Console

  1. Ouvrez la page IAM dans Cloud Console.

    Ouvrir la page IAM

  2. Cliquez sur Sélectionner un projet, choisissez un projet et cliquez sur Ouvrir.
  3. Dans la liste des membres, localisez le membre souhaité, puis cliquez sur le bouton .
  4. Dans le panneau Modifier les autorisations, recherchez la liaison de rôle souhaitée. Sous Condition, cliquez sur le nom d'une condition existante.
  5. Dans le panneau Modifier la condition, cliquez sur le bouton pour supprimer la condition. Vous êtes alors invité à confirmer la suppression de la condition.
  6. Une fois le panneau Modifier la condition fermé, cliquez à nouveau sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour votre stratégie Cloud IAM.

Commande gcloud

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

Exécutez la commande gcloud projects get-iam-policy pour obtenir la stratégie Cloud IAM actuelle du projet. Dans l'exemple suivant, la version JSON de la stratégie est téléchargée dans un chemin sur le disque.

Commande :

gcloud projects get-iam-policy [PROJECT-ID] --format json > [FILE-PATH]

Le format JSON de la stratégie Cloud IAM est téléchargé :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Duration_3_months",
              "description": "Expires in 3 months on 2019-10-12",
              "expression":
                "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") &&
                request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Pour supprimer la liaison de rôle conditionnelle de la stratégie, supprimez le bloc condition comme indiqué ci-dessous :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Notez que le champ version est toujours défini sur 3, même si les liaisons de rôles inconditionnelles ne requièrent que la version de stratégie 1. Nous vous recommandons de toujours utiliser la version de stratégie maximale lors de la définition d'une stratégie, à la fois pour les liaisons de rôles conditionnelles et inconditionnelles. Pour plus d'informations, consultez la section Exigences concernant la version. Si vous utilisez la version 263.0.0 ou une version plus récente de l'outil gcloud, la version la plus récente de la stratégie est mise à jour.

Définissez ensuite la stratégie mise à jour en exécutant la commande gcloud projects set-iam-policy :

gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]

La stratégie mise à jour est appliquée et supprime la liaison de rôle conditionnelle pour example@gmail.com. La liaison de rôle n'expire plus.

API REST

Appelez projects.getIamPolicy() pour obtenir la stratégie Cloud IAM actuelle du projet.

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy

Le corps de la requête est défini comme suit :

{
      "options": {
        "requestedPolicyVersion": 3
      }
    }

Le corps de la réponse contiendra la stratégie Cloud IAM du projet :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Duration_3_months",
              "description": "Expires in 3 months on 2019-10-12",
              "expression":
                "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") &&
                request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Pour supprimer la liaison de rôle conditionnelle de la stratégie, supprimez le bloc condition comme indiqué ci-dessous :

{
      "bindings": [
        {
          "members": [
            "user:example@gmail.com"
          ],
          "role": "roles/bigquery.dataViewer",
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Notez que le champ version est toujours défini sur 3, même si les liaisons de rôles inconditionnelles ne requièrent que la version de stratégie 1. Nous vous recommandons de toujours utiliser la version de stratégie maximale lors de la définition d'une stratégie, à la fois pour les liaisons de rôles conditionnelles et inconditionnelles. Pour plus d'informations, consultez la section Exigences concernant la version.

Appelez projects.setIamPolicy() pour définir la stratégie Cloud IAM mise à jour du projet, y compris la stratégie mise à jour dans le corps de la requête :

POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy

La réponse affiche la stratégie mise à jour qui ne comporte plus la liaison conditionnelle.