Zuweisung von Betriebssystemrichtlinien erstellen


Verwenden Sie Betriebssystemrichtlinien, um konsistente Softwarekonfigurationen über virtuelle Linux- und Windows-Maschineninstanzen (VMs) hinweg zu erhalten.

Hinweise

  • Prüfen Sie die Betriebssystemrichtlinien und Zuweisung von Betriebssystemrichtlinien.
  • 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 so bei Compute Engine authentifizieren.

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

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    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.

    Terraform

    Wenn Sie die Terraform-Beispiele auf dieser Seite aus einer lokalen Entwicklungsumgebung heraus verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

    1. Installieren Sie die Google Cloud CLI.
    2. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

      gcloud init
    3. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login

    Weitere Informationen: Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

    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

Unterstützte Betriebssysteme

Eine vollständige Liste der Betriebssysteme und Versionen, die Betriebssystemrichtlinien unterstützen, finden Sie unter Details zu Betriebssystemen.

Berechtigungen

Da Sie Betriebssystemrichtlinien zur Installation und Verwaltung von Softwarepaketen auf einer VM verwenden können, entspricht die Erstellung und Verwaltung von Betriebssystemrichtlinien dem Gewähren des Zugriffs auf die Remote-Codeausführung auf einer VM.

Wenn Sie Betriebssystemrichtlinien einrichten, werden IAM-Berechtigungen zur Steuerung des Zugriffs auf die Richtlinienressourcen verwendet und Audit-Logs der Aktivitäten erstellt. Nutzer können jedoch weiterhin Code auf der VM ausführen, was ein potenzielles Sicherheitsrisiko darstellt. Um dieses Risiko zu minimieren, sollten Sie jedem Nutzer nur den erforderlichen Zugriff gewähren.

Die Inhaber eines Projekts haben uneingeschränkten Zugriff, um Zuweisungen von Betriebssystemrichtlinien zu erstellen und zu verwalten. Für alle anderen Nutzer müssen Sie Berechtigungen erteilen. Dafür können Sie eine dieser detaillierten Rollen zuweisen:

  • OSPolicyAssignment-Administrator (roles/osconfig.osPolicyAssignmentAdmin). Enthält Berechtigungen zum Erstellen, Löschen, Aktualisieren, Abrufen und Auflisten von Zuweisungen von Betriebssystemrichtlinien.
  • OSPolicyAssignment-Bearbeiter (roles/osconfig.osPolicyAssignmentEditor). Enthält Berechtigungen zum Aktualisieren, Abrufen und Auflisten von Zuweisungen von Betriebssystemrichtlinien.
  • OSPolicyAssignment-Betrachter (roles/osconfig.osPolicyAssignmentViewer). Enthält Berechtigungen für den Lesezugriff, um Zuweisungen von Betriebssystemrichtlinien abzurufen und aufzulisten.

Beispielbefehl zum Festlegen von Berechtigungen

Führen Sie den folgenden Befehl aus, um einem Nutzer Administratorzugriff für Zuweisungen von Betriebssystemrichtlinien zu gewähren:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member user:USER_ID@gmail.com \
        --role roles/osconfig.osPolicyAssignmentAdmin

Ersetzen Sie Folgendes:

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

Zuweisung von Betriebssystemrichtlinien erstellen

