Crear una política de invitados (heredada)

Utilice políticas de invitados para mantener configuraciones de software coherentes en instancias de máquinas virtuales (VM) de Linux y Windows.

Para configurar una política de invitado en un conjunto de máquinas virtuales, complete los siguientes pasos:

  1. Asigne los permisos necesarios a los usuarios.
  2. Configure su máquina virtual .
  3. Configure el archivo JSON o YAML de la política de invitados.
  4. Crea la política de invitados .

Antes de comenzar

Limitaciones

  • Para las máquinas virtuales específicas, la política de invitados se actualiza cada vez que el agente se registra en el servicio. Esta verificación se realiza cada 10 a 15 minutos.
  • No hay paneles de cumplimiento, notificaciones ni servicios de alerta disponibles con las políticas de invitado de este sistema operativo heredado. Las máquinas virtuales que no ejecutan el agente de configuración del sistema operativo no informan errores. Para obtener mejores resultados, utilice esta función con el servicio de administración de inventario del sistema operativo o cualquier otra herramienta de monitoreo de cumplimiento.
  • Una receta de software, con un nombre específico, solo se ejecuta una vez cuando crea una política de invitado. Para volver a ejecutar una receta de software, debe hacer lo siguiente:

    1. Cambie el nombre de la receta del software.
    2. Elimine y vuelva a crear la política de invitados utilizando la receta de software renombrada.

Permisos

Dado que puede utilizar políticas de invitado para instalar y administrar paquetes de software en una máquina virtual, la creación y administración de políticas de invitado equivale a otorgar acceso de ejecución remota de código en una máquina virtual.

Cuando configura políticas de invitados, los permisos de IAM se utilizan para controlar el acceso al recurso de políticas y las actividades se registran de auditoría. Sin embargo, los usuarios aún pueden ejecutar código en la máquina virtual, lo que representa un riesgo potencial para la seguridad. Para mitigar esto, le recomendamos que proporcione solo el acceso requerido a cada usuario.

Los propietarios de un proyecto tienen acceso completo para crear y administrar políticas. Para todos los demás usuarios, debe otorgar permisos. Puede otorgar uno de los siguientes roles granulares:

  • Administrador de GuestPolicy ( roles/osconfig.guestPolicyAdmin ). Contiene permisos para crear, eliminar, actualizar, obtener y enumerar políticas de invitados.
  • Editor de GuestPolicy ( roles/osconfig.guestPolicyEditor ). Contiene permisos para obtener, actualizar y enumerar políticas de invitados.
  • Visor de GuestPolicy ( roles/osconfig.guestPolicyViewer ). Contiene permisos de acceso de solo lectura para obtener y enumerar políticas de invitados.

Por ejemplo, para otorgar a un usuario acceso de administrador a las políticas de invitados, ejecute el siguiente comando:

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

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto.
  • USER_ID : el nombre de usuario de Google Workspace del usuario.

Configura tu máquina virtual

Para utilizar políticas de invitados, debe configurar VM Manager .

Configurar un archivo yaml o JSON de política de invitados

Debe proporcionar especificaciones de la política de invitados mediante un archivo JSON o YAML. Para ver configuraciones de muestra, consulte archivos YAML de políticas de invitados de ejemplo .

El archivo YAML o JSON contiene las dos secciones principales siguientes:

Asignaciones

Puede asignar políticas de invitado a todas las máquinas virtuales de su proyecto o puede usar la clave assignment en su archivo JSON o YAML para apuntar a un grupo específico de máquinas virtuales.

Por ejemplo, puede dirigirse a un grupo de máquinas virtuales utilizando cualquiera de las siguientes características:

  • Nombre de la instancia. Ver ejemplo 1 .
  • Prefijo del nombre de la instancia. Ver ejemplo 2 .
  • Etiqueta de instancia. Ver ejemplo 3 .
  • Zona. Ver ejemplo 4 .
  • Información del sistema operativo, que contiene el nombre, la versión y la arquitectura del sistema operativo. Ver ejemplo 5 . El comando os-inventory describe se puede utilizar para determinar el nombre del sistema operativo, la versión y la arquitectura de las máquinas virtuales.

