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:
- Instala e inicializa la CLI de Google Cloud, que proporciona los comandos
gcloud
,kubectl
ynomos
que se usan en estas instrucciones. Si ya has instalado gcloud CLI, obtén la versión más reciente ejecutandogcloud components update
. Si usas Cloud Shell, Google Cloud CLI viene preinstalado. 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.
Habilita las APIs necesarias:
consola
Habilita la API Policy Controller.
gcloud
Ejecuta el siguiente comando:
gcloud services enable anthospolicycontroller.googleapis.com
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.
Concede los roles de gestión de identidades y accesos necesarios al usuario que registre el clúster.
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
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
.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:
- En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud
Haz clic en add Configurar Policy Controller.
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:
- 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
En la sección Edit Policy Controller configuration (Editar configuración de Policy Controller), haga lo siguiente:
- 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.
- En el cuadro Intervalo de auditoría, introduce el periodo en segundos entre dos auditorías consecutivas.
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.
Para habilitar las restricciones referenciales, marque la casilla Habilitar plantillas de restricción que hagan referencia a objetos distintos al que se está evaluando.
En la lista Versión, selecciona la versión de Policy Controller que quieras usar.
Haz clic en Guardar cambios.
Haz clic en Configurar.
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.Opcional: Sincroniza los clústeres con la configuración predeterminada:
- En la pestaña Configuración, haga clic en Sincronizar con la configuración de la flota.
- 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 check_circle. 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:
Crea un archivo llamado
fleet-default.yaml
que contenga las configuraciones predeterminadas de Policy Controller. El campoinstallSpec
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.
Aplica la configuración predeterminada a tu flota:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Para verificar que se ha aplicado la configuración, ejecuta el siguiente comando:
gcloud container fleet policycontroller describe
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:
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:
- En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud
- 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 check_circle.
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:
- En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud
- 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 check_circle.
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 nombresgatekeeper-system
, solo debes definir el recursoConfig
en la fuente de información veraz. No se debe definir elgatekeeper-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
- En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud
- En la pestaña Configuración, junto al clúster cuya versión quieras actualizar, selecciona edit Editar configuración.
- Despliega el menú Editar configuración de Policy Controller.
- En la lista desplegable Versión, selecciona la versión a la que quieras actualizar.
- 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 actualizarMEMBERSHIP_NAME
: el nombre de la suscripción que elegiste al registrar tu clúster. Para encontrar el nombre de la pertenencia, ejecutagcloud 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:
- En la consola, vaya a la página Política de la sección Gestión de postura. Google Cloud
- En la pestaña Configuración, en la tabla de clústeres, seleccione Editar edit en la columna Editar configuración.
- En el panel de clústeres, despliega el menú Acerca de Policy Controller.
- Selecciona Desinstalar Policy Controller.
- 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 do_not_disturb_on.
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
- Consulta más información sobre Policy Controller.
- Consulta más información sobre los paquetes de Policy Controller.
- Consulta cómo crear una restricción.
- Solucionar problemas de Policy Controller.