Définir des stratégies d'accès à l'aide de niveaux d'accès

Cette page explique comment définir des stratégies d'accès contextuelles à l'aide de niveaux d'accès.

Un niveau d'accès est un ensemble d'attributs affectés à des requêtes en fonction de leur origine. En utilisant des informations telles que le type d'appareil, l'adresse IP et l'identité de l'utilisateur, vous pouvez définir le niveau d'accès à accorder. Par exemple, vous pouvez attribuer un niveau High_Trust aux connexions provenant de votre réseau d'entreprise et un niveau Medium_Trust à des appareils externes exécutant des systèmes d'exploitation approuvés.

Une stratégie d'accès est un conteneur pour toutes vos ressources Access Context Manager, telles que les niveaux d'accès et les périmètres de service.

Pour en savoir plus sur les niveaux d'accès et les règles d'accès, consultez la présentation d'Access Context Manager.

Avant de commencer

Lorsque vous définissez un niveau d'accès, les limites suivantes s'appliquent:

  • Vous ne pouvez pas utiliser d'adresse IP comme attribut pour les connexions Docker, ni d'adresses IP privées lorsque vous vous connectez à des clusters privés à l'aide de kubectl ou d'une instance Looker gérée.
  • Looker Studio a toujours un accès illimité aux APIGoogle Cloud , quelles que soient les règles d'Access Context Manager.
  • Les attributs d'appareil ne sont pas disponibles pour les applications clientes OAuth autres que Google.

Définir votre stratégie à l'aide de niveaux d'accès

Console

