Instalar Policy Controller

En esta página se explica cómo instalar Policy Controller. Policy Controller comprueba, audita y aplica el cumplimiento en tus clústeres de políticas relacionadas con la seguridad, las normativas o las reglas empresariales.

Esta página está dirigida a administradores y operadores de TI que quieran asegurarse de que todos los recursos que se ejecutan en la plataforma en la nube cumplen los requisitos de cumplimiento de la organización. Para ello, deben proporcionar y mantener la automatización para auditar o aplicar los requisitos. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.

Policy Controller está disponible si usas Google Kubernetes Engine. Para obtener más información, consulta los precios de Google Kubernetes Engine.

Antes de empezar

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

  1. Instala e inicializa la CLI de Google Cloud, que proporciona los comandos gcloud, kubectl y nomos que se usan en estas instrucciones. Si ya has instalado gcloud CLI, obtén la versión más reciente ejecutando gcloud components update. Si usas Cloud Shell, Google Cloud CLI viene preinstalado.
  2. Comprueba que Open Policy Agent Gatekeeper de código abierto no esté instalado en tu clúster. Si es así, desinstala Gatekeeper antes de instalar Policy Controller.

  3. Habilita las APIs necesarias:

    consola

    Habilita la API Policy Controller.

    Habilitar la API Policy Controller

    gcloud

    Ejecuta el siguiente comando:

    gcloud services enable anthospolicycontroller.googleapis.com
    
  4. Crea un clúster o asegúrate de tener acceso a uno que ejecute una versión de Kubernetes 1.14.x o posterior. Puede que parezca que Policy Controller se ejecuta en versiones de Kubernetes anteriores a la 1.14.x, pero el producto no funciona correctamente.

  5. Concede los roles de gestión de identidades y accesos necesarios al usuario que registre el clúster.

  6. Si tienes previsto usar la CLI de Google Cloud para configurar Policy Controller, registra tu clúster en una flota ahora. Si tienes previsto usar la consola, registra tus clústeres cuando instales Policy Controller. Google Cloud

  7. Si usas clústeres adjuntos de GKE, asegúrate de que tu clúster de AKS no tenga el complemento Azure Policy y evita etiquetar espacios de nombres con la clave control-plane.

  8. Si usas Google Distributed Cloud en VMware o bare metal, asegúrate de instalar Policy Controller en un clúster de usuario. Policy Controller no se puede instalar en un clúster de administrador.

Instalar Policy Controller

Consola

Para instalar Policy Controller en la consola Google Cloud , sigue estos pasos:

  1. En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud

    Ir a la política

  2. Haz clic en Configurar Policy Controller.

  3. Opcional: Para cambiar los ajustes predeterminados de la flota, haz clic en Personalizar ajustes de la flota. En el cuadro de diálogo que aparece, haz lo siguiente:

    1. En la sección Añadir o editar conjuntos de políticas, incluya o excluya un conjunto de políticas haciendo clic en el interruptor correspondiente. Google Cloud
    2. En la sección Edit Policy Controller configuration (Editar configuración de Policy Controller), haga lo siguiente:

      1. Para habilitar el webhook de mutación, marca la casilla Habilitar webhook de mutación. Esta función no es compatible con los clústeres de Autopilot.
      2. En el cuadro Intervalo de auditoría, introduce el periodo en segundos entre dos auditorías consecutivas.
      3. En el cuadro Espacios de nombres que se pueden excluir, introduzca una lista de espacios de nombres. Policy Controller ignora los objetos de estos espacios de nombres. Esta función no es compatible con los clústeres de Autopilot.

        Práctica recomendada:

        Exime los espacios de nombres del sistema para evitar errores en tu entorno. Puedes consultar las instrucciones para excluir espacios de nombres y una lista de los espacios de nombres comunes creados por los servicios de Google Cloud en la página Excluir espacios de nombres.

      4. Para habilitar las restricciones referenciales, marque la casilla Habilitar plantillas de restricción que hagan referencia a objetos distintos al que se está evaluando.

      5. En la lista Versión, selecciona la versión de Policy Controller que quieras usar.

    3. Haz clic en Guardar cambios.

  4. Haz clic en Configurar.

  5. En el cuadro de diálogo de confirmación, haz clic en Confirmar. Si no has habilitado Policy Controller anteriormente, al hacer clic en Confirm (Confirmar) se habilitará la API anthospolicycontroller.googleapis.com y se instalará Policy Controller en tus clústeres.

  6. Opcional: Sincroniza los clústeres con la configuración predeterminada:

    1. En la pestaña Configuración, haga clic en Sincronizar con la configuración de la flota.
    2. En la lista Clusters in the fleet (Clusters de la flota), selecciona los clusters que quieras sincronizar y haz clic en Sync to fleet settings (Sincronizar con la configuración de la flota). Esta operación puede tardar unos minutos en completarse.

