Ejecutar agentes de VM en todos los nodos de GKE de las organizaciones


En esta página se describe cómo asegurarse de que VM Manager esté habilitado en todas las instancias de Compute Engine, incluidas las VMs de Google Kubernetes Engine de una organización, una carpeta o un proyecto, mediante el servicio de políticas de la organización.

Esta guía está dirigida a los equipos de seguridad que quieran asegurarse de que todos los programas necesarios, como los agentes de seguridad y monitorización, se ejecuten en todas las instancias de una organización, una carpeta o un proyecto. Para aplicar la configuración solo con la política de organización, consulta esta guía. Para usar la configuración como código, usa Config Sync. Config Sync te permite configurar y controlar muchos aspectos de tus clústeres y te ofrece ventajas que van más allá de las políticas de la organización.

Antes de leer esta página, asegúrese de que ya conoce VM Manager y las restricciones de Resource Manager.

En esta guía se explica cómo aplicar el uso de Gestor de VMs en todos los proyectos de una organización o carpeta. En esta guía no se explica cómo configurar y usar Gestor de VMs con políticas de SO. Para ver esas instrucciones, consulta el artículo Crear una asignación de política de SO.

Acerca de VM Manager

VM Manager es un paquete de herramientas que sirve para gestionar los sistemas operativos de grandes flotas de máquinas virtuales que utilicen Windows o Linux en Compute Engine. Puedes usar VM Manager para aplicar políticas de SO y personalizar los programas que se ejecutan en las VMs. Por ejemplo, puedes definir una política para instalar un agente en un recurso y reutilizarla en varios recursos. VM Manager está inhabilitado de forma predeterminada en los proyectos deGoogle Cloud .

Puedes definir con mayor precisión dónde aplica VM Manager las políticas mediante OSPolicyAssignments, que te permite acotar las políticas de SO a VMs específicas mediante selectores. Por ejemplo, todas las VMs de nodos de GKE tienen la etiqueta goog-gke-node, a la que puedes orientar una asignación de política de SO.

Políticas de organización y VM Manager

Si tu organización tiene varios niveles de jerarquía, como carpetas y subcarpetas, habilitar Gestor de VMs en todos estos proyectos manualmente puede provocar una sobrecarga de gestión innecesaria. Google Cloud Puedes requerir que todos los proyectos de las carpetas o de una organización habiliten VM Manager en todas las VMs mediante el servicio de políticas de la organización con la restricción constraints/compute.requireOsConfig. Estas son algunas de las ventajas de aplicar VM Manager mediante una política de organización:

  • En todos los proyectos nuevos se añade la etiqueta de metadatos enable-osconfig=TRUE a cada proyecto y máquina virtual.
  • Si alguien intenta quitar esta etiqueta o asignarle un valor distinto de true, el cambio se rechazará.
  • Si alguien intenta crear o actualizar una VM de forma que se asigne a la clave de metadatos enable-osconfig un valor distinto de true, se rechazará el cambio.

Antes de empezar

Antes de empezar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.
  • Asegúrate de que ya estás usando VM Manager con políticas de SO y asignaciones de políticas de SO para ejecutar agentes en tus VMs. Para obtener instrucciones, consulta el artículo Crear una asignación de política de SO.
  • Enable the Cloud Resource Manager API, OS Config API APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Limitaciones

La política de organización constraints/compute.requireOsConfig tiene las siguientes limitaciones:

  • Los recursos con infracciones anteriores no se ven afectados por la nueva política de la organización. Puedes definir los metadatos de la política manualmente o mediante gcloud en los recursos que ya tengas.
  • Cualquier persona que tenga permiso para cambiar los metadatos de las instancias de Compute Engine del proyecto puede inhabilitar el osconfig-agent en la VM configurando el campo de metadatos osconfig-disabled-features.
  • Si osconfig-agent no se está ejecutando, la VM aparece como no conforme en el panel de control de Gestor de VMs. Por ejemplo, esto puede ocurrir si un usuario ha inhabilitado el agente manualmente.

Roles obligatorios

Para obtener los permisos que necesitas para gestionar las políticas de la organización, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de políticas de la organización (roles/orgpolicy.policyAdmin) en la organización. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Habilitar compute.requireOsConfig en una organización

Una vez que hayas habilitado VM Manager y hayas definido el ámbito de un OSPolicyAssignment en tus VMs, puedes asegurarte de que VM Manager esté habilitado de forma predeterminada en los proyectos nuevos con la política de organización constraints/compute.requireOsConfig. La forma de aplicar constraints/compute.requireOsConfig depende de la versión de la API que utilices.

API Organization Policy v2

Puedes aplicar la restricción constraints/compute.requireOsConfig en un recursoGoogle Cloud , como una carpeta o una organización, mediante la CLI de gcloud o la consola Google Cloud .

gcloud

  1. Confirma que la restricción compute.requireOsConfig no se ha aplicado ya:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig \
        --organization=ORGANIZATION_ID
    

    Sustituye ORGANIZATION_ID por tu ID de organización.

    Si no se ha definido ninguna política, este comando devuelve un error NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    

    Si la política existe, el comando devuelve la política actual. Si aplicas una política nueva, se sobrescribirá la política actual, si la hay.

  2. Crea un archivo temporal /tmp/policy.yaml para almacenar la política:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    
  3. Ejecuta el comando set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml
    
  4. Confirma que la nueva política se ha aplicado:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig --effective \
        --organization=ORGANIZATION_ID
    

    El resultado del comando es similar al siguiente:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    

consola

  1. En la Google Cloud consola, ve a la página Políticas de la organización.

    Ir a Políticas de organización

  2. En el selector de proyectos, selecciona el proyecto, la carpeta o la organización para los que quieras editar las políticas de la organización.

  3. En la página Políticas de la organización, usa el filtro para buscar compute.requireOsConfig.

  4. Haz clic en el nombre de la política para abrir la página Detalles de la política.

  5. Haz clic en Gestionar política para actualizar la política de la organización de este recurso.

  6. En la página Editar política, selecciona Anular política del recurso superior.

  7. Selecciona Añadir una regla.

  8. En Cumplimiento, cambia el cumplimiento de esta política de la organización a activado.

  9. Para aplicar la política, haz clic en Definir política.

API Resource Manager v1

  1. Confirma que la restricción compute.requireOsConfig no se ha aplicado ya:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    Sustituye ORGANIZATION_ID por tu ID de organización.

    Si no se ha definido ninguna política, este comando devuelve una política incompleta, como en el siguiente ejemplo:

    constraint: "constraints/compute.requireOsConfig"
    etag: BwVJi0OOESU=
    

    Si la política existe, el comando devuelve la política actual. Si aplicas una política nueva, se sobrescribirá la política actual, si la hay.

  2. Define la política que se aplicará en la organización:

    gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    El resultado del comando es similar al siguiente:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    etag: BwVJitxdiwY=
    
  3. Confirma que la nueva política se ha aplicado:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --effective \
        --organization ORGANIZATION_ID
    

    El resultado del comando es similar al siguiente:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    

Los cambios en las políticas de la organización pueden tardar hasta 15 minutos en aplicarse por completo.

Para obtener más información sobre otras políticas que puede aplicar o sobre cómo modificar o eliminar políticas, consulte la documentación de Resource Manager.

Siguientes pasos

Consulta más información sobre los registros de auditoría de GKE.