Crea un'assegnazione delle policy del sistema operativo

Utilizza i criteri del sistema operativo per mantenere configurazioni software coerenti nelle istanze di macchine virtuali (VM) Linux e Windows.

Prima di iniziare

Sistemi operativi supportati

Per un elenco completo dei sistemi operativi e delle versioni che supportano i criteri del sistema operativo, consulta Dettagli del sistema operativo.

Autorizzazioni

Poiché puoi utilizzare i criteri del sistema operativo per installare e gestire pacchetti software su una VM, la creazione e la gestione dei criteri del sistema operativo equivale a concedere l'accesso all'esecuzione di codice remoto su una VM. Quando configuri i criteri del sistema operativo, le autorizzazioni IAM vengono utilizzate per controllare l'accesso alle risorse dei criteri e le attività vengono registrate nei log di controllo.

I proprietari di un progetto hanno accesso completo per creare e gestire le assegnazioni delle policy del sistema operativo. Per tutti gli altri utenti, devi concedere le autorizzazioni. Puoi concedere uno dei seguenti ruoli granulari:

  • Amministratore OSPolicyAssignment (roles/osconfig.osPolicyAssignmentAdmin). Contiene le autorizzazioni per creare, eliminare, aggiornare, ottenere ed elencare le assegnazioni delle policy del sistema operativo.
  • Editor OSPolicyAssignment (roles/osconfig.osPolicyAssignmentEditor). Contiene le autorizzazioni per aggiornare, recuperare ed elencare le assegnazioni delle policy del sistema operativo.
  • Visualizzatore assegnazioni policy del sistema operativo (roles/osconfig.osPolicyAssignmentViewer). Contiene le autorizzazioni per l'accesso di sola lettura per recuperare ed elencare le assegnazioni delle policy del sistema operativo.

Comando di esempio per impostare le autorizzazioni

Per concedere l'accesso amministrativo a un utente per le assegnazioni delle policy del sistema operativo, esegui questo comando:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto
  • USER_ID: il nome utente Google Workspace dell'utente

Crea un'assegnazione delle policy del sistema operativo

Per creare e implementare un'assegnazione dei criteri del sistema operativo, completa i seguenti passaggi:

  1. Configura VM Manager.
  2. Assegna le autorizzazioni richieste agli utenti.
  3. Rivedi Policy del sistema operativo e assegnazione delle policy.
  4. Crea le risorse dei criteri del sistema operativo.
  5. Per creare e implementare l'assegnazione dei criteri del sistema operativo, utilizza uno dei seguenti metodi:

    Console

    Per creare e implementare un'assegnazione dei criteri del sistema operativo, completa i seguenti passaggi:

    1. Sul client locale, crea o scarica un criterio del sistema operativo. Deve essere un file JSON o YAML. Per saperne di più sulla creazione di policy del sistema operativo o per visualizzare esempi di policy del sistema operativo, consulta Policy del sistema operativo.
    2. Nella console Google Cloud , vai alla pagina Policy del sistema operativo.

      Vai a Policy del sistema operativo

    3. Fai clic su Crea assegnazione policy del sistema operativo.

    4. Nella sezione ID assegnazione, fornisci un nome per l'assegnazione della policy del sistema operativo. Consulta Convenzioni di denominazione delle risorse.

    5. Nella sezione Policy del sistema operativo, carica il rispettivo file.

    6. Nella sezione Istanze VM di destinazione, specifica le VM di destinazione.

      • Seleziona la zona contenente le VM a cui vuoi applicare il criterio.
      • Seleziona le famiglie di sistemi operativi.
      • (Facoltativo) Puoi filtrare ulteriormente le VM specificando le etichette da includere ed escludere.

      Ad esempio, puoi selezionare tutte le VM Ubuntu nel tuo ambiente di test ed escludere quelle su cui è in esecuzione Google Kubernetes Engine specificando quanto segue:

      • Famiglia di sistemi operativi: ubuntu
      • Includi: env:test, env:staging
      • Escludi: goog-gke-node

      Seleziona le VM di destinazione.

    7. Specifica un piano di rollout.

      • Specifica la dimensione di wave (detta anche budget di interruzione). Ad esempio: 10%.
      • Specifica il tempo di attesa. Ad esempio, 15 minuti.

        Configurazione dell'implementazione.

    8. Fai clic su Avvia implementazione.

    gcloud

    Per creare e implementare un'assegnazione dei criteri del sistema operativo in una zona, completa i seguenti passaggi:

    1. Crea una risorsa di assegnazione delle policy del sistema operativo in formato JSON o YAML. Questo file definisce le policy di sistema operativo che vuoi applicare alle tue VM, le VM di destinazione a cui vuoi applicare le policy e la frequenza di implementazione con cui applicare le policy di sistema operativo. Per ulteriori informazioni su questo file e su esempi di assegnazioni, consulta Assegnazione delle policy del sistema operativo.

    2. Utilizza il comando os-config os-policy-assignments create per creare e implementare l'assegnazione di policy del sistema operativo in una posizione specificata.

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

      Sostituisci quanto segue:

      • OS_POLICY_ASSIGNMENT_ID: il nome dell'assegnazione delle policy del sistema operativo. Consulta Convenzioni di denominazione delle risorse.
      • ZONE: la zona in cui creare l'assegnazione policy del sistema operativo.
      • OS_POLICY_ASSIGNMENT_FILE: il percorso assoluto del file di assegnazione policy di sistema operativo che hai creato nel passaggio precedente.

      Esempio

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

      L'output è simile al seguente:

      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. Prendi nota del nome risorsa completo dell'operazione. Nell'esempio precedente, il nome risorsa completo è:

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

      Puoi utilizzare questo nome della risorsa completo per ottenere i dettagli di un rollout o per annullarlo. Vedi Implementazioni.

    Terraform

    Per creare un'assegnazione dei criteri del sistema operativo, utilizza la risorsa google_os_config_os_policy_assignment.

    L'esempio seguente verifica se il server web Apache è in esecuzione sulle VM CentOS.

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

    Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

    REST

    Per creare un'assegnazione dei criteri del sistema operativo sul client locale, completa i seguenti passaggi:

    1. Crea un'assegnazione delle policy del sistema operativo. Deve essere un file JSON. Per ulteriori informazioni sulla creazione di assegnazioni delle policy del sistema operativo o per visualizzare esempi di assegnazioni delle policy del sistema operativo, consulta Assegnazione delle policy del sistema operativo.

      Se vuoi utilizzare l'assegnazione di policy del sistema operativo YAML di esempio, devi convertirla in JSON.

    2. Nell'API, crea una richiesta POST al metodo projects.locations.osPolicyAssignments.create.

      Nel corpo della richiesta, incolla le specifiche di assegnazione delle policy del sistema operativo del passaggio precedente.

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

      Sostituisci quanto segue:

      • PROJECT_ID: il tuo ID progetto
      • OS_POLICY_ASSIGNMENT_ID: il nome dell'assegnazione del criterio del sistema operativo
      • JSON_OS_POLICY: le specifiche di assegnazione delle policy del sistema operativo create nel passaggio precedente. Deve essere in formato JSON. Per ulteriori informazioni sui parametri e sul formato, vedi Resource: OSPolicyAssignment.
      • ZONE: la zona in cui creare l'assegnazione policy del sistema operativo

      Esempio

      Ad esempio, per creare un'assegnazione di policy del sistema operativo per Google Cloud Observability che installi agent di monitoraggio e logging sulle VM selezionate utilizzando l'assegnazione di policy del sistema operativo di esempio, completa i seguenti passaggi:

      1. Converti l'esempio in JSON
      2. Invia la seguente richiesta:
      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
          }
        }
      }
      