Créez un niveau d'accès de base:

  1. Dans la console Google Cloud , ouvrez la page Access Context Manager (Gestionnaire de contexte d'accès).

    Accéder à la page Access Context Manager

  2. Si vous y êtes invité, sélectionnez un projet.

  3. Sur la page Access Context Manager, cliquez sur Nouveau.

  4. Dans le volet Nouveau niveau d'accès, procédez comme suit:

    1. Dans le champ 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 Conditions, cliquez sur le bouton Ajouter pour le type d'attribut que vous souhaitez ajouter, puis indiquez les valeurs que vous souhaitez appliquer à cet attribut.

      Pour obtenir la liste complète des attributs que vous pouvez ajouter, consultez la section Attributs de niveau d'accès.

      Par exemple, si vous souhaitez que le niveau d'accès prenne en considération le fait que la requête provient de votre réseau interne, sélectionnez l'attribut Sous-réseaux IP.

      Répétez cette étape pour ajouter plusieurs attributs à une même condition. Lorsqu'une condition comporte plusieurs attributs, la demande d'accès doit respecter tous les attributs.

      Une condition de niveau d'accès peut inclure un attribut de chaque type. Certains attributs incluent des options supplémentaires, par exemple l'attribut Device Policy (Règles relatives aux appareils).

      Les niveaux d'accès acceptent les conditions basées sur l'identité de l'utilisateur. Toutefois, pour ajouter des identités à une condition, vous devez créer ou mettre à jour le niveau d'accès à l'aide de gcloud CLI ou de l'API.

    3. Utilisez l'option When condition is met, return (Lorsque la condition est remplie, afficher) pour indiquer si vous souhaitez que la condition exige qu'une requête respecte tous les attributs spécifiés (TRUE), ou qu'elle respecte tout critère autre que ces attributs (FALSE).

      Par exemple, si vous souhaitez refuser les demandes d'une certaine plage d'adresses IP de votre réseau, spécifiez la plage d'adresses IP à l'aide de l'attribut Sous-réseaux IP, puis définissez la condition sur FALSE.

    4. Si nécessaire, cliquez sur Ajouter une autre condition pour ajouter une condition supplémentaire à votre niveau d'accès, puis répétez les deux étapes précédentes.

      Par exemple, si vous souhaitez refuser l'accès à un sous-ensemble d'adresses IP dans une plage d'adresses IP plus large, créez une nouvelle condition, spécifiez la plage d'adresses IP du sous-ensemble pour l'attribut Sous-réseaux IP, puis définissez la condition pour renvoyer FALSE.

      Répétez cette étape pour ajouter d'autres conditions au même niveau d'accès.

    5. Si vous avez créé plusieurs conditions, utilisez Combine condition with (Combiner la condition avec) pour spécifier si le niveau d'accès doit exiger qu'une requête réponde à au moins l'une des conditions (OU) ou à toutes les conditions (ET).

    6. Cliquez sur Enregistrer.

gcloud

Si vous ne disposez pas d'une règle d'accès pour votre organisation, créez-en une avant de continuer.

Utilisez la commande gcloud access-context-manager levels create pour créer un niveau d'accès:

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY

Remplacez les éléments suivants :

  • LEVEL_NAME: nom unique du niveau d'accès. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et des traits de soulignement. Le nom ne peut pas comporter plus de 50 caractères.

  • OPTIONS: options requises dans le tableau suivant.

    Options
    basic-level-spec

    Un fichier YAML qui spécifie une ou plusieurs conditions pour le niveau d'accès.

    title

    Un titre court pour le niveau d'accès. Le titre du niveau d'accès s'affiche dans la console Google Cloud .

    combine-function

    Une option (facultative) permettant de spécifier comment les conditions doivent être combinées.

    Valeurs valides : AND et OR

    description

    Description longue du niveau d'accès (facultative).

  • POLICY: ID de la règle d'accès de votre organisation. Si vous avez défini une stratégie par défaut, ce paramètre est facultatif.

Vous pouvez éventuellement inclure n'importe quel indicateur gcloud.

Fichier YAML basic-level-spec

Lorsque vous utilisez gcloud CLI pour créer un niveau d'accès, vous devez fournir un fichier YAML pour l'option basic-level-spec. Le fichier YAML définit une ou plusieurs conditions pour le niveau d'accès. Les conditions doivent contenir au moins un attribut. Lorsqu'une condition contient plusieurs attributs, ils sont combinés en tant qu'opération AND (tous doivent être "True") ou en tant qu'opération NAND (aucun ne peut être "True"), selon que l'attribut negate est inclus dans la condition.

Pour obtenir la liste complète des attributs que vous pouvez ajouter à votre fichier YAML, consultez la section Attributs de niveau d'accès.

Pour plus d'informations sur les niveaux d'accès et YAML, reportez-vous à la page Exemple de fichier YAML pour un niveau d'accès.

Exemple de commande

gcloud access-context-manager levels create Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=AND \
    --description='Access level that conforms to corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=1521580097614100

API

Si vous ne disposez pas d'une règle d'accès pour votre organisation, créez-en une avant de continuer.

Pour créer un niveau d'accès, appelez accessLevels.create.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels

POLICY est l'ID de la règle d'accès de votre organisation.

Corps de la requête

Le corps de la requête doit inclure une ressource AccessLevel spécifiant les conditions que vous souhaitez appliquer pour le nouveau niveau d'accès. Chaque Condition comporte un ou plusieurs attributs évalués en tant qu'opération AND (tous doivent être vrais) ou NAND (aucun ne peut être vrai), selon que le champ negate est défini sur true. L'évaluation qui en résulte détermine si la condition est remplie ou non.

Corps de la réponse

Si la requête aboutit, le corps de la réponse à l'appel contient une ressource Operation qui fournit des détails sur l'opération POST.

Configurations de règles courantes

Voici quelques exemples pratiques de mise en œuvre de niveaux d'accès que votre organisation pourrait souhaiter employer. Les exemples supposent que votre organisation dispose déjà d'une règle d'accès.

Limiter l'accès sur un réseau d'entreprise

Cet exemple explique comment créer une condition de niveau d'accès n'autorisant l'accès que depuis une plage d'adresses IP spécifiée (par exemple, les adresses IP internes d'un réseau d'entreprise).

En limitant la plage d'adresses IP autorisées à accéder aux ressources, vous pouvez rendre plus difficile l'exfiltration de données pour un pirate informatique agissant depuis l'intérieur de l'entreprise ou depuis l'extérieur.

Pour cet exemple, supposons que vous souhaitez créer un niveau d'accès permettant à un groupe d'auditeurs internes d'accéder au service Cloud Logging pour un projet nommé données-sensibles. Tous les appareils des auditeurs se voient attribuer des adresses IP sur un sous-réseau spécifique (de 203.0.113.0 à 203.0.113.127). Vous avez l'assurance que seuls les appareils utilisés par les auditeurs pourront accéder à ce sous-réseau.

Si vous souhaitez utiliser une plage d'adresses IP privées (par exemple, 192.168.0.0/16 ou 172.16.0.0/12), consultez Autoriser l'accès à des ressources protégées à partir d'une adresse IP interne pour en savoir plus et obtenir un exemple d'implémentation à l'aide de VPC Service Controls.

Console

  1. Dans la console Google Cloud , ouvrez Access Context Manager.

    Accéder à la page Access Context Manager

  2. Si vous y êtes invité, sélectionnez un projet.

  3. En haut de la page Chrome Enterprise Premium, cliquez sur Nouveau.

  4. Dans la section Conditions du volet Nouveau niveau d'accès, cliquez sur Ajouter un attribut, puis sur Sous-réseaux IP.

  5. Dans le champ IP Subnetworks (Sous-réseaux IP), sélectionnez Public IP (Adresse IP publique) ou Private IP (Adresse IP privée).

    • Si vous sélectionnez Adresse IP publique, saisissez une ou plusieurs plages IPv4 ou IPv6 sous forme de blocs CIDR.

      Dans cet exemple, pour n'autoriser l'accès qu'aux auditeurs, saisissez 203.0.113.0/25 dans le champ Sous-réseaux IP.

    • Si vous sélectionnez Adresse IP privée, cliquez sur Sélectionner des réseaux VPC. Vous pouvez spécifier des réseaux VPC à l'aide de l'une des trois options disponibles dans la liste Options d'importation.

      • Option 1 :

        1. Sélectionnez Rechercher des réseaux VPC dans votre organisation, puis sélectionnez les réseaux VPC.

        2. Cliquez sur Ajouter les réseaux VPC sélectionnés.

        3. Cliquez sur Sélectionner des sous-réseaux IP, puis sélectionnez les sous-réseaux.

        4. Cliquez sur Ajouter des sous-réseaux IP.

      • Option 2 :

        1. Sélectionnez Saisir manuellement l'adresse du réseau VPC, puis saisissez un ou plusieurs réseaux VPC.

        2. Cliquez sur Ajouter un réseau VPC.

        3. Cliquez sur Sélectionner des sous-réseaux IP, puis sélectionnez les sous-réseaux.

        4. Cliquez sur Ajouter des sous-réseaux IP.

      • Option 3 :

        1. Sélectionnez Importer un fichier CSV (écrase les réseaux existants).

          Si vous utilisez un fichier CSV pour ajouter des réseaux et des sous-réseaux VPC à un niveau d'accès, Access Context Manager écrase les réseaux et sous-réseaux VPC précédemment sélectionnés.

        2. Cliquez sur Parcourir, puis importez le fichier CSV. Dans le fichier CSV, vous devez spécifier les réseaux et sous-réseaux VPC au format suivant:

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. Cliquez sur Importer des réseaux.

          À l'aide du fichier CSV, Access Context Manager renseigne les noms de réseau VPC et les informations sur les sous-réseaux dans les champs Adresse réseau VPC et Sous-réseaux IP, respectivement.

      Pour en savoir plus sur le nom du réseau VPC et le format d'adresse IP privée, consultez Utiliser une adresse IP interne dans les niveaux d'accès.

  6. Cliquez sur Enregistrer.

gcloud

  1. Créez un fichier YAML pour un niveau d'accès qui comprend une ou plusieurs plages IPv4 ou IPv6 sous forme de blocs CIDR.

    Dans cet exemple, pour n'autoriser l'accès qu'aux auditeurs, vous devez saisir les éléments suivants dans le fichier YAML:

    - ipSubnetworks:
      - 203.0.113.0/25
    

    Si vous souhaitez utiliser une adresse IP privée, vous devez saisir les informations suivantes dans le fichier YAML:

    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    

    Remplacez VPC_NETWORK_NAME et IP_RANGE par les valeurs décrites dans la section Utiliser une adresse IP interne dans les niveaux d'accès.

  2. Enregistrez le fichier. Dans cet exemple, le fichier est nommé CONDITIONS.yaml.

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    Remplacez les éléments suivants :

    • NAME: nom unique du niveau d'accès. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et des traits de soulignement.

    • TITLE: titre lisible. Ce titre doit être propre à la règle.

    • POLICY: ID de la règle d'accès de votre organisation. Si vous avez défini une stratégie par défaut, ce paramètre est facultatif.

    La sortie obtenue doit ressembler à ceci :

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

API

  1. Concevez un corps de requête pour créer une ressource AccessLevel incluant une ou plusieurs plages IPv4 ou IPv6 spécifiées sous forme de blocs CIDR.

    Dans cet exemple, pour n'autoriser l'accès qu'aux auditeurs, vous devez saisir les éléments suivants dans le corps de la requête :

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "ipSubnetworks": [
             "203.0.113.0/25"
           ]
         }
       ]
     }
    }

    Remplacez les éléments suivants :

    • NAME: nom unique du niveau d'accès. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et des traits de soulignement.

    • TITLE: titre lisible. Ce titre doit être propre à la règle.

    Si vous souhaitez utiliser une adresse IP privée, vous devez saisir les informations suivantes dans le corps de la requête:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "vpcNetworkSources": [
            {
              "vpcSubnetwork": {
                "network": VPC_NETWORK_NAME,
                "vpcIpSubnetworks": [
                  IP_RANGE
                ]
              }
            }
           ]
         }
       ]
     }
    }

    Remplacez VPC_NETWORK_NAME et IP_RANGE par les valeurs décrites dans la section Utiliser une adresse IP interne dans les niveaux d'accès.

  2. Créez le niveau d'accès en appelant la méthode accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY est l'ID de la règle d'accès de votre organisation.

