Créer une attribution de règles OS


Utilisez des règles de système d'exploitation pour conserver des configurations logicielles cohérentes sur les instances de machine virtuelle (VM) Linux et Windows.

Avant de commencer

  • Consultez les pages Règle d'OS et attribution de règles d'OS.
  • Consultez les quotas d'OS Config.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    Terraform

    Pour utiliser les exemples Terraform de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

    1. Installez Google Cloud CLI.
    2. Pour initialiser gcloudCLI, exécutez la commande suivante :

      gcloud init
    3. Créez des identifiants d'authentification locaux pour votre compte Google :

      gcloud auth application-default login

    Pour en savoir plus, consultez les sections sur Configurer l'authentification pour un environnement de développement local.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Systèmes d'exploitation compatibles

Pour obtenir la liste complète des systèmes d'exploitation et des versions compatibles avec les règles d'OS, consultez la page Détails des systèmes d'exploitation.

Autorisations

Étant donné que vous pouvez utiliser des règles d'OS pour installer et gérer des packages logiciels sur une VM, la création et la gestion des règles de système d'exploitation équivaut à accorder l'accès à l'exécution de code à distance sur une VM.

Lorsque vous configurez des stratégies d'OS, les autorisations IAM sont utilisées pour contrôler l'accès aux ressources et les activités sont enregistrées dans le journal d'audit. Cependant, les utilisateurs peuvent toujours exécuter du code sur la VM, ce qui présente un risque pour la sécurité. Pour limiter ce risque, nous vous recommandons de ne fournir que l'accès requis à chaque utilisateur.

Les propriétaires d'un projet disposent d'un accès complet pour créer et gérer des attributions de règles d'OS. Pour tous les autres utilisateurs, vous devez accorder des autorisations. Vous pouvez attribuer l'un des rôles suivants :

  • Administrateur OSPolicyAssignment (roles/osconfig.osPolicyAssignmentAdmin). Contient les autorisations permettant de créer, supprimer, mettre à jour, obtenir et répertorier les attributions de règles d'OS.
  • Éditeur OSPolicyAssignment (roles/osconfig.osPolicyAssignmentEditor). Contient les autorisations permettant de mettre à jour, d'obtenir et de répertorier les attributions de règles d'OS.
  • Lecteur OSPolicyAssignment (roles/osconfig.osPolicyAssignmentViewer). Contient les autorisations d'accès en lecture seule pour obtenir et répertorier les attributions de règles d'OS.

Exemple de commande permettant de définir des autorisations

Pour accorder à un utilisateur l'accès administrateur pour des attributions de règles d'OS, exécutez la commande suivante :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member user:USER_ID@gmail.com \
        --role roles/osconfig.osPolicyAssignmentAdmin

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • USER_ID : nom d'utilisateur Google Workspace de l'utilisateur

Créer une attribution de règles OS