Implementazioni

Le assegnazioni dei criteri del sistema operativo vengono implementate in base a una frequenza di implementazione. Ciò significa che le assegnazioni che hanno come target un insieme di VM possono essere implementate gradualmente e non vengono applicate immediatamente a tutte le VM. Le modifiche vengono implementate gradualmente per darti l'opportunità di intervenire e annullare un'implementazione se le nuove modifiche causano regressioni.

Quando le chiamate di metodi a un'API potrebbero richiedere molto tempo per essere completate, l'API restituisce un'operazione a lunga esecuzione (LRO). Per ulteriori informazioni sulle operazioni di lunga durata, consulta la sezione Operazioni di lunga durata.

L'API OS Config crea un'operazione a lunga esecuzione ogni volta che crei, aggiorni o elimini un'assegnazione di criteri del sistema operativo. Ogni LRO restituisce una risorsa di operazione. Questa risorsa dell'operazione è simile alla seguente:

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.

Ogni operazione di creazione, aggiornamento o eliminazione genera anche una nuova revisione dell'assegnazione di criteri del sistema operativo. Per visualizzare le revisioni di un'assegnazione di policy del sistema operativo, vedi Elenca le revisioni dell'assegnazione di policy del sistema operativo.

Puoi utilizzare Google Cloud CLI per ottenere i dettagli di un rollout o per annullarlo.

Visualizzare i dettagli di un'implementazione

Per ottenere i dettagli di un'implementazione, utilizza il comando os-config os-policy-assignments operations describe.

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

Sostituisci FULLY_QUALIFIED_OPERATION_NAME con il nome della risorsa completo per l'operazione restituita dall'operazione di creazione, aggiornamento o eliminazione.

Esempio

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

Output di esempio

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

Annullare un'implementazione

Console

  1. Nella console Google Cloud , vai alla pagina Policy del sistema operativo.

    Vai a Policy del sistema operativo

  2. Fai clic sulla scheda Assegnazioni delle policy del sistema operativo.

  3. Per l'assegnazione dei criteri del sistema operativo per cui vuoi annullare l'implementazione, fai clic su Azione () > Annulla implementazione.

  4. Fai clic su Annulla implementazione.

gcloud

Per annullare un'implementazione, utilizza il comando gcloud compute os-config os-policy-assignments operations cancel.

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

Sostituisci FULLY_QUALIFIED_OPERATION_NAME con il nome della risorsa completo per l'operazione restituita dall'operazione di creazione, aggiornamento o eliminazione.

Esempio

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

Se il comando ha esito positivo, non viene restituito alcun output.

Passaggi successivi