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:
- Asigna los permisos necesarios a los usuarios.
- Configura la VM.
- Configura el archivo JSON o YAML de la política de invitado.
- Crea la política de invitado.
Antes de comenzar
- Si deseas usar los ejemplos de línea de comandos de esta guía, haz lo siguiente:
- Instala Google Cloud CLI o actualízala a la última versión.
- Configura una región y una zona predeterminadas.
- Si deseas usar los ejemplos de API de esta guía, configura el acceso a la API.
- Revisar Límites de frecuencia y recursos de la API de SO Config
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:
- Cambia el nombre de la receta de software.
- 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:
- La sección de asignación, que contiene la lista de VM de destino.
- La sección de configuración necesaria, que contiene el estado que deseas mantener en las VM.
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 crearFILE
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 proyectoPOLICY_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
- Obtén más información sobre el servicio de administración de configuración del SO (beta).
- Administrar políticas de invitado.