Procédez comme suit pour créer et déployer une attribution de règles d'OS :

  1. Configurez VM Manager.
  2. Attribuez les autorisations requises aux utilisateurs.
  3. Consultez Règles d'OS et attributions de règles d'OS.
  4. Créez les ressources de règles d'OS.
  5. Pour créer et déployer l'attribution de la règle d'OS, utilisez l'une des méthodes suivantes :

    Console

    Procédez comme suit pour créer et déployer une attribution de règles d'OS :

    1. Sur votre client local, créez ou téléchargez une règle de système d'exploitation. Il doit s'agir d'un fichier JSON ou YAML. Pour en savoir plus sur la création de règles d'OS ou pour afficher des exemples de règles d'OS, consultez la page Règles d'OS.
    2. Dans la console Google Cloud, accédez à la page Règles d'OS.

      Accéder aux règles d'OS

    3. Cliquez sur Créer une attribution de règles d'OS.

    4. Dans la section ID d'attribution, indiquez un nom pour l'attribution de règles d'OS. Consultez la convention d'attribution de noms des ressources.

    5. Dans la section Règles d'OS, importez le fichier de règle d'OS.

    6. Dans la section Instances de VM cibles, spécifiez les VM cibles.

      • Sélectionnez la zone contenant les VM auxquelles vous souhaitez appliquer la règle.
      • Sélectionnez les familles de systèmes d'exploitation.
      • Facultatif : Vous pouvez filtrer davantage les VM en spécifiant des étiquettes d'inclusion et d'exclusion.

      Par exemple, vous pouvez sélectionner toutes les VM Ubuntu dans votre environnement de test et exclure celles qui exécutent Google Kubernetes Engine, en spécifiant les éléments suivants :

      • Famille d'OS : ubuntu
      • Inclure : env:test, env:staging
      • Exclure : goog-gke-node

      Sélectionnez des VM cibles.

    7. Spécifiez un plan de déploiement.

      • Spécifiez la taille de la vague (également appelé budget d'interruption). Exemple : 10%
      • Indiquez le temps d'attente. Par exemple, 15 minutes.

        Configurer le déploiement

    8. Cliquez sur Lancer le déploiement.

    gcloud

    Procédez comme suit pour créer et déployer une attribution de règles d'OS dans une zone :

    1. Créez une ressource d'attribution de règles d'OS au format JSON ou YAML. Ce fichier définit les règles d'OS que vous souhaitez appliquer à vos VM, les VM cibles auxquelles vous souhaitez appliquer les règles et le taux de déploiement auquel appliquer les règles d'OS. Pour en savoir plus sur ce fichier et obtenir des exemples d'attributions, consultez la page Attribution de règles d'OS.

    2. Utilisez la commande os-config os-policy-assignments create pour créer et déployer l'attribution de règles d'OS dans un emplacement spécifié.

      gcloud compute os-config os-policy-assignments create OS_POLICY_ASSIGNMENT_ID \
         --location=ZONE \
         --file=OS_POLICY_ASSIGNMENT_FILE \
         --async
      

      Remplacez les éléments suivants :

      • OS_POLICY_ASSIGNMENT_ID : nom de l'attribution de la règle de système d'exploitation. Consultez la convention d'attribution de noms des ressources.
      • ZONE : zone dans laquelle créer l'attribution de la règle du système d'exploitation
      • OS_POLICY_ASSIGNMENT_FILE : chemin absolu du fichier d'attribution de règles d'OS que vous avez créé à l'étape précédente.

      Exemple

      gcloud compute os-config os-policy-assignments create my-os-policy-assignment \
          --location=asia-south1-a \
          --file=/downloads/assignment-config.yaml \
          --async
      

      Le résultat ressemble à ce qui suit :

      Create request issued for: [my-os-policy-assignment]
      Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
      
    3. Notez le nom complet de la ressource pour l'opération. Dans l'exemple précédent, le nom de ressource complet est le suivant :

      projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
      

      Vous pouvez utiliser ce nom de ressource complet pour obtenir des détails sur un déploiement ou pour annuler un déploiement. Voir Déploiements.

    Terraform

    Pour créer une attribution de règle d'OS, utilisez la ressource google_os_config_os_policy_assignment.

    L'exemple suivant vérifie si le serveur Web Apache est exécuté sur des VM CentOS.

    resource "google_os_config_os_policy_assignment" "my_os_policy_assignment" {
    
      name        = "my-os-policy-assignment"
      location    = "us-west1-a"
      description = "An OS policy assignment that verifies if the Apache web server is running on CentOS VMs."
    
      instance_filter {
        # filter to select VMs
        all = false
    
        exclusion_labels {
          labels = {
            label-one = "goog-gke-node"
          }
        }
    
        inclusion_labels {
          labels = {
            env = "test",
          }
        }
    
        inventories {
          os_short_name = "centos"
          os_version    = "7*"
        }
      }
    
      os_policies {
        #list of OS policies to be applied to VMs
        id   = "apache-always-up-policy"
        mode = "ENFORCEMENT"
    
        resource_groups { #list of resource groups for the policy
          resources {
            id = "ensure-apache-is-up"
    
            exec {
              validate {
                interpreter = "SHELL"
                script      = "if systemctl is-active --quiet httpd; then exit 100; else exit 101; fi"
              }
    
              enforce {
                interpreter = "SHELL"
                script      = "systemctl start httpd && exit 100"
              }
            }
          }
    
          inventory_filters {
            os_short_name = "centos"
            os_version    = "7*"
          }
        }
    
        allow_no_resource_group_match = false #OS policy compliance status
        description                   = "An OS policy that verifies if the Apache web server is running on Linux VMs."
      }
    
      rollout {
        #define rollout parameters
        disruption_budget {
          fixed = 1
        }
        min_wait_duration = "3.5s"
      }
    }

    Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

    REST

    Pour créer une attribution de règle d'OS sur votre client local, procédez comme suit :

    1. Créez une attribution de règles d'OS. Il doit s'agir d'un fichier JSON. Pour en savoir plus sur la création d'attributions de règles d'OS ou pour afficher des exemples d'attributions de règles d'OS, consultez la section Attribution de règles d'OS.

      Si vous souhaitez utiliser l'exemple d'attribution de règle d'OS YAML, vous devez la convertir au format JSON.

    2. Dans l'API, envoyez une requête POST à la méthode projects.locations.osPolicyAssignments.create.

      Dans le corps de la requête, collez les spécifications d'attribution des règles de système d'exploitation de l'étape précédente.

      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
       JSON_OS_POLICY
      }
      

      Remplacez les éléments suivants :

      • PROJECT_ID : ID de votre projet.
      • OS_POLICY_ASSIGNMENT_ID : nom de l'attribution de règle d'OS
      • JSON_OS_POLICY : spécifications d'attribution de règles du système d'exploitation créées à l'étape précédente. Il doit être au format JSON. Pour plus d'informations sur les paramètres et le format, consultez la page Resource: OSPolicyAssignment.
      • ZONE : zone dans laquelle créer l'attribution de la règle d'OS

      Exemple

      Par exemple, pour créer une attribution de règles d'OS pour Google Cloud Observability qui installe les agents de surveillance et de journalisation sur les VM sélectionnées à l'aide de l'exemple d'attribution de règles OS, procédez comme suit :

      1. Convertir l'exemple au format JSON
      2. Effectuez la requête suivante :
      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
        "osPolicies": [
          {
            "id": "setup-repo-and-install-package-policy",
            "mode": "ENFORCEMENT",
            "resourceGroups": [
              {
                "resources": [
                  {
                    "id": "setup-repo",
                    "repository": {
                      "yum": {
                        "id": "google-cloud-monitoring",
                        "displayName": "Google Cloud Monitoring Agent Repository",
                        "baseUrl": "https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el8-x86_64-all",
                        "gpgKeys": [
                          "https://packages.cloud.google.com/yum/doc/yum-key.gpg",
                          "https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg"
                        ]
                      }
                    }
                  },
                  {
                    "id": "install-pkg",
                    "pkg": {
                      "desiredState": "INSTALLED",
                      "yum": {
                        "name": "stackdriver-agent"
                      }
                    }
                  }
                ]
              }
            ]
          }
        ],
        "instanceFilter": {
          "inclusionLabels": [
            {
              "labels": {
                "used_for": "testing"
              }
            }
          ]
        },
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": {
            "seconds": 300
          }
        }
      }
      

