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 :
- Attribuez les autorisations requises aux utilisateurs.
- Configurez votre VM.
- Configurez le fichier JSON ou YAML de la règle d'invité.
- Créez la règle d'invité.
Avant de commencer
- Si vous souhaitez utiliser les exemples de ligne de commande de ce guide, procédez comme suit :
- Installez la dernière version de Google Cloud CLI ou appliquez la mise à jour correspondante.
- Définissez une région et une zone par défaut.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
- Consultez les quotas d'OS Config.
Systèmes d'exploitation compatibles
Pour obtenir la liste complète des systèmes d'exploitation et des versions compatibles avec OS Configuration Management (bêta), consultez la page Détails des systèmes d'exploitation.
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 cette version bêta. 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 :
- Renommez la recette logicielle.
- 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 le service OS Configuration Management, 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 :
- La section d'attribution, qui contient la liste des VM cibles.
- La section de configuration requise, qui contient l'état que vous souhaitez gérer sur les VM.
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
- 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.
- 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 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.
Vous pouvez créer une règle d'invité à l'aide de Google Cloud CLI ou de l'API OS Config.
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.
Dans Google Cloud CLI et l'API OS Config, le nom de la règle d'invité est POLICY_ID
.
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é.
API
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
- Obtenez plus d'informations sur OS Configuration Management (bêta).
- Gérez les règles d'invité.