Se le redirigirá a la pestaña Configuración de Policy Controller. Cuando Policy Controller se instala y configura en tus clústeres, las columnas de estado muestran Instalado . Este proceso puede tardar varios minutos.

gcloud

Para habilitar Policy Controller, ejecuta el siguiente comando:

gcloud container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

Puedes definir campos adicionales para configurar Policy Controller. Por ejemplo, puede que quieras indicar a Policy Controller que exima a algunos espacios de nombres de la aplicación de las políticas. Para ver una lista completa de los campos que puedes configurar, consulta la documentación de la CLI de Google Cloud de Policy Controller o ejecuta gcloud container fleet policycontroller enable --help.

Para definir la configuración a nivel de flota de Policy Controller, sigue estos pasos:

  1. Crea un archivo llamado fleet-default.yaml que contenga las configuraciones predeterminadas de Policy Controller. El campo installSpec es obligatorio para habilitar los valores predeterminados a nivel de flota. En este ejemplo se muestran las opciones que puedes configurar:

    # cat fleet-default.yaml
    
     policyControllerHubConfig:
      installSpec: INSTALL_SPEC_ENABLED 
      # Uncomment to set default deployment-level configurations.
      # deploymentConfigs:
      #   admission:
      #     containerResources:
      #       limits:
      #        cpu: 1000m
      #         memory: 8Gi
      #       requests:
      #         cpu: 500m
      #         memory: 4Gi
      # Uncomment to set policy bundles that you want to install by default.
      # policyContent:
      #   bundles:
      #     cis-k8s-v1.5.1:
      #       exemptedNamespaces:
      #       - "namespace-name"
      # Uncomment to exempt namespaces from admission.
      # exemptableNamespaces:
      # - "namespace-name"
      # Uncomment to enable support for referential constraints
      # referentialRulesEnabled: true
      # Uncomment to disable audit, adjust value to set audit interval
      # auditIntervalSeconds: 0
      # Uncomment to log all denies and dryrun failures
      # logDeniesEnabled: true
      # Uncomment to enable mutation
      # mutationEnabled: true
      # Uncomment to adjust the value to set the constraint violation limit
      # constraintViolationLimit: 20
      # ... other fields ...
    
    Práctica recomendada:

    Exime los espacios de nombres del sistema para evitar errores en tu entorno. Puedes consultar las instrucciones para excluir espacios de nombres y una lista de los espacios de nombres comunes creados por los servicios de Google Cloud en la página Excluir espacios de nombres.

  2. Aplica la configuración predeterminada a tu flota:

    gcloud container fleet policycontroller enable \
      --fleet-default-member-config=fleet-default.yaml
    
  3. Para verificar que se ha aplicado la configuración, ejecuta el siguiente comando:

    gcloud container fleet policycontroller describe
    
  4. Para quitar la configuración predeterminada a nivel de flota, ejecuta el siguiente comando:

    gcloud container fleet policycontroller enable \
      --no-fleet-default-member-config
    

Terraform

Para habilitar Policy Controller en toda tu flota con la biblioteca de plantillas predeterminada instalada, consulta el siguiente ejemplo:

resource "google_gke_hub_feature" "policycontroller" {
  name     = "policycontroller"
  location = "global"
  project  = data.google_project.default.project_id

  fleet_default_member_config {
    policycontroller {
      policy_controller_hub_config {
        install_spec = "INSTALL_SPEC_ENABLED"
        policy_content {
          bundles {
            bundle = "pss-baseline-v2022"
          }
          template_library {
            installation = "ALL"
          }
        }
      }
    }
  }
}

Puedes transferir varios bloques bundle para instalar cualquiera de los paquetes que se indican en el resumen de paquetes de Policy Controller.

Para obtener más información sobre cómo usar Terraform, consulta Compatibilidad de Terraform con Policy Controller.

Verificar la instalación de Policy Controller

Después de instalar Policy Controller, puedes verificar que se ha completado correctamente.

Consola

Este agente debe seguir estos pasos:

  1. En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud

    Ir a la política

  2. En la pestaña Configuración, en la tabla de clústeres, consulte la columna Estado del controlador de políticas. Si la instalación se ha realizado correctamente, el estado será Instalado .

gcloud

Ejecuta el siguiente comando:

gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME

Si la instalación se ha realizado correctamente, aparecerá membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE.

Verificar la instalación de la biblioteca de plantillas de restricciones

Cuando instalas Policy Controller, la biblioteca de plantillas de restricción se instala de forma predeterminada. La instalación puede tardar varios minutos en completarse. Puedes comprobar que la biblioteca de plantillas se ha completado correctamente.

Consola

