Gastrichtlinie erstellen

Sie können Gastrichtlinien verwenden, um Softwarekonfigurationen auf VM-Instanzen konsistent zu halten.

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.

Vorbereitung

Unterstützte Betriebssysteme

  • Debian 9 und 10
  • Ubuntu 16.04 und 18.04+
  • CentOS 6, 7 und 8
  • Red Hat Enterprise Linux (RHEL) 6, 7 und 8
  • Windows Server 2012R2, 2016, 2019 und die halbjährlichen Releases 1803, 1809 und 1903
  • SUSE Enterprise Linux Server (SLES) 12 und 15, openSUSE Leap 15

Beschränkungen

  • Alle Instanzen, auf die eine Gastrichtlinie abzielt, werden 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.

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 verwenden, wird der Zugriff über IAM-Berechtigungen gesteuert und protokolliert. Die Möglichkeit, Code auf der VM auszuführen, ist jedoch weiterhin eine Option und kann ein potenzielles Sicherheitsrisiko darstellen. 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

Ersetzen Sie Folgendes:

  • project-id ist die Projekt-ID.
  • user-id: Der Name des G Suite-Nutzers.

VM einrichten

Wenn Sie den OS Patch Management-Dienst verwenden möchten, müssen Sie die API des OS Config-Dienstes einrichten und den OS Config-Agent installieren. Eine ausführliche Anleitung finden Sie unter OS Config 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:

Aufgaben

Sie können allen VM-Instanzen in Ihrem Projekt Gastrichtlinien zuweisen oder den assignment-Schlüssel 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, um nach Betriebssysteminformationen zu gruppieren. Siehe Systems Management-Dienst aktivieren.

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 ein my-package-Paket, das auf den folgenden VM-Instanzen aktualisiert 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

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

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.

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

Ersetzen Sie Folgendes:

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

Ersetzen Sie Folgendes:

  • project-id: Ihre Projekt-ID.
  • policy-id: Der Name der Gastrichtlinie.

Beispielkonfigurationen finden Sie unter Beispiele für YAML-Dateien für Gastrichtlinien.

Weitere Informationen