Crea un criterio guest (legacy)

Utilizza i criteri guest per mantenere configurazioni software coerenti tra le istanze di macchine virtuali (VM) Linux e Windows.

Per configurare un criterio guest su un insieme di VM, segui questi passaggi:

  1. Assegna le autorizzazioni richieste agli utenti.
  2. Configura la VM.
  3. Configura il file JSON o YAML del criterio guest.
  4. Crea il criterio relativo agli invitati.

Prima di iniziare

  • Esamina le quote di configurazione del sistema operativo.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    gcloud

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

      gcloud init
    2. Imposta una regione e una zona predefinite.

    REST

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

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Limitazioni

  • Per le VM scelte come target, il criterio guest si aggiorna ogni volta che l'agente effettua il check-in con il servizio. Questo controllo viene eseguito ogni 10-15 minuti.
  • Con questi criteri guest del sistema operativo legacy non sono disponibili dashboard per la conformità, notifiche o servizi di avviso. Le VM che non eseguono l'agente OS Config non segnalano errori. Per ottenere risultati ottimali, utilizza questa funzionalità con il servizio OS Inventory Management o qualsiasi altro strumento di monitoraggio della conformità.
  • Una formula software con un nome specifico viene eseguita una sola volta quando crei un criterio guest. Per eseguire nuovamente una formula software, devi procedere nel seguente modo:

    1. Rinomina la formula del software.
    2. Elimina e ricrea il criterio guest utilizzando la formula software rinominata.

Autorizzazioni

Poiché puoi utilizzare criteri guest per installare e gestire pacchetti software su una VM, la creazione e la gestione di criteri guest equivale a concedere l'accesso all'esecuzione di codice remoto su una VM.

Quando configuri i criteri guest, le autorizzazioni IAM vengono utilizzate per controllare l'accesso alla risorsa del criterio e le attività vengono audit registrate. Tuttavia, gli utenti possono comunque eseguire codice sulla VM, il che rappresenta un potenziale rischio per la sicurezza. Per limitare questo problema, ti consigliamo di fornire a ciascun utente solo l'accesso richiesto.

I proprietari di un progetto hanno accesso completo per creare e gestire i criteri. Per tutti gli altri utenti, devi concedere le autorizzazioni. Puoi concedere uno dei seguenti ruoli granulari:

  • Amministratore GuestPolicy (roles/osconfig.guestPolicyAdmin). Contiene le autorizzazioni per creare, eliminare, aggiornare, ottenere ed elencare i criteri guest.
  • Editor GuestPolicy (roles/osconfig.guestPolicyEditor). Contiene le autorizzazioni per scaricare, aggiornare ed elencare i criteri guest.
  • Visualizzatore GuestPolicy (roles/osconfig.guestPolicyViewer). Contiene le autorizzazioni per l'accesso di sola lettura per recuperare ed elencare i criteri guest.

Ad esempio, per concedere a un utente l'accesso amministrativo ai criteri guest, esegui questo comando:

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

Sostituisci quanto segue:

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

Configura la VM

Per utilizzare i criteri guest, devi configurare VM Manager.

Configura un file YAML o JSON del criterio guest

Devi fornire le specifiche dei criteri guest utilizzando un file JSON o YAML. Per visualizzare le configurazioni di esempio, consulta la pagina relativa ai file YAML dei criteri guest di esempio.

Il file YAML o JSON contiene le seguenti due sezioni principali:

Assegnazioni

Puoi assegnare criteri guest a tutte le VM nel tuo progetto oppure utilizzare la chiave assignment nel file JSON o YAML per scegliere come target un gruppo specifico di VM.

Ad esempio, puoi scegliere come target un gruppo di VM utilizzando una qualsiasi delle seguenti caratteristiche:

  • Nome istanza. Vedi l'esempio 1.
  • Prefisso del nome istanza. Vedi l'esempio 2.
  • Etichetta dell'istanza. Vedi l'esempio 3.
  • Zona. Vedi l'esempio 4.
  • Informazioni sul sistema operativo, contenenti il nome, la versione e l'architettura del sistema operativo. Vedi esempio 5. Il comando os-inventory describe può essere utilizzato per determinare il nome, la versione e l'architettura del sistema operativo delle VM.

