Crea una política de invitado (heredada)


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

  • Revisa las cuotas de configuración del SO.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

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 hace en intervalos de 10 a 15 minutos.
  • No hay paneles de cumplimiento, notificaciones ni servicios de alertas disponibles con estas políticas de invitado del SO heredadas. 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 las políticas de invitado, 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.

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

Usa uno de los siguientes métodos para crear una política de invitado.

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.

REST

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