Crea una política de invitado (beta)

Usa las políticas de invitado para mantener una configuración de software coherente en las instancias de máquinas virtuales (VM) de Linux y Windows.

Para configurar una política de invitado en un conjunto de VM, completa los siguientes pasos:

  1. Asigna los permisos necesarios a los usuarios.
  2. Configura la VM.
  3. Configura el archivo JSON o YAML de la política de invitado.
  4. Crea la política de invitado.

Antes de comenzar

Sistemas operativos compatibles

Para obtener una lista completa de los sistemas operativos y las versiones compatibles con la Administración de configuración del SO (beta), consulta Detalles de los sistemas operativos.

Limitaciones

  • Para las VM orientadas, la política de invitado se actualiza cada vez que el agente se verifica con el servicio. Esta verificación se realiza en intervalos de 10 a 15 minutos.
  • No hay paneles de cumplimiento, notificaciones ni servicios de alertas disponibles con esta versión Beta. Las VM que no ejecutan el agente de configuración del SO no informan errores. Para obtener mejores resultados, usa esta función con el servicio OS Inventory Management o cualquier otra herramienta de supervisión de cumplimiento.
  • Una receta de software, con un nombre específico, solo se ejecuta una vez cuando creas una política de invitado. Para volver a ejecutar una receta de software, debes hacer lo siguiente:

    1. Cambia el nombre de la receta de software.
    2. Borra y vuelve a crear la política de invitado con la receta de software con nombre cambiado.

Permisos

Debido a que puedes usar políticas de invitado para instalar y administrar paquetes de software en una VM, la creación y administración de políticas de invitado equivale a otorgar acceso de ejecución de código remoto en una VM.

Cuando configuras las políticas de invitado, los permisos de IAM se usan para controlar el acceso a los recursos y las actividades de la política que se registran en la auditoría. Sin embargo, los usuarios aún pueden ejecutar código en la VM, lo que implica un riesgo de seguridad potencial. Para mitigar este riesgo, te recomendamos que proporciones solo el acceso requerido a cada usuario.

Los propietarios de un proyecto tienen acceso completo para crear y administrar políticas. Para el resto de los usuarios, debes otorgar permisos. Puedes otorgar una de las siguientes funciones detalladas:

  • Administrador de GuestPolicy (roles/osconfig.guestPolicyAdmin). Contiene permisos para crear, borrar, 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.
  • Visualizador de GuestPolicy (roles/osconfig.guestPolicyViewer). Contiene permisos de acceso de solo lectura para obtener y enumerar políticas de invitados.

Por ejemplo, si deseas otorgarle acceso a un administrador de usuarios a las políticas de invitado, ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

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

Configura la VM.

Para usar el servicio de Administración de configuración del SO, debes configurar VM Manager.

Configura un archivo YAML o JSON de política de invitados

Debes proporcionar las especificaciones de la política de invitados mediante un archivo JSON o YAML. Para ver opciones de configuración de muestra, consulta los archivos YAML de política de invitado de ejemplo.

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

Tareas

Puedes asignar políticas de invitado a todas las VM del proyecto o puedes usar la clave assignment en tu archivo JSON o YAML para apuntar a un grupo específico de VM.

Por ejemplo, puedes apuntar un grupo de VM mediante cualquiera de las siguientes opciones:

  • El nombre de la instancia. Consulta el ejemplo 1.
  • El prefijo del nombre de la instancia. Consulta el ejemplo 2.
  • La etiqueta de la instancia. Consulta el ejemplo 3.
  • La zona. Consulta el ejemplo 4.
  • La información del sistema operativo, que contiene el nombre, la versión y la arquitectura del SO. Consulta el ejemplo 5. El comando os-inventory describe se puede usar para determinar el nombre del SO, la versión y la arquitectura de las VM.

Para asignar una política de invitado mediante la información del sistema operativo, el agente de configuración del SO debe enviar la información del sistema operativo al extremo de los atributos de invitado para la VM. Para garantizar la privacidad, la información del sistema operativo de las VM no está disponible de forma predeterminada. Para agrupar las VM por información del sistema operativo, debes asegurarte de que los atributos de invitado y servicios de OS Inventory Management estén habilitados. Para habilitar estos servicios, consulta la sección sobre cómo configurar tu VM.

La configuración de políticas de invitado se aplica de forma automática a todas las VM nuevas que coinciden con la asignación.

Configuración necesaria

La configuración necesaria se puede aplicar mediante una o varias de las siguientes tareas:

  • Instala, quita y actualiza de forma automática paquetes de software. Consulta el ejemplo 1.
  • Configurar repositorios de paquetes de software Consulta el ejemplo 1 o el ejemplo 3.
  • Instala el software mediante recetas de software.

Archivos YAML de políticas de invitado de ejemplo

Ejemplo 1

Instala 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

A fin de obtener más información sobre cómo asignar políticas de invitado para paquetes, consulta el documento de referencia sobre la representación JSON de paquetes.

Ejemplo 2

Instala el agente de Cloud Monitoring, mediante el administrador de paquetes de 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

Si deseas obtener más información sobre cómo asignar políticas de invitado para los repositorios de paquetes, consulta el documento de referencia de la representación JSON de PackageRepository.

Ejemplo 3

Instala my-package y quita bad-package-1 y bad-package-2 de las instancias con un conjunto específico de etiquetas. También agrega repositorios para los administradores de paquetes de 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
  • A fin de obtener más información sobre cómo asignar políticas de invitado para paquetes, consulta el documento de referencia sobre la representación JSON de paquetes.
  • Si deseas obtener más información sobre cómo asignar políticas de invitado para los repositorios de paquetes, consulta el documento de referencia de la representación JSON de PackageRepository.

Ejemplo 4

Instala el software de un MSI alojado en Cloud Storage en todas las instancias de 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 cómo configurar las políticas de recetas, consulta el documento de referencia de la representación JSON de SoftwareRecipe.

Ejemplo 5

Instala el software mediante la ejecución de una secuencia de comandos intercalada 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 cómo configurar las políticas de recetas, consulta el documento de referencia de la 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 cómo configurar las políticas de recetas, consulta el documento de referencia de la representación JSON de SoftwareRecipe.

Crea una política de invitado.

Puedes crear una política de invitado mediante Google Cloud CLI o la API de configuración del SO.

Cuando creas una política de invitado, el nombre de la política de invitado debe cumplir con los siguientes requisitos de denominación:

  • Contener solo letras minúsculas, números y guiones
  • Comenzar 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

En Google Cloud CLI y en la API de configuración del SO, el nombre de la política de invitado se conoce como POLICY_ID.

gcloud

Usa 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

Reemplaza lo siguiente:

  • POLICY_ID por el nombre de la política de invitado que deseas crear
  • FILE por el archivo JSON o YAML que contiene las especificaciones de la política de invitado Para ver opciones de configuración de muestra, consulta los archivos YAML de política de invitado de ejemplo.

API

En la API, crea 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
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • POLICY_ID por el nombre de la política de invitado

Para ver opciones de configuración de muestra, consulta los archivos YAML de política de invitado de ejemplo.

Soluciona problemas

Para solucionar problemas de una política de invitado, consulta Depura una política de invitado.

Próximos pasos