Une fois le niveau d'accès créé, vous devez l'appliquer à l'aide d'une liaison d'accès pour qu'il soit appliqué.

Limiter l'accès en fonction des attributs de l'appareil

Cet exemple explique comment créer un niveau d'accès n'autorisant l'accès qu'aux appareils répondant à un ensemble d'exigences spécifique (par exemple, une certaine version du système d'exploitation).

Les informations sur les appareils sont fournies à Chrome Enterprise Premium à l'aide de la Validation des points de terminaison. Pour déterminer si l'accès doit être accordé ou non, vous pouvez vérifier que :

  • le verrouillage de l'écran est activé ;
  • le chiffrement du stockage est activé ;
  • l'appareil exécute un type et une version de système d'exploitation spécifiés.

Pour cet exemple, nous supposons que votre entreprise n'utilise que des ordinateurs fonctionnant sous ChromeOS ou Windows. Pour ajouter une couche de sécurité, vous souhaitez créer un niveau d'accès permettant d'empêcher toute personne utilisant un autre système d'exploitation d'accéder aux ressources concernées. Pour limiter davantage les risques, vous voulez vous assurer que seules certaines versions de ces systèmes d'exploitation se verront accorder l'accès aux ressources.

Console

  1. Dans la console Google Cloud , ouvrez la page Access Context Manager.

    Accéder à la page Access Context Manager

  2. Si vous y êtes invité, sélectionnez un projet.

  3. En haut de la page Chrome Enterprise Premium, cliquez sur Nouveau.

  4. Dans la section Conditions du volet Nouveau niveau d'accès, cliquez sur Ajouter un attribut, puis sur Device Policy (Règles relatives aux appareils).

  5. Ajoutez les attributs de "règles relatives aux appareils" :

    1. Cliquez sur Ajouter une règle propre à l'OS, puis cliquez sur Règle propre à Chrome OS.

    2. Dans le champ Version minimale, saisissez la version minimale de ChromeOS que vous souhaitez autoriser.

    3. Répétez les étapes 1 et 2 pour Règle propre à Windows.

  6. Cliquez sur Enregistrer.

