Créer des niveaux d'accès basés sur l'appareil

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

Un niveau d'accès est un ensemble d'attributs permettant d'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 Endpoint Verification.

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 New Access Level (Nouveau niveau d'accès), créez un niveau d'accès de base ou personnalisé. Pour obtenir des instructions, développez la section obligatoire.

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

    1. Dans la zone Access level title (Titre du niveau d'accès), saisissez un titre pour le niveau d'accès.

      Le titre doit comporter 50 caractères au maximum, 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 dans, sélectionnez Mode de base.

      .
    3. Dans la section Conditions, sélectionnez les attributs de l'appareil :
      1. Cliquez sur Device Policy.
      2. Sélectionnez les attributs obligatoires.

        Par exemple, si vous souhaitez appliquer 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 nouvellement créé s'affiche sur la page Access Context Manager.

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

    1. Dans la zone Access level title (Titre du niveau d'accès), saisissez un titre pour le niveau d'accès.

      Le titre doit comporter 50 caractères au maximum, 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 dans, sélectionnez Mode avancé.
    3. Dans la section Conditions, saisissez les expressions correspondant à votre niveau d'accès personnalisé. La condition doit renvoyer une seule valeur booléenne.

      Pour trouver les attributs d'appareil disponibles pour votre expression CEL, consultez les attributs d'appareil collectés par Endpoint Verification.

      L'expression CEL suivante n'autorise l'accès qu'à partir des appareils chiffrés:

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Pour obtenir des exemples et plus d'informations sur la compatibilité du langage CEL (Common Expression Language) et sur les niveaux d'accès personnalisés, consultez la spécification de niveau d'accès personnalisé.

    4. Cliquez sur Enregistrer.

    Le niveau d'accès nouvellement créé s'affiche sur la page Access Context Manager.

gcloud CLI

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 limiter l'accès aux seuls utilisateurs disposant d'un espace de stockage chiffré sur l'appareil, saisissez le code suivant dans le fichier .yaml.

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • Pour un niveau d'accès personnalisé, spécifiez une expression CEL au format d'une seule paire clé-valeur: expression: "CEL_EXPRESSION"

      Exemple: Pour limiter l'accès aux seuls utilisateurs disposant d'un espace de stockage chiffré sur l'appareil et dont l'état est approuvé, saisissez le code suivant 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.

    Afin de connaître les attributs d'appareil disponibles pour les spécifications de niveau personnalisé, consultez Attributs d'appareil collectés par Endpoint Verification.

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

    • Pour obtenir 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 comporter 50 caractères au maximum, 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 les attributs de règles relatives aux appareils. Pour un niveau d'accès personnalisé, il contient une expression CEL mise en forme comme une seule paire clé-valeur : "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 la requête, 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 comporter 50 caractères au maximum, 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 être au format suivant: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: titre dans un format lisible. Il doit être propre à la règle.
  • DESCRIPTION: description du niveau d'accès et de son utilisation.
  • CONDITION: liste des conditions requises pour le niveau d'accès à accorder.

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 la requête, 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 comporter 50 caractères au maximum, 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 être au format suivant: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: titre dans un format lisible. Il 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 est une valeur booléenne.

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