Gastrichtlinie erstellen (Beta)

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:

  1. Weisen Sie Nutzern die erforderlichen Berechtigungen zu.
  2. Richten Sie Ihre VM ein.
  3. Konfigurieren Sie die JSON- oder YAML-Datei für die Gastrichtlinie.
  4. Erstellen Sie die Gastrichtlinie.

Hinweis

Unterstützte Betriebssysteme

Eine vollständige Liste der Betriebssysteme und Versionen, die das OS Configuration Management (Beta) unterstützen, finden Sie unter Details zu Betriebssystemen.

Beschränkungen

  • 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 Betaversion 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.
  • Softwareschemas werden nur ausgeführt, wenn Sie eine Gastrichtlinie erstellen. Löschen Sie die Gastrichtlinie und erstellen Sie sie neu, um ein Softwareschema auszuführen.

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:

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

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:

  • PROJECT_ID: die Projekt-ID.
  • USER_ID: der Google Workspace-Nutzername des Nutzers.

VM einrichten

Wenn Sie den OS Configuration Management-Dienst verwenden möchte, 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:

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

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:

  • Softwarepakete installieren, entfernen und automatisch aktualisieren Siehe Beispiel 1.
  • Softwarepaket-Repositories konfigurieren Siehe Beispiel 1 oder Beispiel 3.
  • Installieren Sie Software mithilfe von Softwareschemas.

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 und 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

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- oder 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

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 Sie bad-package-1 sowie bad-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 und 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"

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:

  • Betriebssystem: Red Hat Enterprise Linux 7
  • Label: 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

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

Sie können eine Gastrichtlinie mit dem gcloud-Befehlszeilentool oder der Cloud OS Config API erstellen.

Wenn Sie eine Gastrichtlinie erstellen, muss der Name der Gastrichtlinie die folgenden Benennungsanforderungen erfüllen:

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

Im gcloud-Befehlszeilentool und in der Cloud OS Config API wird der Name der Gaststrategie als POLICY_ID bezeichnet.

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:

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

API

Erstellen Sie in der API eine POST-Anfrage an die Methode projects.guestPolicies.create.

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

{
 For more information, see Guest policy JSON
}

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • POLICY_ID: der Name der Gastrichtlinie.

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