gcloud

  1. Créez un fichier YAML pour un niveau d'accès incluant une "règle relative aux appareils" qui définit des contraintes en termes de système d'exploitation.

    Dans cet exemple, pour n'autoriser que les appareils dont la version du système d'exploitation (ChromeOS et Windows) correspond au moins à la version minimale requise, vous devez saisir les éléments suivants dans le fichier YAML:

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. Enregistrez le fichier. Dans cet exemple, le fichier est nommé CONDITIONS.yaml.

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    Remplacez les éléments suivants :

    • NAME: nom unique du niveau d'accès. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et des traits de soulignement.

    • TITLE: titre lisible. Ce titre doit être propre à la règle.

    • POLICY: ID de la règle d'accès de votre organisation. Si vous avez défini une stratégie par défaut, ce paramètre est facultatif.

    La sortie obtenue doit ressembler à ceci :

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

API

  1. Concevez un corps de requête pour créer une ressource AccessLevel incluant une "règle relative aux appareils" qui définit des contraintes en termes de système d'exploitation.

    Dans cet exemple, pour n'autoriser que les appareils dont la version du système d'exploitation (ChromeOS et Windows) correspond au moins à la version minimale requise, vous devez saisir les éléments suivants dans le corps de la requête:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "devicePolicy": {
             "osConstraints": [
               {
                 "osType": "DESKTOP_CHROME_OS",
                 "minimumVersion": "11316.165.0"
               },
               {
                 "osType": "DESKTOP_WINDOWS",
                 "minimumVersion": "10.0.1809"
               }
             ]
           {
         }
       ]
     }
    }

    Remplacez les éléments suivants :

    • NAME: nom unique du niveau d'accès. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et des traits de soulignement.

    • TITLE: titre lisible. Ce titre doit être propre à la règle.

  2. Créez le niveau d'accès en appelant la méthode accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY est l'ID de la règle d'accès de votre organisation.

