Créer des niveaux d'accès basés sur les appareils

Ce document explique comment les administrateurs peuvent créer des niveaux d'accès basés sur les attributs des appareils (niveaux d'accès basés sur les appareils) à l'aide d'Access Context Manager.

Un niveau d'accès est un ensemble d'attributs utilisé pour autoriser l'accès aux ressources en fonction des informations contextuelles concernant la requête. En tant qu'administrateur, vous pouvez créer des niveaux d'accès de base ou personnalisés à l'aide des attributs d'appareil collectés par la validation des points de terminaison.

Avant de commencer

Créer un niveau d'accès

Console

  1. Dans la console Google Cloud , accédez à la page Access Context Manager.

    Accéder à Access Context Manager

  2. Si vous y êtes invité, sélectionnez votre organisation.

  3. Sur la page Access Context Manager, cliquez sur  Créer un niveau d'accès.

  4. Dans le volet Nouveau niveau d'accès, créez un niveau d'accès de base ou personnalisé. Pour obtenir des instructions, développez la section requise.

    Créer un niveau d'accès de base

    1. Dans la zone Titre du niveau d'accès, saisissez un titre de niveau d'accès.

      Ce titre doit contenir au maximum 50 caractères, commencer par une lettre et ne peut contenir que des chiffres, des lettres, des traits de soulignement et des espaces.

    2. Dans la section Créer des conditions en, sélectionnez Mode de base.

      .
    3. Dans la section Conditions, sélectionnez les attributs de l'appareil :
      1. Cliquez sur Règle relative aux appareils.
      2. Sélectionnez les attributs requis.

        Par exemple, si vous souhaitez exiger l'approbation de l'administrateur sur les appareils, sélectionnez Exiger l'approbation de l'administrateur.

    4. Cliquez sur Enregistrer.

    Le niveau d'accès que vous venez de créer s'affiche sur la page Access Context Manager.

    Créer un niveau d'accès personnalisé

    1. Dans la zone Titre du niveau d'accès, saisissez un titre de niveau d'accès.

      Ce titre doit contenir au maximum 50 caractères, commencer par une lettre et ne peut contenir que des chiffres, des lettres, des traits de soulignement et des espaces.

    2. Dans la section Créer des conditions en, sélectionnez Mode avancé.
    3. Dans la section Conditions, saisissez les expressions pour votre niveau d'accès personnalisé. La condition doit correspondre à une valeur booléenne unique.

      Pour trouver les attributs d'appareil disponibles pour votre expression CEL, consultez les attributs d'appareil collectés par la validation des points de terminaison.

      L'expression CEL suivante autorise l'accès uniquement depuis les appareils chiffrés :

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Pour obtenir des exemples et des informations supplémentaires sur la compatibilité avec le langage CEL (Common Expression Language) et les niveaux d'accès personnalisés, consultez la section Spécification de niveaux d'accès personnalisés.

    4. Cliquez sur Enregistrer.

    Le niveau d'accès que vous venez de créer s'affiche sur la page Access Context Manager.

CLI gcloud

