Créer une règle d'invité (ancienne règle)


Utilisez des règles d'invité pour maintenir des configurations logicielles cohérentes sur les instances de machines virtuelles Linux et Windows.

Pour configurer une règle d'invité sur un ensemble de VM, procédez comme suit :

  1. Attribuez les autorisations requises aux utilisateurs.
  2. Configurez votre VM.
  3. Configurez le fichier JSON ou YAML de la règle d'invité.
  4. Créez la règle d'invité.

Avant de commencer

  • 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 :

    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.

    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

Limites

  • Pour les VM ciblées, la règle d'invité est mise à jour chaque fois que l'agent se connecte au service. Cette vérification a lieu toutes les 10 à 15 minutes.
  • Aucun service de tableau de bord de conformité, de notification ni d'alerte n'est disponible avec ces anciennes règles d'invité de système d'exploitation. Les VM qui n'exécutent pas l'agent OS Config ne signalent pas d'échec. Pour de meilleurs résultats, utilisez cette fonctionnalité avec le service OS Inventory Management ou tout autre outil de surveillance de la conformité.
  • Une recette logicielle, avec un nom spécifique, ne s'exécute qu'une seule fois lorsque vous créez une règle d'invités. Pour réexécuter une recette logicielle, vous devez procéder comme suit :

    1. Renommez la recette logicielle.
    2. Supprimez et recréez la stratégie d'invités à l'aide de la recette logicielle renommée.

Autorisations

Comme vous pouvez utiliser des règles d'invité pour installer et gérer des packages logiciels sur une VM, la création et la gestion des règles d'invité reviennent à accorder l'accès à l'exécution de code à distance sur une VM.

Lorsque vous configurez des stratégies d'invités, les autorisations IAM permettent de contrôler l'accès à la ressource de stratégie. Les activités sont consigné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 éviter ce problème, 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 règles. Pour tous les autres utilisateurs, vous devez accorder des autorisations. Vous pouvez attribuer l'un des rôles suivants :

  • Administrateur GuestPolicy (roles/osconfig.guestPolicyAdmin) : contient les autorisations permettant de créer, supprimer, mettre à jour, obtenir et répertorier les règles d'invité.
  • Éditeur GuestPolicy (roles/osconfig.guestPolicyEditor) : contient les autorisations permettant d'obtenir, de mettre à jour et de répertorier les règles d'invité.
  • Lecteur GuestPolicy (roles/osconfig.guestPolicyViewer) : contient des autorisations d'accès en lecture seule pour obtenir et répertorier les règles d'invité.

Par exemple, pour accorder à un administrateur des utilisateurs un accès aux règles d'invité, exécutez la commande suivante :

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

Remplacez l'élément suivant :

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

Configurez votre VM.

Pour utiliser des règles d'invité, vous devez configurer VM Manager.

Configurer un fichier YAML ou JSON de règle d'invité

Vous devez fournir des spécifications de règle d'invité à l'aide d'un fichier JSON ou YAML. Pour afficher des exemples de configurations, consultez les exemples de fichiers YAML de règle d'invité.

Le fichier YAML ou JSON contient les deux sections principales suivantes :

Attributions

Vous pouvez attribuer des règles d'invité à toutes les VM de votre projet, ou utiliser la clé assignment dans votre fichier JSON ou YAML pour cibler un groupe spécifique de VM.

Par exemple, vous pouvez cibler un groupe de VM en utilisant l'une des caractéristiques suivantes :

  • Nom de l'instance. Voir l'exemple 1.
  • Préfixe du nom de l'instance. Voir l'exemple 2.
  • Libellé de l'instance. Voir l'exemple 3.
  • Zone. Voir l'exemple 4.
  • Informations sur le système d'exploitation, contenant le nom, la version et l'architecture du système d'exploitation. Voir l'exemple 5. La commande os-inventer describe peut être utilisée pour déterminer le nom et la version du système d'exploitation, ainsi que l'architecture des VM.

Pour attribuer une règle d'invité à l'aide des informations du système d'exploitation, l'agent de configuration du système d'exploitation doit envoyer les informations du système d'exploitation au point de terminaison des attributs d'invité de la VM. Par défaut, les informations sur le système d'exploitation des VM ne sont pas disponibles pour garantir la confidentialité. Pour regrouper les VM par système d'exploitation, vous devez vous assurer que les attributs d'invité et les services OS Inventory Management sont activés. Pour activer ces services, consultez la section Configurer votre VM.

Les configurations des règles d'invité sont automatiquement appliquées à toutes les nouvelles VM correspondant à l'attribution.

Configuration requise

La configuration requise peut être effectuée à l'aide de l'une ou de plusieurs des tâches suivantes :

  • Installer, supprimer et mettre à jour automatiquement des packages logiciels Voir l'exemple 1.
  • Configurer des dépôts de packages logiciels Voir l'exemple 1 ou l'exemple 3.
  • Installer des logiciels à l'aide de recettes logicielles.

Exemples de fichiers YAML de règle d'invité

Exemple 1

Installez le package my-package qui doit être tenu à jour sur les instances de VM suivantes : my-instance-1 et my-instance-2.

assignment:
  instances:
  - zones/us-east1-c/instances/my-instance-1
  - zones/us-east1-c/instances/my-instance-2
packages:
- name: "my-package"
  desiredState: UPDATED

Pour en savoir plus sur l'attribution de règles d'invité pour les packages, consultez la documentation de référence sur la représentation JSON du package.

