Sie können Gastrichtlinien verwenden, um konsistente Softwarekonfigurationen über virtuelle Linux- und Windows-Maschineninstanzen (VMs) hinweg zu erhalten.
So richten Sie eine Gastrichtlinie für eine Gruppe von VMs ein:
- Weisen Sie Nutzern die erforderlichen Berechtigungen zu.
- Richten Sie Ihre VM ein.
- Konfigurieren Sie die JSON- oder YAML-Datei für die Gastrichtlinie.
- Erstellen Sie die Gastrichtlinie.
Hinweise
- Prüfen Sie die OS Config-Kontingente.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.
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.
- Bei Ziel-VMs wird die Gastrichtlinie jedes Mal aktualisiert, wenn sich der Agent beim Dienst anmeldet. Diese Prüfung erfolgt alle 10 bis 15 Minuten.
- Für diese Legacy-Gastrichtlinien des Betriebssystems sind keine Compliance-Dashboards, Benachrichtigungen oder Benachrichtigungsdienste verfügbar. VMs, die den OS Config-Agent nicht ausführen, melden keinen Fehler. Die besten Ergebnisse erzielen Sie, wenn Sie dieses Feature mit OS Inventory Management oder einem anderen Compliance-Monitoringtool verwenden.
Ein Softwareschema mit einem bestimmten Namen wird nur einmal ausgeführt, wenn Sie eine Gastrichtlinie erstellen. So führen Sie ein Softwareschema noch einmal aus:
- Benennen Sie das Softwareschema um.
- Löschen und erstellen Sie die Gastrichtlinie mit dem umbenannten Softwareschema neu.
- GuestPolicy-Administrator (
roles/osconfig.guestPolicyAdmin
): enthält Berechtigungen zum Erstellen, Löschen, Aktualisieren, Abrufen und Auflisten von Gastrichtlinien. - GuestPolicy-Bearbeiter (
roles/osconfig.guestPolicyEditor
): enthält Berechtigungen zum Abrufen, Aktualisieren und Auflisten von Gastrichtlinien. - GuestPolicy-Betrachter (
roles/osconfig.guestPolicyViewer
): Enthält Berechtigungen für Lesezugriff, um Gastrichtlinien abzurufen und aufzulisten. PROJECT_ID
: die Projekt-ID.USER_ID
: der Google Workspace-Nutzername des Nutzers.- Der Abschnitt zu Zuweisungen enthält die Liste der Ziel-VMs.
- Den erforderlichen Konfigurationsabschnitt, der den Zustand enthält, den Sie auf den VMs verwalten möchten.
- Instanzname. Siehe Beispiel 1.
- Präfix des Instanznamens. Siehe Beispiel 2.
- Instanzlabel. Siehe Beispiel 3.
- Zone. Siehe Beispiel 4.
- Informationen zum Betriebssystem, die den Namen, die Version und die Architektur des Betriebssystems enthalten. Siehe Beispiel 5. Mit dem Befehl os-inventory describe können Sie den Betriebssystemnamen, die Version und die Architektur von VMs ermitteln.
- Softwarepakete installieren, entfernen und automatisch aktualisieren Siehe Beispiel 1.
- Softwarepaket-Repositories konfigurieren Siehe Beispiel 1 oder Beispiel 3.
- Installieren Sie Software mithilfe von Softwareschemas.
- Informationen zu Linux-VMs finden Sie in Beispiel 5.
- Informationen zu Windows-VMs finden Sie in Beispiel 4 und Beispiel 6.
- Weitere Informationen zum Zuweisen von Gastrichtlinien für Pakete finden Sie im Referenzdokument zur Package-JSON-Darstellung.
- Weitere Informationen zum Zuweisen von Gastrichtlinien für Paket-Repositories finden Sie im Referenzdokument zur PackageRepository-JSON-Darstellung.
- Betriebssystem: Red Hat Enterprise Linux 7
- Label:
color=red
- Er darf nur Kleinbuchstaben, Ziffern und Bindestriche umfassen.
- Er muss mit einem Buchstaben beginnen.
- Ein Name muss mit einer Ziffer oder einem Buchstaben enden.
- Er muss 1 bis 63 Zeichen lang sein.
- Jede Richtlinien-ID muss innerhalb eines Projekts eindeutig sein.
POLICY_ID
: der Name der Gastrichtlinie, die Sie erstellen möchten.FILE
: die JSON- oder YAML-Datei, die die Gastrichtlinienspezifikationen enthält. Beispielkonfigurationen finden Sie unter Beispiele für YAML-Dateien für Gastrichtlinien.PROJECT_ID
: Ihre Projekt-ID.POLICY_ID
: der Name der Gastrichtlinie.- Weitere Informationen zu Betriebssystem-Gastrichtlinien (Legacy).
- Gastrichtlinien verwalten
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Beschränkungen
Berechtigungen
Da Sie Gastrichtlinien zur Installation und Verwaltung von Softwarepaketen auf einer VM verwenden können, entspricht die Erstellung und Verwaltung von Gastrichtlinien dem Gewähren des Zugriffs auf die Remote-Codeausführung auf einer VM.
Wenn Sie Gastrichtlinien einrichten, werden IAM-Berechtigungen zur Steuerung des Zugriffs auf die Richtlinienressource verwendet, und Aktivitäten werden protokolliert. Nutzer können jedoch weiterhin Code auf der VM ausführen, was ein potenzielles Sicherheitsrisiko darstellt. Deshalb sollten Sie jedem Nutzer nur den erforderlichen Zugriff gewähren.
Die Inhaber eines Projekts haben uneingeschränkten Zugriff zum Erstellen und Verwalten von Richtlinien. Für alle anderen Nutzer müssen Sie Berechtigungen erteilen. Dafür können Sie eine dieser detaillierten Rollen zuweisen:
Führen Sie beispielsweise den folgenden Befehl aus, um einem Nutzer Administratorzugriff auf Gastrichtlinien zu gewähren:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:USER_ID@gmail.com \ --role roles/osconfig.guestPolicyAdmin
Dabei gilt:
VM einrichten
Damit Sie Gastrichtlinien verwenden können, müssen Sie VM Manager einrichten.
YAML- oder JSON-Datei für Gastrichtlinien konfigurieren
Geben Sie Spezifikationen für Gastrichtlinien an, indem Sie entweder eine JSON- oder eine YAML-Datei verwenden. Beispielkonfigurationen finden Sie unter Beispiele für YAML-Dateien für Gastrichtlinien.
Die YAML- oder JSON-Datei enthält die folgenden beiden Hauptabschnitte:
Tool „Aufgaben“
Sie können allen VMs in Ihrem Projekt Gastrichtlinien zuweisen oder Sie können den Schlüssel
assignment
in Ihrer JSON- oder YAML-Datei verwenden, um auf eine bestimmte Gruppe von VMs abzuzielen.Sie können dafür beispielsweise eine der folgenden Eigenschaften verwenden:
Der OS Configuration-Agent muss Betriebssysteminformationen an den Gastattribut-Endpunkt für die VM senden, um eine Gastrichtlinie mithilfe von Betriebssysteminformationen zuzuweisen. Aus Datenschutzgründen sind standardmäßig keine Betriebssysteminformationen für VMs verfügbar. Aktivieren Sie die Gastattribute und OS Inventory Management-Dienste, um VMs nach Betriebssysteminformationen zu gruppieren. Informationen zum Aktivieren dieser Dienste finden Sie unter VM einrichten.
Konfigurationen von Gastrichtlinien werden automatisch auf alle neuen VMs angewendet, die der Zuweisung entsprechen.
Erforderliche Konfiguration
Die erforderliche Konfiguration kann mithilfe einer der folgenden Aufgaben oder einer Kombination dieser Aufgaben erreicht werden:
Beispiele für YAML-Dateien für Gastrichtlinien
Beispiel 1
Installieren Sie das Paket
my-package
, das auf den folgenden VM-Instanzen auf dem neuesten Stand gehalten werden muss:my-instance-1
undmy-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
Weitere Informationen zum Zuweisen von Gastrichtlinien für Pakete finden Sie im Referenzdokument zur Package-JSON-Darstellung.
Beispiel 2
Installieren Sie den Cloud Monitoring-Agent mithilfe des yum-Paketmanagers auf allen VM-Instanzen, die eines der folgenden Instanznamenpräfixe haben:
test-instance-
oderdev-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
Weitere Informationen zum Zuweisen von Gastrichtlinien für Paket-Repositories finden Sie im Referenzdokument zur PackageRepository-JSON-Darstellung.
Beispiel 3
Installieren Sie
my-package
und entfernen Siebad-package-1
sowiebad-package-2
aus Instanzen mit einem bestimmten Satz von Labels. Fügen Sie auch Repositories für die Paketmanager von apt und yum hinzu.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
Beispiel 4
Installieren Sie Software von einer in Cloud Storage gehosteten MSI-Datei auf allen Instanzen in
us-east1-b
undus-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"
Weitere Informationen zum Konfigurieren von Schemarichtlinien finden Sie im Referenzdokument zur SoftwareRecipe-JSON-Darstellung.
Beispiel 5
Installieren Sie Software, indem Sie ein Inline-Skript auf allen VM-Instanzen ausführen, die die folgenden Anforderungen erfüllen:
assignment: osTypes: - osShortName: rhel osVersion: "7" groupLabels: - labels: color: red recipes: - name: recipe-runscript desiredState: INSTALLED installSteps: - scriptRun: script: |- #!/bin/bash touch /TOUCH_FILE
Weitere Informationen zum Konfigurieren von Schemarichtlinien finden Sie im Referenzdokument zur SoftwareRecipe-JSON-Darstellung.
Beispiel 6
Installiert die Anwendung auf allen Windows-Instanzen mithilfe eines ausführbaren Installationsprogramms mit dem folgenden Instanznamenspräfix:
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
Weitere Informationen zum Konfigurieren von Schemarichtlinien finden Sie im Referenzdokument zur SoftwareRecipe-JSON-Darstellung.
Gastrichtlinie erstellen
Wenn Sie eine Gastrichtlinie erstellen, muss der Name der Gastrichtlinie die folgenden Benennungsanforderungen erfüllen:
Verwenden Sie eine der folgenden Methoden, um eine Gastrichtlinie zu erstellen.
gcloud
Verwenden Sie den Befehl
os-config guest-policies create
, um eine Gastrichtlinie zu erstellen.gcloud beta compute os-config guest-policies create POLICY_ID \ --file=FILE
Dabei gilt:
REST
Erstellen Sie in der API eine
POST
-Anfrage an die Methodeprojects.guestPolicies.create
.POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID { For more information, see Guest policy JSON }
Dabei gilt:
Beispielkonfigurationen finden Sie unter Beispiele für YAML-Dateien für Gastrichtlinien.
Fehlerbehebung
Informationen zur Fehlerbehebung in Gastrichtlinien finden Sie unter Fehlerbehebung einer Gastrichtlinie.
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-22 (UTC).
-