Une fois le niveau d'accès créé, vous devez l'appliquer à l'aide d'une liaison d'accès pour qu'il soit appliqué.

Limiter l'accès aux appareils professionnels approuvés avec des certificats valides

Vous pouvez utiliser l'accès basé sur un certificat (CBA) pour exiger des certificats X.509 validés pour accéder aux ressources Google Cloud. Les identifiants supplémentaires renforcent l'identité de l'appareil et aident à protéger votre organisation contre le vol ou la perte accidentelle d'identifiants, en exigeant que les identifiants utilisateur et le certificat d'appareil d'origine soient tous deux présents avant d'accorder l'accès.

Avant de continuer, assurez-vous que l'extension Chrome Endpoint Verification et l'application d'assistance Endpoint Verification sont déployées sur tous les appareils qui nécessitent un accès aux ressourcesGoogle Cloud . Ils deviennent des appareils vérifiés auxquels vous pouvez accorder l'accès. Pour en savoir plus, consultez la section Déployer Endpoint Verification pour l'utiliser avec l'accès basé sur les certificats.

Pour créer une stratégie nécessitant un accès basé sur des certificats, vous devez disposer d'un niveau d'accès avec une spécification de niveau d'accès personnalisée.

Console

  1. Dans la console Google Cloud , ouvrez la page Access Context Manager (Gestionnaire de contexte d'accès).

    Accéder à la page Access Context Manager

  2. Si vous y êtes invité, sélectionnez un projet.

  3. Cliquez sur Créer un niveau d'accès.

  4. Dans le volet Nouveau niveau d'accès, sélectionnez Mode avancé. Vous devez disposer d'une licence Chrome Enterprise Premium pour utiliser ce mode.

  5. Dans la section Conditions, saisissez l'expression suivante dans la zone Expression CEL.

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
    
  6. Cliquez sur Enregistrer.

gcloud

  1. Créez un fichier YAML pour un niveau d'accès incluant l'application des certificats.

    expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"
    
  2. Enregistrez le fichier. Dans cet exemple, le fichier est nommé CONDITIONS.yaml.

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

Remplacez les éléments suivants :

  • NAME: nom unique du niveau d'accès. Le nom doit commencer par une lettre et ne contenir que des lettres, des chiffres et des traits de soulignement.

  • TITLE: titre lisible. Ce titre doit être propre à la règle.

  • POLICY: ID de la règle d'accès de votre organisation. Si vous avez défini une stratégie par défaut, ce paramètre est facultatif.

La sortie obtenue doit ressembler à ceci :

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

API

  1. Créez un fichier de corps de requête pour un niveau d'accès incluant une "règle relative aux appareils" qui définit des contraintes en termes de système d'exploitation.

    {
     "name": "require_certificate",
     "title": "Certificate-Based Access",
     "description": "An example certificate-based access level.",
     "custom": {
       "expr": {
         "expression": "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE",
         "title": "Require a valid certificate",
         "description": "Permits requests from a device with a valid mTLS certificate."
        }
      }
    }
  2. Créez le niveau d'accès en appelant la méthode accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY est l'ID de la règle d'accès de votre organisation.

Une fois le niveau d'accès créé, vous devez l'appliquer à l'aide d'une liaison d'accès pour qu'il soit appliqué.