Gastrichtlinie erstellen (Legacy)


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.

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.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

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

    1. Benennen Sie das Softwareschema um.
    2. Löschen und erstellen Sie die Gastrichtlinie mit dem umbenannten Softwareschema neu.

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

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:

  • 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

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.

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:

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

REST

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