Führen Sie die folgenden Schritte aus, um eine Betriebssystemrichtlinienzuweisung zu erstellen und bereitzustellen:

  1. VM Manager einrichten
  2. Weisen Sie Nutzern die erforderlichen Berechtigungen zu.
  3. Prüfen Sie die Betriebssystemrichtlinien und Zuweisung von Betriebssystemrichtlinien.
  4. Erstellen Sie die Ressourcen für Betriebssystemrichtlinien.
  5. Verwenden Sie eine der folgenden Methoden, um die Zuweisung von Betriebssystemrichtlinien zu erstellen und bereitzustellen:

    Console

    Führen Sie die folgenden Schritte aus, um eine Betriebssystemrichtlinienzuweisung zu erstellen und bereitzustellen:

    1. Erstellen Sie auf Ihrem lokalen Client eine Betriebssystemrichtlinie oder laden Sie sie herunter. Dabei muss es sich um eine JSON- oder YAML-Datei handeln. Weitere Informationen zum Erstellen von Betriebssystemrichtlinien sowie Beispiel-Betriebssystemrichtlinien finden Sie unter Betriebssystemrichtlinien.
    2. Öffnen Sie in der Google Cloud Console die Seite Betriebssystemrichtlinien.

      Zu „Betriebssystemrichtlinien“

    3. Klicken Sie auf Zuweisung von Betriebssystemrichtlinien erstellen.

    4. Geben Sie im Bereich Zuweisungs-ID einen Namen für die Zuweisung von Betriebssystemrichtlinien an. Weitere Informationen finden Sie unter Konvention für Ressourcennamen.

    5. Laden Sie im Abschnitt Betriebssystemrichtlinien die Betriebssystemrichtliniendatei hoch.

    6. Geben Sie im Abschnitt Ziel-VM-Instanzen die Ziel-VMs an.

      • Wählen Sie die Zone aus, die die VMs enthält, auf die Sie die Richtlinie anwenden möchten.
      • Wählen Sie die Betriebssystemfamilien aus.
      • Optional können Sie die VMs weiter filtern. Geben Sie dazu Einschluss- und Ausschlusslabels an.

      Sie können beispielsweise alle Ubuntu-VMs in Ihrer Testumgebung auswählen und dabei die ausschließen, die Google Kubernetes Engine ausführen, indem Sie Folgendes angeben:

      • Betriebssystemfamilie: ubuntu
      • Einschließen: env:test, env:staging
      • Ausschließen: goog-gke-node

      Ziel-VMs auswählen.

    7. Geben Sie einen Rolloutplan an.

      • Geben Sie die Wellengröße an (auch als Unterbrechungsbudget bezeichnet). Zum Beispiel 10 %.
      • Geben Sie die Wartezeit an. Beispiel: 15 Minuten.

        Rollout-Konfiguration.

    8. Klicken Sie auf Rollout starten.

    gcloud

    Führen Sie die folgenden Schritte aus, um eine Betriebssystemrichtlinienzuweisung in einer Zone zu erstellen und bereitzustellen:

    1. Erstellen Sie eine Ressource für eine Betriebssystemrichtlinie im JSON- oder YAML-Format. In dieser Datei werden die Betriebssystemrichtlinien definiert, die Sie auf Ihre VMs anwenden möchten, die Ziel-VMs, auf die Sie die Richtlinien anwenden möchten, und die Rollout-Rate, mit der die Betriebssystemrichtlinien angewendet werden. Weitere Informationen zu dieser Datei und Beispielzuweisungen finden Sie unter Betriebssystemrichtlinien zuweisen.

    2. Verwenden Sie den Befehl os-config os-policy-assignments create, um die Zuweisung der Betriebssystemrichtlinie an einem bestimmten Speicherort zu erstellen und bereitzustellen.

      gcloud compute os-config os-policy-assignments create OS_POLICY_ASSIGNMENT_ID \
         --location=ZONE \
         --file=OS_POLICY_ASSIGNMENT_FILE \
         --async
      

      Dabei gilt:

      • OS_POLICY_ASSIGNMENT_ID ist der Name für die Zuweisung der Betriebssystemrichtlinie. Weitere Informationen finden Sie unter Konvention für Ressourcennamen.
      • ZONE: Zone, in der die Zuweisung der Betriebssystemrichtlinie erstellt werden soll.
      • OS_POLICY_ASSIGNMENT_FILE: Der absolute Pfad zur Zuweisungsdatei der Betriebssystemrichtlinie, die Sie im vorherigen Schritt erstellt haben.

      Beispiel

      gcloud compute os-config os-policy-assignments create my-os-policy-assignment \
          --location=asia-south1-a \
          --file=/downloads/assignment-config.yaml \
          --async
      

      Die Ausgabe sieht etwa so aus:

      Create request issued for: [my-os-policy-assignment]
      Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.
      
    3. Notieren Sie sich den voll qualifizierten Ressourcennamen für den Vorgang. Im vorherigen Beispiel lautet der voll qualifizierte Ressourcenname so:

      projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa
      

      Mit diesem vollständig qualifizierten Ressourcennamen können Sie Details zu einem Rollout abrufen oder das Rollout abbrechen. Weitere Informationen finden Sie unter Rollouts.

    Terraform

    Verwenden Sie zum Erstellen einer Zuweisung von Betriebssystemrichtlinien die Ressource google_os_config_os_policy_assignment.

    Das folgende Beispiel prüft, ob der Apache-Webserver auf CentOS-VMs ausgeführt wird.

    resource "google_os_config_os_policy_assignment" "my_os_policy_assignment" {
    
      name        = "my-os-policy-assignment"
      location    = "us-west1-a"
      description = "An OS policy assignment that verifies if the Apache web server is running on CentOS VMs."
    
      instance_filter {
        # filter to select VMs
        all = false
    
        exclusion_labels {
          labels = {
            label-one = "goog-gke-node"
          }
        }
    
        inclusion_labels {
          labels = {
            env = "test",
          }
        }
    
        inventories {
          os_short_name = "centos"
          os_version    = "7*"
        }
      }
    
      os_policies {
        #list of OS policies to be applied to VMs
        id   = "apache-always-up-policy"
        mode = "ENFORCEMENT"
    
        resource_groups { #list of resource groups for the policy
          resources {
            id = "ensure-apache-is-up"
    
            exec {
              validate {
                interpreter = "SHELL"
                script      = "if systemctl is-active --quiet httpd; then exit 100; else exit 101; fi"
              }
    
              enforce {
                interpreter = "SHELL"
                script      = "systemctl start httpd && exit 100"
              }
            }
          }
    
          inventory_filters {
            os_short_name = "centos"
            os_version    = "7*"
          }
        }
    
        allow_no_resource_group_match = false #OS policy compliance status
        description                   = "An OS policy that verifies if the Apache web server is running on Linux VMs."
      }
    
      rollout {
        #define rollout parameters
        disruption_budget {
          fixed = 1
        }
        min_wait_duration = "3.5s"
      }
    }

    Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

    REST

    Führen Sie die folgenden Schritte aus, um auf Ihrem lokalen Client eine Zuweisung von Betriebssystemrichtlinien zu erstellen:

    1. Erstellen Sie eine Zuweisung von Betriebssystemrichtlinien. Dabei muss es sich um eine JSON-Datei handeln. Weitere Informationen zum Erstellen von Zuweisungen von Betriebssystemrichtlinien oder zum Aufrufen von Beispielzuweisungen von Betriebssystemrichtlinien finden Sie unter Zuweisung von Betriebssystemrichtlinien.

      Wenn Sie das YAML-Beispiel einer Zuweisung von Betriebssystemrichtlinien verwenden möchten, müssen Sie sie in das JSON-Format konvertieren.

    2. Erstellen Sie in der API eine POST-Anfrage an die Methode projects.locations.osPolicyAssignments.create.

      Fügen Sie in den Anfragetext die Spezifikationen für die Zuweisung der Betriebssystemrichtlinie aus dem vorherigen Schritt ein.

      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
       JSON_OS_POLICY
      }
      

      Dabei gilt:

      • PROJECT_ID: Ihre Projekt-ID
      • OS_POLICY_ASSIGNMENT_ID ist der Name für die Zuweisung der Betriebssystemrichtlinie.
      • JSON_OS_POLICY: Die Spezifikationen der Zuweisung der Betriebssystemrichtlinie, die im vorherigen Schritt erstellt wurde. Diese müssen im JSON-Format vorliegen. Weitere Informationen zu den Parametern und zum Format finden Sie unter Resource: OSPolicyAssignment.
      • ZONE: Zone, in der die Zuweisung der Betriebssystemrichtlinie erstellt werden soll

      Beispiel

      Wenn Sie beispielsweise eine Zuweisung von Betriebssystemrichtlinien für Google Cloud Observability erstellen möchten, die Monitoring- und Logging-Agents auf ausgewählten VMs installiert, und dafür die Beispielzuweisung einer Betriebssystemrichtlinie verwendet werden soll, führen Sie folgende Schritte aus: :

      1. Beispiel in JSON konvertieren
      2. Senden Sie die folgende Anfrage:
      POST https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/OSPolicyAssignments?osPolicyAssignmentId=OS_POLICY_ASSIGNMENT_ID
      
      {
        "osPolicies": [
          {
            "id": "setup-repo-and-install-package-policy",
            "mode": "ENFORCEMENT",
            "resourceGroups": [
              {
                "resources": [
                  {
                    "id": "setup-repo",
                    "repository": {
                      "yum": {
                        "id": "google-cloud-monitoring",
                        "displayName": "Google Cloud Monitoring Agent Repository",
                        "baseUrl": "https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el8-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"
                        ]
                      }
                    }
                  },
                  {
                    "id": "install-pkg",
                    "pkg": {
                      "desiredState": "INSTALLED",
                      "yum": {
                        "name": "stackdriver-agent"
                      }
                    }
                  }
                ]
              }
            ]
          }
        ],
        "instanceFilter": {
          "inclusionLabels": [
            {
              "labels": {
                "used_for": "testing"
              }
            }
          ]
        },
        "rollout": {
          "disruptionBudget": {
            "fixed": 10
          },
          "minWaitDuration": {
            "seconds": 300
          }
        }
      }
      