Para asignar una política de invitado utilizando información del sistema operativo, el agente de configuración del sistema operativo debe enviar información del sistema operativo al punto final de atributos de invitado para la VM. Para garantizar la privacidad, de forma predeterminada, la información del sistema operativo de las máquinas virtuales no está disponible. Para agrupar máquinas virtuales por información del sistema operativo, debe asegurarse de que los atributos de invitado y los servicios de administración de inventario del sistema operativo estén habilitados. Para habilitar estos servicios, consulte Configurar su VM .

Las configuraciones de la política de invitados se aplican automáticamente a todas las máquinas virtuales nuevas que coincidan con la asignación.

Configuración requerida

La configuración requerida se puede lograr utilizando cualquiera o una combinación de las siguientes tareas:

  • Instalar, eliminar y actualizar automáticamente paquetes de software. Ver ejemplo 1 .
  • Configurar repositorios de paquetes de software. Vea el ejemplo 1 o el ejemplo 3 .
  • Instale software utilizando recetas de software.

Ejemplos de archivos YAML de política de invitados

Ejemplo 1

Instale el paquete my-package que debe mantenerse actualizado en las siguientes instancias de VM: my-instance-1 y 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

Para obtener más información sobre la asignación de políticas de invitado para paquetes, consulte el documento de referencia de representación JSON del paquete .

Ejemplo 2

Instale el agente de Cloud Monitoring mediante el administrador de paquetes yum en todas las instancias de VM que tengan cualquiera de los siguientes prefijos de nombre de instancia: 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

Para obtener más información sobre la asignación de políticas de invitado para repositorios de paquetes, consulte el documento de referencia de representación JSON de PackageRepository .

Ejemplo 3

Instale my-package y elimine bad-package-1 y bad-package-2 de instancias con un conjunto específico de etiquetas. Agregue también repositorios para los administradores de paquetes apt y 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

Ejemplo 4

Instale software desde una MSI alojada en Cloud Storage en todas las instancias en us-east1-b y 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"

Para obtener más información sobre la configuración de políticas de recetas, consulte el documento de referencia de representación JSON de SoftwareRecipe .

Ejemplo 5

Instale el software ejecutando un script en línea en todas las instancias de VM que cumplan con los siguientes requisitos:

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

Para obtener más información sobre la configuración de políticas de recetas, consulte el documento de referencia de representación JSON de SoftwareRecipe .

Ejemplo 6

Instala la aplicación en todas las instancias de Windows mediante un instalador ejecutable que tiene el siguiente prefijo de nombre de instancia: 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

Para obtener más información sobre la configuración de políticas de recetas, consulte el documento de referencia de representación JSON de SoftwareRecipe .

Crear una política de invitados

Cuando crea una política de invitado, el nombre de la política de invitado debe cumplir con los siguientes requisitos de nomenclatura:

  • Contener sólo letras minúsculas, números y guiones
  • empezar con una letra
  • Terminar con un número o una letra.
  • Tener entre 1 y 63 caracteres
  • Cada ID de política debe ser único dentro de un proyecto.

Utilice uno de los siguientes métodos para crear una política de invitados.

nube de gcloud

Utilice el comando os-config guest-policies create para crear una política de invitado.

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

Reemplace lo siguiente:

  • POLICY_ID : el nombre de la política de invitados que desea crear.
  • FILE : archivo JSON o YAML que contiene las especificaciones de la política de invitados. Para ver configuraciones de muestra, consulte Ejemplos de archivos YAML de política de invitados .

DESCANSAR

En la API, cree una solicitud POST para el método projects.guestPolicies.create .

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

{
 For more information, see Guest policy JSON
}

Reemplace lo siguiente:

  • PROJECT_ID : su ID de proyecto.
  • POLICY_ID : el nombre de su política de invitados.

Para ver configuraciones de muestra, consulte archivos YAML de políticas de invitados de ejemplo .

Solución de problemas

Para solucionar problemas de una política de invitado, consulte Depuración de una política de invitado .

¿Qué sigue?