Pour créer des niveaux d'accès, utilisez la méthode gcloud access-context-manager levels create.

  1. Créez un fichier .yaml.

    • Pour un niveau d'accès de base, spécifiez les attributs de règles relatives aux appareils pour le niveau d'accès.

      Exemple : Pour n'autoriser l'accès qu'aux utilisateurs disposant d'un espace de stockage chiffré, saisissez les informations suivantes dans le fichier .yaml.

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • Pour un niveau d'accès personnalisé, spécifiez une expression CEL mise en forme sous la forme d'une paire clé-valeur unique : expression: "CEL_EXPRESSION"

      Exemple : Pour limiter l'accès aux utilisateurs disposant d'un espace de stockage chiffré et dont l'appareil est approuvé, saisissez les informations suivantes dans le fichier .yaml.

      expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
      

    Pour obtenir la liste des attributs de niveau d'accès des règles relatives aux appareils et de leur format YAML, consultez la section Attributs de règles relatives aux appareils. Pour obtenir un fichier YAML complet de tous les attributs possibles, consultez cet exemple de fichier YAML de niveau d'accès.

    Pour trouver les attributs d'appareil disponibles pour les spécifications de niveau personnalisé, consultez Attributs des appareils collectés par la validation des points de terminaison.

  2. Créez le niveau d'accès.

    • Pour un niveau d'accès de base, exécutez la commande suivante :

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --basic-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
    • Pour un niveau d'accès personnalisé, exécutez la commande suivante :

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --custom-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME

    Où :

    • ACCESS_LEVEL_NAME est le nom unique du niveau d'accès. Il doit respecter le format suivant : accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.

    • LEVEL_ID est le nom du niveau d'accès. Le nom doit contenir au maximum 50 caractères, commencer par une lettre et ne peut contenir que des chiffres, des lettres et des traits de soulignement.

    • TITLE est le titre de la règle, présenté dans un format lisible. Ce titre doit être propre à la règle.

    • FILE_NAME est le nom du fichier .yaml. Pour un niveau d'accès de base, il contient des attributs de règles relatives aux appareils. Pour un niveau d'accès personnalisé, il contient une expression CEL mise en forme sous la forme d'une paire clé/valeur unique : `expression: "CEL_EXPRESSION".

    • POLICY_NAME est le nom de la règle d'accès de votre organisation.

    Vous obtenez un résultat semblable à celui-ci :

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

Créez un niveau d'accès à l'aide de la méthode accessPolicies.accessLevels.create.

Créer un niveau d'accès de base

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

  • POLICY_ID : ID de la règle d'accès de votre organisation.
  • LEVEL_ID : nom du niveau d'accès. Le nom doit contenir au maximum 50 caractères, commencer par une lettre et ne peut contenir que des chiffres, des lettres et des traits de soulignement.
  • ACCESS_LEVEL_NAME : nom unique du niveau d'accès. Il doit respecter le format suivant : accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE : titre lisible. Ce titre doit être propre à la règle.
  • DESCRIPTION : description du niveau d'accès et de son utilisation.
  • CONDITION : liste des exigences à remplir pour que le niveau d'accès soit accordé.

Méthode HTTP et URL :

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

Corps JSON de la requête :


For basic access levels:

{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,


  "basic": {
  "conditions": [
    {
    CONDITION
    }
   ],
  }
 },
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

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


{
  "name": "operations/accessPolicies/84961948973/accessLevels/deviceEncrypted/create/1666896068847514",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "title": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "basic": {
      "conditions": [
        {
          "devicePolicy": {
            "allowedEncryptionStatuses": [
              "ENCRYPTED"
            ]
          }
        }
      ]
    }
  }
}

Créer un niveau d'accès personnalisé

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

  • POLICY_ID : ID de la règle d'accès de votre organisation.
  • LEVEL_ID : nom du niveau d'accès. Le nom doit contenir au maximum 50 caractères, commencer par une lettre et ne peut contenir que des chiffres, des lettres et des traits de soulignement.
  • ACCESS_LEVEL_NAME : nom unique du niveau d'accès. Il doit respecter le format suivant : accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE : titre lisible. Ce titre doit être propre à la règle.
  • DESCRIPTION : description du niveau d'accès et de son utilisation.
  • CEL_EXPRESSION : expression CEL dont le résultat de l'évaluation correspond à un booléen.

Méthode HTTP et URL :

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

Corps JSON de la requête :


{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,

  "custom": {
   "conditions": [
     {
      "expr": {
     CEL_EXPRESSION
     }
    }
   ]
  }
 },
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

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



{
  "name": "operations/accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName/create/1666936427127701",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName",
    "title": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelTitle",
    "custom": {
      "expr": {
        "expression": "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED"
      }
    }
  }
}

Pour en savoir plus sur la création de niveaux d'accès avec différentes conditions et dépendances de niveau d'accès, consultez Créer un niveau d'accès de base.

Étapes suivantes