Este agente debe seguir estos pasos:

  1. En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud

    Ir a la política

  2. En la pestaña Configuración, en la tabla de clústeres, seleccione el número que aparece en la columna Paquetes instalados. En el panel Estado del contenido de la política, si la biblioteca de plantillas se ha instalado correctamente, el estado será Instalado .

gcloud

Ejecuta el siguiente comando:

kubectl get constrainttemplates

Debería ver un resultado similar al siguiente ejemplo:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Cuando una plantilla de restricción individual se instala correctamente, su campo status.created es true.

Interacciones de Policy Controller con Config Sync

Si usas Policy Controller con Config Sync, debes tener en cuenta las siguientes interacciones con los recursos almacenados en tu fuente de información principal, como un repositorio de Git, que Config Sync sincroniza:

  • No puedes sincronizar una plantilla de restricción que también forme parte de la biblioteca de plantillas, a menos que esta esté inhabilitada.

  • Si quieres sincronizar el recurso Config almacenado en el espacio de nombres gatekeeper-system, solo debes definir el recurso Config en la fuente de información veraz. No se debe definir el gatekeeper-system Namespace.

Configurar métricas

De forma predeterminada, Policy Controller intenta exportar métricas a Prometheus y a Cloud Monitoring. Es posible que tengas que completar pasos de configuración adicionales, como conceder permisos, para permitir que Policy Controller exporte métricas. Para obtener más información, consulta Usar métricas de Policy Controller.

Gestionar la biblioteca de plantillas de restricciones

Para obtener información sobre cómo desinstalar o instalar plantillas de restricciones, las restricciones asociadas o la biblioteca de plantillas de restricciones, consulta Crear restricciones.

Eximir espacios de nombres de la aplicación

Puedes configurar Policy Controller para que ignore los objetos de un espacio de nombres. Para obtener más información, consulta el artículo sobre cómo excluir espacios de nombres de Policy Controller.

Cambiar recursos

Policy Controller también actúa como webhook de mutación. Para obtener más información, consulta Cambiar recursos.

Ver la versión de Policy Controller

Para saber qué versión de Gatekeeper Policy Controller se está usando, consulta la etiqueta de imagen ejecutando el siguiente comando:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

La etiqueta de Git (o hash) que se ha usado para compilar Gatekeeper y el número de versión del operador ConfigManagement se incluyen en la etiqueta de imagen de la siguiente manera:

.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER

Por ejemplo, en la siguiente imagen:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 es el número de versión.
  • 480baac es la etiqueta de Git.
  • 0 es el número de compilación.

Actualizar Policy Controller

Antes de actualizar Policy Controller, consulta las notas de la versión para obtener información sobre los cambios que se han producido entre las versiones.

Para actualizar Policy Controller, sigue estos pasos:

Consola

  1. En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud

    Ir a la política

  2. En la pestaña Configuración, junto al clúster cuya versión quieras actualizar, selecciona Editar configuración.
  3. Despliega el menú Editar configuración de Policy Controller.
  4. En la lista desplegable Versión, selecciona la versión a la que quieras actualizar.
  5. Haz clic en Guardar cambios.

gcloud

Ejecuta el siguiente comando:

gcloud container fleet policycontroller update \
  --version=VERSION \
  --memberships=MEMBERSHIP_NAME

Haz los cambios siguientes:

  • VERSION: la versión a la que quieres actualizar
  • MEMBERSHIP_NAME: el nombre de la suscripción que elegiste al registrar tu clúster. Para encontrar el nombre de la pertenencia, ejecuta gcloud container fleet memberships list.

Desinstalar Policy Controller

Sigue estos pasos para desinstalar Policy Controller de tus clústeres.

Consola

Para inhabilitar Policy Controller en tus clústeres, sigue estos pasos:

  1. En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud

    Ir a la política

  2. En la pestaña Configuración, en la tabla de clústeres, seleccione Editar en la columna Editar configuración.
  3. En el panel de clústeres, despliega el menú Acerca de Policy Controller.
  4. Selecciona Desinstalar Policy Controller.
  5. Para confirmar la desinstalación, sigue las instrucciones del cuadro de diálogo de confirmación y selecciona Confirmar.

Cuando se desinstala Policy Controller, en las columnas de estado se muestra No instalado .

gcloud

Para desinstalar Policy Controller, ejecuta el siguiente comando:

gcloud container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

Sustituye MEMBERSHIP_NAME por el nombre de pertenencia del clúster registrado en el que quieras inhabilitar Policy Controller. Puedes especificar varias suscripciones separadas por comas.

RBAC y permisos de Policy Controller

Policy Controller incluye cargas de trabajo con privilegios elevados. Los permisos de estas cargas de trabajo se describen en la documentación de operaciones de Open Policy Agent Gatekeeper.

Siguientes pasos