Rollouts

Zuweisungen von Betriebssystemrichtlinien werden gemäß einer Rollout-Rate bereitgestellt. Das bedeutet, dass Zuweisungen, die auf eine Gruppe von VMs abzielen, schrittweise implementiert und nicht sofort auf alle VMs angewendet werden. Änderungen werden schrittweise eingeführt, damit Sie gegebenenfalls eingreifen und ein Rollout abbrechen können, wenn neue Änderungen Regressionen verursachen.

Sollten Methodenaufrufe bei einer API sehr lange dauern, gibt die API einen Vorgang mit langer Ausführungszeit (long-running operation, LRO) zurück. Weitere Informationen zu LROs finden Sie unter Vorgänge mit langer Ausführungszeit.

Die OS Config API erstellt bei jedem Erstellen, Aktualisieren oder Löschen einer Betriebssystemrichtlinienzuweisung einen LRO. Jeder LRO gibt eine Vorgangsressource zurück. Diese Vorgangsressource sieht in etwa so aus:

Create request issued for: [my-os-policy-assignment]
Check operation [projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa] for status.

Bei jedem Erstellungs-, Aktualisierungs- oder Löschvorgang wird auch eine neue Überarbeitung der Zuweisung von Betriebssystemrichtlinien generiert. Informationen zum Aufrufen der Überarbeitungen der Zuweisung einer Betriebssystemrichtlinie finden Sie unter Überarbeitungen der Zuweisung einer Betriebssystemrichtlinie auflisten.