Exemple 2

Installez l'agent Cloud Monitoring à l'aide du gestionnaire de packages yum sur toutes les instances de VM qui portent l'un des préfixes de nom d'instance suivants : test-instance- ou dev-instance-.

assignment:
  instanceNamePrefixes:
  - "test-instance-"
  - "dev-instance-"
packages:
- name: "stackdriver-agent"
  desiredState: INSTALLED
  manager: YUM
packageRepositories:
- yum:
    id: google-cloud-monitoring
    displayName: "Google Cloud Monitoring Agent Repository"
    baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el7-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

Pour en savoir plus sur l'attribution de règles d'invité pour les dépôts de package, consultez la documentation de référence sur la représentation JSON de PackageRepository.

Exemple 3

Installez my-package et supprimez bad-package-1 et bad-package-2 des instances avec un ensemble spécifique de libellés. Ajoutez également des dépôts pour les gestionnaires de packages apt et yum.

assignment:
  # Assign to VM instances where `(label.color=red AND label.env=test) OR (label.color=blue AND label.env=test)`
  groupLabels:
  - labels:
      color: red
      env: test
  - labels:
      color: blue
      env: test
packages:
- name: "my-package"
  desiredState: INSTALLED
- name: "bad-package-1"
  desiredState: REMOVED
- name: "bad-package-2"
  desiredState: REMOVED
  manager: APT  # Only apply this to systems with APT.
packageRepositories:
- apt:  # Only apply this to systems with APT.
    uri: "https://packages.cloud.google.com/apt"
    archiveType: DEB
    distribution: cloud-sdk-stretch
    components:
    - main
- yum:  # Only apply this to systems with YUM.
    id: google-cloud-sdk
    displayName: "Google Cloud SDK"
    baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
    gpgKeys:
    - https://packages.cloud.google.com/yum/doc/yum-key.gpg
    - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

Exemple 4

Installez le logiciel d'un fichier MSI hébergé sur Cloud Storage sur toutes les instances de us-east1-b et us-east1-d.

assignment:
  zones:
  - us-east1-b
  - us-east1-d
recipes:
- name: "swr-msi-gcs"
  desiredState: INSTALLED
  artifacts:
  - id: "the-msi"
    gcs:
      bucket: "my-bucket"
      object: "executable.msi"  # full URI gs://my-bucket/executable.msi#nnnnn
      generation: 1546030865175603
  installSteps:
  - msiInstallation:
      artifactId: "the-msi"

Pour en savoir plus sur la configuration des règles de recettes, consultez la documentation de référence sur la représentation JSON de SoftwareRecipe.

Exemple 5

Installez un logiciel en exécutant un script intégré sur toutes les instances de VM qui répondent aux exigences suivantes :

  • Système d'exploitation : Red Hat Enterprise Linux 7
  • Libellé : color=red
assignment:
  osTypes:
  - osShortName: rhel
    osVersion: "7"
  groupLabels:
  - labels:
      color: red
recipes:
- name: recipe-runscript
  desiredState: INSTALLED
  installSteps:
  - scriptRun:
      script: |-
        #!/bin/bash
        touch /TOUCH_FILE

Pour en savoir plus sur la configuration des règles de recettes, consultez la documentation de référence sur la représentation JSON de SoftwareRecipe.

Exemple 6

Installez l'application sur toutes les instances Windows à l'aide d'un programme d'installation exécutable dont le préfixe de nom d'instance est le suivant : test-instance-.

assignment:
  instanceNamePrefixes:
  - "test-instance-"
  osTypes:
  - osShortName: WINDOWS
recipes:
- name: windows-install-exe-example
  desiredState: INSTALLED
  artifacts:
  - id: installer
    gcs:
      bucket: my-bucket
      generation: '1597013478912389'
      object: MyApp.Installer.x64.exe
  installSteps:
  - fileExec:
      artifactId: installer
      args:
      - /S # Installation must be silent

Pour en savoir plus sur la configuration des règles de recettes, consultez la documentation de référence sur la représentation JSON de SoftwareRecipe.

Créez une stratégie d'invités.

Lorsque vous créez une règle d'invité, son nom doit répondre aux exigences de dénomination suivantes :

  • Le nom ne doit contenir que des lettres minuscules, des chiffres et des traits d'union.
  • Le nom doit commencer par une lettre.
  • Le nom doit se terminer par un chiffre ou une lettre.
  • Le nom doit comporter entre 1 et 63 caractères.
  • Chaque ID de règle doit être unique dans un projet.

Utilisez l'une des méthodes suivantes pour créer une stratégie relative aux invités.

gcloud

Utilisez la commande os-config guest-policies create pour créer une règle d'invité.

gcloud beta compute os-config guest-policies create POLICY_ID \
    --file=FILE

Remplacez l'élément suivant :

  • POLICY_ID : nom de la règle d'invité que vous souhaitez créer.
  • FILE : fichier JSON ou YAML contenant les spécifications de la règle d'invité. Pour afficher des exemples de configurations, consultez les exemples de fichiers YAML de règle d'invité.

REST

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

POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID

{
 For more information, see Guest policy JSON
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • POLICY_ID : nom de votre règle d'invité.

Pour afficher des exemples de configurations, consultez les exemples de fichiers YAML de règle d'invité.

Dépannage

Pour dépanner une stratégie d'invités, consultez la section Déboguer une stratégie d'invités.

Étape suivante