Gérer les liaisons de rôles conditionnelles

Cet article explique comment ajouter, modifier et supprimer des liaisons de rôle conditionnelles dans vos stratégies Cloud IAM (Cloud Identity and Access Management).

Avant de commencer

Ajouter une liaison de rôle conditionnelle à une règle

Les liaisons de rôle conditionnelles peuvent être ajoutées à des stratégies Cloud IAM nouvelles ou existantes pour contrôler 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. Dans Cloud Console, accédez à la page IAM.

    Accéder à la page IAM

  2. Dans la liste des membres, localisez le membre souhaité, puis cliquez sur le bouton .

  3. Dans le panneau Modifier les autorisations, localisez le rôle pour lequel vous souhaitez configurer une condition. Sous Condition, cliquez sur Ajouter une condition.

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

  5. 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. À partir du menu déroulant Heure cliquez sur le bouton 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 condition, 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.

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 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:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@example.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 exploitable, 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 modifié la valeur version en 3. Si vous utilisez une version plus récente de l'outil gcloud, la valeur maximale du règlement est automatiquement définie pour vous :

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@example.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
}

Ensuite, définissez la nouvelle stratégie en exécutant la commande gcloud projects set-iam-policy :

gcloud projects set-iam-policy project-id file-path

La nouvelle stratégie est appliquée et la liaison de rôle de travis@example.com expire au moment spécifié.

REST

Utilisez le modèle lecture-modification-écriture pour autoriser l'accès jusqu'à une heure spécifique.

Tout d'abord, lisez la stratégie Cloud IAM du projet :

La méthode projects.getIamPolicy de l'API Resource Manager permet d'obtenir la stratégie IAM d'un projet.

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

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

Corps JSON de la requête :

{
  "options": {
    "requestedPolicyVersion": policy-version
  }
}

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

Vous devriez recevoir une réponse JSON de ce type :

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

Notez la stratégie version actuelle, qui est 1.

Ensuite, modifiez la stratégie afin qu'elle autorise l'accès jusqu'à une heure spécifique. Veillez à remplacer la valeur du champ version par la valeur 3 :

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.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')"
      },
      "members": [
        "user:travis@example.com"
      ]
    }
  ]
}

Enfin, écrivez la stratégie mise à jour :

La méthode projects.setIamPolicy de l'API Resource Manager définit la stratégie de la requête en tant que nouvelle stratégie IAM du projet.

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

  • project-id : ID de votre projet Google Cloud.

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Corps JSON de la requête :

{
  "policy": {
    "version": 3,
    "etag": "BwWKmjvelug=",
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:project-owner@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "user:travis@example.com"
        ],
        "condition": {
          "title": "Expires_July_1_2020",
          "description": "Expires on July 1, 2020",
          "expression":
            "request.time < timestamp('2020-07-01T00:00:00.000Z')"
        }
      }
    ]
  }
}

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

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


Modifier une liaison de rôle conditionnelle existante

Après avoir créé une liaison de rôle conditionnelle, vous pouvez modifier l'expression de condition à tout moment. 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. Dans Cloud Console, accédez à la page IAM.

    Accéder à la page IAM

  2. Dans la liste des membres, localisez le membre souhaité, puis cliquez sur le bouton .

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

  4. Dans le panneau Modifier la condition, vous pouvez conserver ou mettre à jour le titre et la description de la condition.

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

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 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:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.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 afin de 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) :

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.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
}

Ensuite, définissez la nouvelle stratégie 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 la liaison de rôle de fatima@example.com expire à la nouvelle heure.

REST

Utilisez le modèle lecture-modification-écriture pour modifier la liaison de rôle conditionnelle.

Tout d'abord, lisez la stratégie Cloud IAM du projet :

La méthode projects.getIamPolicy de l'API Resource Manager permet d'obtenir la stratégie IAM d'un projet.

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

  • project-id : ID de votre projet Google Cloud.

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

Corps JSON de la requête :

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

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

Vous devriez recevoir une réponse JSON de ce type :

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.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\")"
      },
      "members": [
        "user:fatima@example.com"
      ]
    }
  ]
}

Ensuite, modifiez la liaison de rôle conditionnelle dans la stratégie. 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) :

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.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')"
      },
      "members": [
        "user:fatima@example.com"
      ]
    }
  ]
}

Enfin, écrivez la stratégie mise à jour :

La méthode projects.setIamPolicy de l'API Resource Manager définit la stratégie de la requête en tant que nouvelle stratégie IAM du projet.

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

  • project-id : ID de votre projet Google Cloud.

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Corps JSON de la requête :

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:project-owner@example.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')"
        },
        "members": [
          "user:fatima@example.com"
        ],
      }
    ]
  }
}

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

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. Dans Cloud Console, accédez à la page IAM.

    Accéder à la page IAM

  2. Dans la liste des membres, localisez le membre souhaité, puis cliquez sur le bouton .

  3. Dans le panneau Modifier les autorisations, recherchez la liaison de rôle souhaitée. Sous Condition, cliquez sur le nom d'une condition existante.

  4. Dans le panneau Modifier la condition, cliquez sur le bouton pour supprimer la condition. Vous êtes alors invité à confirmer la suppression de 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.

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 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:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.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:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:fatima@example.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 ultérieure de l'outil gcloud, la dernière version de la stratégie sera mise à jour pour vous.

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 fatima@example.com. La liaison de rôle n'expire plus.

REST

Utilisez le modèle lecture-modification-écriture pour supprimer la liaison de rôle conditionnelle.

Tout d'abord, lisez la stratégie Cloud IAM du projet :

La méthode projects.getIamPolicy de l'API Resource Manager permet d'obtenir la stratégie IAM d'un projet.

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

  • project-id : ID de votre projet Google Cloud.

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

Corps JSON de la requête :

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

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

Vous devriez recevoir une réponse JSON de ce type :

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.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\")"
      },
      "members": [
        "user:fatima@example.com"
      ]
    }
  ]
}

Ensuite, modifiez la stratégie en supprimant la liaison de rôle conditionnelle :

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

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.

Enfin, écrivez la stratégie mise à jour :

La méthode projects.setIamPolicy de l'API Resource Manager définit la stratégie de la requête en tant que nouvelle stratégie IAM du projet.

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

  • project-id : ID de votre projet Google Cloud.

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Corps JSON de la requête :

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

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

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