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
- 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 :
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 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 :
- Renommez la recette logicielle.
- Supprimez et recréez la stratégie d'invités à l'aide de la recette logicielle renommée.
- 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é. PROJECT_ID
: ID du projet.USER_ID
: nom d'utilisateur Google Workspace de l'utilisateur- 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.
- 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.
- 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.
- 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.
- Système d'exploitation : Red Hat Enterprise Linux 7
- Libellé :
color=red
- 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.
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é.PROJECT_ID
: ID de votre projet.POLICY_ID
: nom de votre règle d'invité.- Obtenez plus d'informations sur les stratégies relatives aux invités pour les systèmes d'exploitation (ancien).
- Gérez les règles d'invité.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Limites
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 :
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 :
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 :
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 :
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
etmy-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-
oudev-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 supprimezbad-package-1
etbad-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
etus-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 :
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 :
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 :
REST
Dans l'API, envoyez une requête
POST
à la méthodeprojects.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 :
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
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-