Mit der Google Cloud CLI können Sie die Details eines Rollouts abrufen oder ein Rollout abbrechen.

Details zu einem Rollout abrufen

Mit dem Befehl os-config os-policy-assignments operations describe können Sie Details zu einem Roll-out abrufen.

gcloud compute os-config os-policy-assignments operations describe FULLY_QUALIFIED_OPERATION_NAME

Ersetzen Sie FULLY_QUALIFIED_OPERATION_NAME durch den vollständig qualifizierten Ressourcennamen für den Vorgang, der beim Vorgang des Erstellens, Aktualisierens oder Löschens zurückgegeben wird.

Beispiel

gcloud compute os-config os-policy-assignments operations describe \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Beispielausgabe

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignmentOperationMetadata
  apiMethod: CREATE
  osPolicyAssignment: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment@cfb78790-41d8-40d1-b8a1-1eaf6011b909
  rolloutStartTime: '2021-04-15T00:53:52.963569Z'
  rolloutState: SUCCEEDED
  rolloutUpdateTime: '2021-04-15T00:53:53.094041Z'
name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/cfb78790-41d8-40d1-b8a1-1eaf6011b909
response:
  '@type': type.googleapis.com/google.cloud.osconfig.$$api-version$$.OSPolicyAssignment
  baseline: true
  description: My test policy
  instanceFilter:
    inclusionLabels:
    - labels:
        label-key-not-targeting-instances: label-value-not-targeting-instances
  name: projects/3841234882888/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment
  osPolicies:
  - id: q-test-policy
    mode: ENFORCEMENT
    resourceGroups:
    - osFilter:
        osShortName: centos
        osVersion: '7'
      resources:
      - id: add-repo
        repository:
          yum:
            baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-ops-agent-el7-x86_64-all

Rollout abbrechen

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Betriebssystemrichtlinien.

    Zu „Betriebssystemrichtlinien“

  2. Klicken Sie auf den Tab Zuweisungen von Betriebssystemrichtlinien.

  3. Klicken Sie für die Zuweisung von Betriebssystemrichtlinien, für die Sie das Rollout abbrechen möchten, auf Aktion () > Rollout abbrechen.

  4. Klicken Sie auf Rollout abbrechen.

gcloud

Mit dem Befehl gcloud compute os-config os-policy-assignments operations cancel können Sie ein Rollout abbrechen.

gcloud compute os-config os-policy-assignments operations cancel FULLY_QUALIFIED_OPERATION_NAME

Ersetzen Sie FULLY_QUALIFIED_OPERATION_NAME durch den vollständig qualifizierten Ressourcennamen für den Vorgang, der beim Vorgang des Erstellens, Aktualisierens oder Löschens zurückgegeben wird.

Beispiel

gcloud compute os-config os-policy-assignments operations cancel \
    projects/384123488288/locations/asia-south1-a/osPolicyAssignments/my-os-policy-assignment/operations/fb2011d6-61de-46f1-afdb-bc96bdb3fbaa

Wenn der Befehl erfolgreich ist, wird keine Ausgabe zurückgegeben.

Nächste Schritte