Ce document explique comment les administrateurs peuvent créer des niveaux d'accès basés sur attributs d'appareil (niveaux d'accès basés sur l'appareil) en utilisant 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 des niveaux d'accès personnalisés à l'aide des attributs de l'appareil collectés par la validation des points de terminaison.
Avant de commencer
Pour effectuer la tâche présentée sur cette page, vous devez disposer de l'un des rôles suivants:
- Administrateur Access Context Manager (
roles/accesscontextmanager.policyAdmin
) - Éditeur Access Context Manager (
roles/accesscontextmanager.policyEditor
)
- Administrateur Access Context Manager (
Créer un niveau d'accès
Console
Dans la console Google Cloud, accédez à la page Access Context Manager.
Si vous y êtes invité, sélectionnez votre organisation.
Sur la page Access Context Manager, cliquez sur
Créer un niveau d'accès.Dans le volet Nouveau niveau d'accès, créez un niveau d'accès de base ou un niveau d'accès personnalisé. Pour obtenir des instructions, développez la section requise.
Créer un niveau d'accès de base
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.
Dans la section Créer des conditions dans : sélectionnez Mode de base.
.- Dans la section Conditions, sélectionnez les attributs de l'appareil:
- Cliquez sur Stratégie d'appareil.
Sélectionnez les attributs obligatoires.
Par exemple, si vous souhaitez appliquer l'approbation de l'administrateur aux appareils, sélectionnez Approbation de l'administrateur requise.
- 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é
Dans le champ Titre du niveau d'accès, saisissez un titre pour le 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.
- Dans la section Créer des conditions dans : sélectionnez Mode avancé.
Dans la section Conditions, saisissez les expressions pour votre niveau d'accès personnalisé. La condition doit correspondre à 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 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.
- Cliquez sur Enregistrer.
Le niveau d'accès nouvellement créé 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 level create.
Créez un fichier
.yaml
.Pour un niveau d'accès de base, spécifiez les attributs de règles relatives aux appareils pour d'un niveau d'accès.
Exemple: Pour limiter l'accès aux seuls utilisateurs disposant d'un espace de stockage chiffré sur l'appareil, saisissez ce qui suit dans le fichier
.yaml
.- devicePolicy: allowedEncryptionStatuses - ENCRYPTED
Pour un niveau d'accès personnalisé, spécifiez une expression CEL au format 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 éléments suivants 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 la section Attributs d'appareil collectés par Endpoint Verification.
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 définir 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 une niveau d'accès, elle contient une expression CEL au format 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 ne doit pas dépasser 50 caractères. commencent par une lettre et ne peuvent contenir que des chiffres, des lettres et des traits de soulignement ;
- ACCESS_LEVEL_NAME: nom unique du niveau d'accès. Il doit se présenter sous le format suivant :
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
. - TITLE : titre lisible par l'utilisateur. Ce titre doit être propre à la règle.
- DESCRIPTION : description du niveau d'accès et de son utilisation.
- CONDITION : liste des exigences 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 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 ne doit pas dépasser 50 caractères. commencent par une lettre et ne peuvent contenir que des chiffres, des lettres et des traits de soulignement ;
- ACCESS_LEVEL_NAME: nom unique du niveau d'accès. Il doit se présenter sous le format suivant :
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
. - TITLE : titre lisible par l'utilisateur. 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 à 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.