Per assegnare un criterio guest utilizzando le informazioni del sistema operativo, l'agente OS Configuration deve inviare le informazioni sul sistema operativo all'endpoint degli attributi guest per la VM. Per garantire la privacy, per impostazione predefinita non sono disponibili informazioni sul sistema operativo per le VM. Per raggruppare le VM in base alle informazioni del sistema operativo, devi assicurarti che gli attributi guest e i servizi di gestione dell'inventario del sistema operativo siano abilitati. Per abilitare questi servizi, consulta Configura la tua VM.

Le configurazioni dei criteri guest vengono applicate automaticamente a tutte le nuove VM corrispondenti all'assegnazione.

Configurazione richiesta

La configurazione richiesta può essere eseguita utilizzando una qualsiasi o una combinazione delle seguenti attività:

  • Installare, rimuovere e aggiornare automaticamente pacchetti software. Vedi l'esempio 1.
  • Configurare i repository di pacchetti software. Vedi esempio 1 o esempio 3.
  • Installare software utilizzando formule di software.

File YAML dei criteri guest di esempio

Esempio 1

Installa il pacchetto my-package che deve essere mantenuto aggiornato sulle seguenti istanze VM: my-instance-1 e 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

Per maggiori informazioni sull'assegnazione dei criteri guest per i pacchetti, consulta il documento di riferimento Rappresentazione JSON del pacchetto.

Esempio 2

Installa l'agente Cloud Monitoring, utilizzando il gestore di pacchetti yum, su tutte le istanze VM che hanno uno dei seguenti prefissi nome di istanza: test-instance- o 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

Per maggiori informazioni sull'assegnazione dei criteri guest per i repository pacakage, consulta il documento di riferimento sulla rappresentazione JSON PackageRepository.

Esempio 3

Installa my-package e rimuovi bad-package-1 e bad-package-2 dalle istanze con un set specifico di etichette. Aggiungi anche repository per i gestori di pacchetti apt e yum.

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

Esempio 4

Installa il software da un MSI ospitato su Cloud Storage su tutte le istanze in us-east1-b e 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"

Per maggiori informazioni sulla configurazione dei criteri delle ricette, consulta il documento di riferimento Rappresentazione JSON SoftwareRecipe.

Esempio 5

Installa il software eseguendo uno script incorporato su tutte le istanze VM che soddisfano i seguenti requisiti:

  • Sistema operativo: Red Hat Enterprise Linux 7
  • Etichetta: 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

Per maggiori informazioni sulla configurazione dei criteri delle ricette, consulta il documento di riferimento Rappresentazione JSON SoftwareRecipe.

Esempio 6

Installa l'applicazione in tutte le istanze di Windows utilizzando un programma di installazione eseguibile con il seguente prefisso del nome istanza: 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

Per maggiori informazioni sulla configurazione dei criteri delle ricette, consulta il documento di riferimento Rappresentazione JSON SoftwareRecipe.

Crea un criterio guest

Quando crei un criterio guest, il nome del criterio guest deve soddisfare i seguenti requisiti di denominazione:

  • Contenere solo lettere minuscole, numeri e trattini
  • Inizia con una lettera
  • Deve terminare con un numero o una lettera
  • Deve avere una lunghezza compresa tra 1 e 63 caratteri.
  • Ogni ID criterio deve essere univoco all'interno di un progetto

Utilizza uno dei seguenti metodi per creare un criterio guest.

gcloud

Utilizza il comando os-config guest-policies create per creare un criterio guest.

gcloud beta compute os-config guest-policies create POLICY_ID \
    --file=FILE

Sostituisci quanto segue:

  • POLICY_ID: il nome del criterio guest che vuoi creare.
  • FILE: file JSON o YAML che contiene le specifiche dei criteri guest. Per visualizzare le configurazioni di esempio, consulta Esempi di file YAML dei criteri guest.

REST

Nell'API, crea una richiesta POST per il metodo projects.guestPolicies.create.

POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID

{
 For more information, see Guest policy JSON
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • POLICY_ID: il nome del criterio relativo agli ospiti.

Per visualizzare le configurazioni di esempio, consulta i file YAML dei criteri guest di esempio.

Risoluzione dei problemi

Per risolvere i problemi relativi a un criterio guest, vedi Eseguire il debug di un criterio guest.

Che cosa succede dopo?