Déploiements

Les attributions de stratégies d'OS sont déployées selon un taux de déploiement. Cela signifie que les attributions qui ciblent un ensemble de VM peuvent être déployées progressivement et ne sont pas appliquées immédiatement à toutes les VM. Les modifications sont déployées progressivement afin de vous permettre d'intervenir et d'annuler un déploiement si de nouvelles modifications provoquent des régressions.

Lorsque les appels de méthode à une API peuvent prendre beaucoup de temps, l'API renvoie une opération de longue durée. Pour en savoir plus sur les opérations de longue durée, consultez la page Opérations de longue durée.

L'API OS Config crée une opération de longue durée chaque fois que vous créez, mettez à jour ou supprimez une attribution de règles de système d'exploitation. Chaque opération de longue durée renvoie une ressource d'opération. Cette ressource d'opération est semblable à ceci :

Create request issued for: [my-os-policy-assignment]
Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.

Chaque opération de création, de mise à jour ou de suppression génère également une nouvelle révision d'attribution de règles d'OS. Pour afficher les révisions d'une attribution de règle de système d'exploitation, consultez la section Répertorier les révisions d'attribution de stratégies d'OS.

Vous pouvez utiliser Google Cloud CLI pour obtenir les détails d'un déploiement ou pour l'annuler.

Obtenir les détails d'un déploiement

Pour obtenir des détails sur un déploiement, utilisez la commande os-config os-policy-assignments operations describe.

gcloud compute os-config os-policy-assignments operations describe FULLY_QUALIFIED_OPERATION_NAME

Remplacez FULLY_QUALIFIED_OPERATION_NAME par le nom complet de la ressource pour l'opération renvoyée par la création, la mise à jour ou la suppression.

Exemple

gcloud compute os-config os-policy-assignments operations describe \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Exemple de résultat :

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignmentOperationMetadata
  apiMethod: CREATE
  osPolicyAssignment: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment@cfb78790-41d8-40d1-b8a1-1eaf6011b909
  rolloutStartTime: '2021-04-15T00:53:52.963569Z'
  rolloutState: SUCCEEDED
  rolloutUpdateTime: '2021-04-15T00:53:53.094041Z'
name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/cfb78790-41d8-40d1-b8a1-1eaf6011b909
response:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignment
  baseline: true
  description: My test policy
  instanceFilter:
    inclusionLabels:
    - labels:
        label-key-not-targeting-instances: label-value-not-targeting-instances
  name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment
  osPolicies:
  - id: q-test-policy
    mode: ENFORCEMENT
    resourceGroups:
    - osFilter:
        osShortName: centos
        osVersion: '7'
      resources:
      - id: add-repo
        repository:
          yum:
            baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el7-x86_64-all

Annuler un déploiement

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'OS.

    Accéder aux règles d'OS

  2. Cliquez sur l'onglet Attribution de règle d'OS.

  3. Pour l'attribution de règle d'OS pour laquelle vous souhaitez annuler le déploiement, cliquez sur Action (> Annuler le déploiement.

  4. Cliquez sur Annuler le déploiement.

gcloud

Pour annuler un déploiement, utilisez la commande gcloud compute os-config os-policy-assignments operations cancel.

gcloud compute os-config os-policy-assignments operations cancel FULLY_QUALIFIED_OPERATION_NAME

Remplacez FULLY_QUALIFIED_OPERATION_NAME par le nom complet de la ressource pour l'opération renvoyée par la création, la mise à jour ou la suppression.

Exemple

gcloud compute os-config os-policy-assignments operations cancel \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Si la commande aboutit, aucun résultat n'est renvoyé.

Étape suivante