Configurer un accès temporaire

Cette rubrique explique comment définir un accès temporaire (arrivant à expiration) aux ressources Google Cloud à l'aide de liaisons de rôles conditionnelles dans vos règles Cloud IAM. En utilisant attributs date/heure, vous pouvez appliquer des restrictions basées sur le temps lors de l'accès à une ressource donnée. Par exemple, vous pouvez accorder un accès temporaire à un projet qui démarre et s'arrête à une heure spécifiée ou à une date planifiée et récurrente.

Avant de commencer

  • Consultez la section Présentation des conditions pour comprendre les principes de base des règles conditionnelles Cloud IAM.
  • Examinez les attributs de date et d'heure qui peuvent être utilisés dans une expression de condition.
  • Les attributs Date/Heure sont actuellement pris en charge par tous les services Google Cloud.

Accorder un accès temporaire

Une règle conditionnelle peut être utilisée pour accorder un accès limité dans le temps à une ressource, garantissant ainsi qu'un utilisateur ne peut plus accéder à la ressource après la date et l'heure d'expiration spécifiées.

Prenons le scénario suivant : la politique de sécurité des informations de l'entreprise ExampleCo insiste sur le fait qu'aucun employé ne doit avoir un accès illimité aux ressources des projets de production. Auparavant, les administrateurs définissaient et supprimaient manuellement les règles Cloud IAM pour répondre aux besoins urgents des ingénieurs. Pour réduire la charge administrative, ExampleCo peut configurer une règle conditionnelle avec une condition de date/heure afin de définir une date de fin pour la règle.

Pour accorder un accès satisfaisant à une ressource de projet, 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. Ensuite, sous Condition, cliquez sur Ajouter la 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 condition. L'outil de création 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'é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 vos règles 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("2020-07-01T00: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 vos règles Cloud IAM.

Commande gcloud

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

Exécutez la commande gcloud projects get-iam-policy pour obtenir la règle Cloud IAM actuelle pour le projet. Dans l'exemple suivant, la version JSON de la règle 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 règle Cloud IAM est téléchargé :

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

Pour configurer la règle 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:user@example.com"
          ],
          "role": "roles/iam.securityReviewer",
          "condition": {
              "title": "Expires_July_1_2020",
              "description": "Expires on July 1, 2020",
              "expression":
                "request.time < timestamp('2020-07-01T00:00:00.000Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Ensuite, définissez la nouvelle règle conditionnelle en exécutant la commande gcloud projects set-iam-policy :

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

La nouvelle règle conditionnelle est appliquée et l'attribution de rôle user@example.com expire à l'heure spécifiée.

API REST

Appelez projects.getIamPolicy() pour obtenir les règles Cloud IAM actuelles pour le projet.

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

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

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

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

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

Pour configurer la règle avec un accès exploitable, ajoutez l'expression de condition en surbrillance suivante (en remplaçant l'horodatage par le vôtre). Assurez-vous que vous avez mis à jour la valeur version vers 3 :

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

Appelez projects.setIamPolicy() pour définir la nouvelle règle Cloud IAM conditionnelle pour le projet, y compris la règle 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.

Restreindre l'accès aux jours et aux heures de la semaine

Une règle conditionnelle peut être utilisée pour n'autoriser l'accès à une ressource que certains jours ou certaines heures de la semaine de manière récurrente.

Prenons le scénario suivant : la société ExampleCo dispose d'un projet d'assurance qualité. Toute l'équipe du contrôle qualité doit avoir des rôles hautement privilégiés pour terminer son travail. ExampleCo doit se conformer aux lois du travail en vigueur dans son pays, qui limitent les horaires de travail du lundi au vendredi, de 9 h à 17 h. ExampleCo peut utiliser des conditions de date et d'heure pour s'assurer que ses employés peuvent uniquement accéder à Google Cloud pendant la semaine de travail et pendant les heures de travail planifiées.

