Creare un criterio guest (legacy)

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

Per configurare una policy guest su un insieme di VM, completa i seguenti passaggi:

  1. Assegna le autorizzazioni richieste agli utenti.
  2. Configura la VM.
  3. Configura il file JSON o YAML dei criteri per gli ospiti.
  4. Crea il criterio guest.

Prima di iniziare

  • Esamina le quote di OS Config.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

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

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. 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.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Limitazioni

  • Per le VM di destinazione, i criteri guest vengono aggiornati ogni volta che l'agente esegue il check-in con il servizio. Questo controllo viene eseguito ogni 10-15 minuti.
  • Non sono disponibili dashboard di conformità, notifiche o servizi di avviso con questi criteri guest del sistema operativo legacy. Le VM che non eseguono l'agente OS Config non segnalano errori. Per risultati ottimali, utilizza questa funzionalità con il servizio OS Inventory Management o qualsiasi altro strumento di monitoraggio della conformità.
  • Una ricetta software, con un nome specifico, viene eseguita una sola volta quando crei una policy guest. Per eseguire nuovamente una ricetta software, devi:

    1. Rinomina la ricetta software.
    2. Elimina e ricrea la policy ospite utilizzando la ricetta software rinominata.

Autorizzazioni

Poiché puoi utilizzare i criteri guest per installare e gestire pacchetti software su una VM, la creazione e la gestione dei 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 dei criteri e le attività vengono registrate nei log di controllo. Tuttavia, gli utenti possono comunque eseguire codice sulla VM, il che comporta un potenziale rischio per la sicurezza. Per ridurre questo rischio, ti consigliamo di fornire a ogni utente solo l'accesso necessario.

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:

  • GuestPolicy Admin (roles/osconfig.guestPolicyAdmin). Contiene le autorizzazioni per creare, eliminare, aggiornare, ottenere ed elencare le policy guest.
  • Editor GuestPolicy (roles/osconfig.guestPolicyEditor). Contiene le autorizzazioni per recuperare, aggiornare ed elencare le policy per gli ospiti.
  • GuestPolicy Viewer (roles/osconfig.guestPolicyViewer). Contiene le autorizzazioni per l'accesso di sola lettura per recuperare ed elencare le policy per gli ospiti.

Ad esempio, per concedere a un utente l'accesso amministratore 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: il nome utente Google Workspace dell'utente.

Configura la VM

Per utilizzare i criteri guest, devi configurare VM Manager.

Configura un file YAML o JSON dei criteri guest

Devi fornire le specifiche dei criteri per gli ospiti utilizzando un file JSON o YAML. Per visualizzare le configurazioni di esempio, consulta Esempi di file YAML dei criteri per gli ospiti.

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

Compiti

Puoi assegnare policy 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 delle seguenti caratteristiche:

  • Nome dell'istanza. Vedi l'esempio 1.
  • Prefisso del nome dell'istanza. Vedi l'esempio 2.
  • Etichetta dell'istanza. Vedi l'esempio 3.
  • Zona. Vedi l'esempio 4.
  • Informazioni sul sistema operativo, che contengono il nome, la versione e l'architettura del sistema operativo. Vedi l'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 sul sistema operativo, l'agente di configurazione del sistema operativo deve inviare le informazioni sul sistema operativo all'endpoint degli attributi guest per la VM. Per garantire la privacy, per impostazione predefinita, le informazioni sul sistema operativo delle VM non sono disponibili. Per raggruppare le VM in base alle informazioni sul sistema operativo, devi assicurarti che i servizi di gestione dell'inventario degli attributi guest e del sistema operativo siano abilitati. Per abilitare questi servizi, vedi Configurare la VM.

Le configurazioni delle policy guest vengono applicate automaticamente a tutte le nuove VM che corrispondono all'assegnazione.

Configurazione richiesta

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

  • Installa, rimuovi e aggiorna automaticamente i pacchetti software. Vedi l'esempio 1.
  • Configura i repository dei pacchetti software. Vedi l'esempio 1 o l'esempio 3.
  • Installa il software utilizzando le ricette software.

File YAML di esempio per le norme relative a ospiti

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 saperne di più sull'assegnazione di norme per gli ospiti 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 del nome dell'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 ulteriori informazioni sull'assegnazione di policy per gli ospiti per i repository di pacchetti, consulta il documento di riferimento Rappresentazione JSON di PackageRepository.

Esempio 3

Installa my-package e rimuovi bad-package-1 e bad-package-2 dalle istanze con un insieme specifico di etichette. Aggiungi anche i 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 file MSI ospitato su Cloud Storage in tutte le istanze di 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 ulteriori informazioni sulla configurazione delle policy relative alle ricette, consulta il documento di riferimento Rappresentazione JSON di 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 ulteriori informazioni sulla configurazione delle policy relative alle ricette, consulta il documento di riferimento Rappresentazione JSON di SoftwareRecipe.

Esempio 6

Installa l'applicazione su tutte le istanze Windows utilizzando un programma di installazione eseguibile con il seguente prefisso del nome dell'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 ulteriori informazioni sulla configurazione delle policy relative alle ricette, consulta il documento di riferimento Rappresentazione JSON di SoftwareRecipe.

Crea un criterio guest

Quando crei un criterio guest, il nome 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
  • 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:

REST

Nell'API, crea una richiesta POST al 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 della policy guest.

Per visualizzare le configurazioni di esempio, consulta Esempi di file YAML dei criteri per gli ospiti.

Risoluzione dei problemi

Per risolvere i problemi relativi a un criterio guest, vedi Debug di un criterio guest.

Passaggi successivi