Crea un'assegnazione dei criteri del sistema operativo

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

Prima di iniziare

  • Rivedi Criteri del sistema operativo e assegnazione dei criteri del sistema operativo.
  • Esamina le quote di OS Config.
  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Per utilizzare gli esempi di Terraform in questa pagina in un ambiente dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

      1. Installa Google Cloud CLI.
      2. Per initialize gcloud CLI, esegui questo comando:

        gcloud init
      3. Crea credenziali di autenticazione locali per il tuo Account Google:

        gcloud auth application-default login

      Per ulteriori informazioni, vedi Set up authentication for a local development environment.

      REST

      Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Sistemi operativi supportati

Per un elenco completo dei sistemi operativi e delle versioni che supportano Criteri di sistema operativo: vedi Dettagli del sistema operativo.

Autorizzazioni

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

I proprietari di un progetto hanno accesso completo per creare e gestire le assegnazioni dei criteri del sistema operativo. Dovrai concedere le autorizzazioni a tutti gli altri utenti. Puoi concedere uno dei seguenti seguenti ruoli granulari:

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

Comando di esempio per impostare le autorizzazioni

Per concedere a un utente l'accesso amministrativo per le assegnazioni dei criteri del sistema operativo, esegui la seguente comando:

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

Sostituisci quanto segue:

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

Crea un'assegnazione dei criteri 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 i criteri del sistema operativo e l'assegnazione dei criteri.
  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. Crea o scarica un criterio di sistema operativo sul client locale. Deve essere un un file JSON o YAML. Per ulteriori informazioni sulla creazione di criteri del sistema operativo per visualizzare esempi di criteri di sistema operativo, vedi Criteri del sistema operativo.
    2. Nella console Google Cloud, vai alla pagina Criteri del sistema operativo.

      Vai ai criteri del sistema operativo

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

    4. Nella sezione ID assegnazione, specifica un nome per il criterio di sistema operativo compito. Consulta Convenzione di denominazione delle risorse.

    5. Nella sezione Criteri del sistema operativo, carica il file dei criteri del sistema operativo.

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

      • Seleziona la zona che contiene le VM a cui vuoi applicare norme.
      • Seleziona le famiglie di sistemi operativi.
      • (Facoltativo) Puoi filtrare ulteriormente le VM specificando includi, ed escludere le etichette.

      Ad esempio, puoi selezionare tutte le VM Ubuntu nel tuo ambiente di test e escludere quelli che eseguono Google Kubernetes Engine, specificando quanto segue:

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

      Seleziona VM di destinazione.

    7. Specifica un piano di implementazione.

      • Specifica la dimensione dell'onda (nota anche come budget per l'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 seguenti passaggi:

    1. Crea una risorsa di assegnazione dei criteri del sistema operativo in formato JSON o YAML. Questo file definisce i criteri del sistema operativo che vuoi applicare alle VM, le VM di destinazione a cui vuoi applicare i criteri e la velocità di implementazione con cui applicare i criteri del sistema operativo. Per ulteriori informazioni su questo file e sulle assegnazioni di esempio, consulta l'articolo Assegnazione dei criteri del sistema operativo.

    2. Utilizza la Comando os-config os-policy-assignments create per creare e implementare l'assegnazione dei criteri 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: nome del criterio di sistema operativo compito. Consulta la Convenzione di denominazione delle risorse.
      • ZONE: zona in cui creare l'assegnazione dei criteri del sistema operativo.
      • OS_POLICY_ASSIGNMENT_FILE: valore assoluto percorso del file di assegnazione dei criteri del sistema operativo che hai creato nell' 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 completo della risorsa per l'operazione. Nel Nell'esempio precedente, il nome completo della risorsa è:

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

      Puoi utilizzare questo nome risorsa completo per ottenere i dettagli di un'implementazione, o annullare un'implementazione. Vedi Implementazioni.

    Terraform

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

    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 la seguenti passaggi:

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

      Se vuoi utilizzare l'assegnazione dei criteri del sistema operativo YAML di esempio, devi convertirlo in JSON.

    2. Nell'API, crea una richiesta POST all'evento Metodo projects.locations.osPolicyAssignments.create.

      Nel corpo della richiesta, incolla le specifiche di assegnazione dei criteri del sistema operativo dal 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: nome del criterio di sistema operativo compito
      • JSON_OS_POLICY: l'assegnazione dei criteri del sistema operativo specifiche create nel passaggio precedente. Deve essere in formato JSON. Per ulteriori informazioni su parametri e formato, consulta Resource: OSPolicyAssignment.
      • ZONE: zona in cui creare l'assegnazione dei criteri del sistema operativo

      Esempio

      Ad esempio, per creare un'assegnazione dei criteri del sistema operativo per Google Cloud Observability che installa gli agenti Monitoring e Logging sulle VM selezionate utilizzando Esempio di assegnazione dei criteri del sistema operativo, completa i seguenti passaggi:

      1. Converti l'esempio in JSON
      2. Effettua 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

Il deployment delle assegnazioni dei criteri del sistema operativo viene eseguito in base a una percentuale di implementazione. Questo significa che il deployment delle assegnazioni che hanno come target un insieme di VM può essere eseguito gradualmente e non vengono applicate subito a tutte le VM. Le modifiche vengono implementate gradualmente darti la possibilità di intervenire e annullare un'implementazione se nuove modifiche causano di regressione lineare.

Quando il completamento delle chiamate al metodo a un'API può richiedere molto tempo, l'API restituisce di un'operazione a lunga esecuzione (LRO). Per ulteriori informazioni sugli LRO, consulta Operazioni a lunga esecuzione.

L'API OS Config crea un LRO ogni volta che crei, aggiorni o elimini un'assegnazione di criteri del sistema operativo. Ogni LRO restituisce una risorsa dell'operazione. Questa 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 nuova revisione dell'assegnazione dei criteri del sistema operativo. Per visualizzare le revisioni di un'assegnazione di criteri del sistema operativo, consulta Elenca le revisioni delle assegnazioni dei criteri del sistema operativo.

Puoi utilizzare Google Cloud CLI per ottenere i dettagli di un'implementazione, oppure per annullare un'implementazione.

Visualizza i dettagli di un'implementazione

Per ottenere i dettagli di un'implementazione, utilizza 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 un nome di risorsa qualificato per l'operazione restituita dalla creazione, un'operazione di 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 Criteri del sistema operativo.

    Vai ai criteri del sistema operativo

  2. Fai clic sulla scheda Assegnazioni dei criteri 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 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 un nome di risorsa qualificato per l'operazione restituita dalla creazione, un'operazione di 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