Pour accorder l'accès à une ressource de projet de manière récurrente et uniquement certains jours ou certaines heures de la semaine, 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. Ensuite, sous Condition, cliquez sur Ajouter la 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 de création 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'éditeur de conditions fournit une interface textuelle permettant de saisir manuellement une expression à l'aide de la syntaxe CEL.

    Créateur de conditions :

    1. Cliquez sur Ajouter.
    2. Dans le menu déroulant Type de condition, sélectionnez Heure Planning Jour de la semaine.
    3. Dans la liste déroulante Opérateur, sélectionnez Après ou sur.
    4. À partir du menu déroulant Jour de la semaine, sélectionnez Lundi.
    5. Dans le menu déroulant Choisir un fuseau horaire, sélectionnez le fuseau horaire souhaité dans la liste.
    6. Assurez-vous que l'opérateur Et est sélectionné sur la gauche, puis cliquez de nouveau sur Ajouter.
    7. Dans le menu déroulant Type de condition, sélectionnez Heure Planning Jour de la semaine.
    8. Dans le menu déroulant Opérateur, sélectionnez Avant le ou Le.
    9. Dans le menu déroulant Jour de la semaine, sélectionnez Vendredi.
    10. Dans le menu déroulant Choisir un fuseau horaire, sélectionnez le fuseau horaire souhaité dans la liste.

    À ce stade, vous n'avez configuré l'accès que du lundi au vendredi. Vous allez maintenant configurer l'accès de 9 h à 17 h.

    1. Assurez-vous que l'opérateur Et est sélectionné sur la gauche, puis cliquez de nouveau sur Ajouter.
    2. Dans le menu déroulant Type de condition, sélectionnez Heure Planification Heure du jour.

      1. Dans la liste déroulante Opérateur, sélectionnez Après ou sur.
      2. Dans le menu déroulant Heure du jour, sélectionnez 9 (9 h).
      3. Dans le menu déroulant Choisir un fuseau horaire, sélectionnez le fuseau horaire souhaité dans la liste.
      4. Dans le menu déroulant Type de condition, sélectionnez Heure Planification Heure du jour.
      5. Dans le menu déroulant Opérateur, sélectionnez Avant le ou Le. Notez que pour cette sélection, "Le" sera logiquement évalué sur toute la période comprise entre 17 h et 17 h 59. Pour que l'accès expire à 16 h 59, assurez-vous que l'heure est définie sur 16 au lieu de 17.
      6. À partir du menu déroulant Heure de la journée, sélectionnez 17 (17 h).
      7. Dans le menu déroulant Choisir un fuseau horaire, sélectionnez le fuseau horaire souhaité dans la liste.
      8. Cliquez sur Enregistrer pour appliquer la condition.
      9. Une fois le panneau Modifier la condition fermé, cliquez à nouveau sur Enregistrer dans le panneau Modifier les autorisations pour mettre à jour vos règles Cloud IAM.

      Vous avez désormais configuré l'accès du lundi au vendredi, de 9 h à 17 h.

      Éditeur de conditions :

      1. Cliquez sur l'onglet Éditeur de condition, puis saisissez l'expression suivante (en remplaçant les valeurs de l'espace réservé par les vôtres) :

            request.time.getHours("Europe/Berlin") >= 9 &&
            request.time.getHours("Europe/Berlin") <= 17 &&
            request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
            request.time.getDayOfWeek("Europe/Berlin") <= 5
            
      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 vos règles Cloud IAM.

Commande gcloud

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

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

Commande :

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

Le format JSON de la règle Cloud IAM est téléchargé :

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

Pour configurer la règle avec un accès planifié, 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, assurez-vous d'avoir 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:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Business_hours",
              "description": "Business hours Monday-Friday",
              "expression":
                "request.time.getHours('Europe/Berlin') >= 9 &&
                request.time.getHours('Europe/Berlin') <= 17 &&
                request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
                request.time.getDayOfWeek('Europe/Berlin') <= 5"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Ensuite, définissez la nouvelle règle conditionnelle en exécutant la commande gcloud projects set-iam-policy :

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

La nouvelle règle conditionnelle est appliquée et l'attribution de rôle de user@example.com permet l'accès entre les jours et les heures spécifiés.

API REST

Appelez projects.getIamPolicy() pour obtenir les règles Cloud IAM actuelles pour le projet.

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

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

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

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

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

Pour configurer la règle avec un accès planifié, ajoutez l'expression de condition en surbrillance suivante (en remplaçant l'horodatage par le vôtre). Assurez-vous que vous avez mis à jour la valeur version vers 3 :

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Business_hours",
              "description": "Business hours Monday-Friday",
              "expression":
                "request.time.getHours('Europe/Berlin') >= 9 &&
                request.time.getHours('Europe/Berlin') <= 17 &&
                request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
                request.time.getDayOfWeek('Europe/Berlin') <= 5"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

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

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

La réponse contiendra la règle mise à jour.

Étapes suivantes