Azure Policy y cómo se integra con Azure Kubernetes Services
- 10 minutos
Azure Policy es un servicio de Azure que le ayuda a administrar el estado de cumplimiento en diferentes servicios de Azure. Azure Policy para Kubernetes permite usar las mismas directivas de Azure en los clústeres de Kubernetes, lo que le permite administrar el estado de cumplimiento de los recursos de Kubernetes, como pods, implementaciones y servicios como si fueran un recurso de Azure.
Introducción a Azure Policy
Azure Policy permite administrar el estado de cumplimiento de los servicios de Azure. Funciona comparando el estado de los recursos de Azure con las reglas de negocio que defina. Las reglas comunes son la limitación de determinadas regiones, el requisito de etiquetas de recursos o la limitación de los servicios de Azure que se pueden usar.
La forma en que define estas reglas de negocio en Azure Policy es mediante definiciones de directivas. Hay muchas directivas integradas que abarcan una variedad de escenarios comunes. Si una de las directivas integradas no satisface sus necesidades, también puede definir una directiva personalizada mediante un lenguaje basado en JSON. También puede agrupar varias definiciones de directiva en una iniciativa.
En una definición de directiva, se define una condición de cumplimiento de recursos y el efecto que se debe tomar si se cumple esa condición. Una condición compara las propiedades de un recurso con un valor necesario. Un ejemplo de una condición podría comparar la ubicación de un recurso frente a una lista predefinida de ubicaciones permitidas. El efecto de una directiva puede ser auditar la condición, denegar la creación del recurso o modificar el recurso creado. En el ejemplo de la ubicación de un recurso, podría denegar la creación de recursos que no están en la lista de ubicaciones permitidas. Para obtener una explicación más detallada de las definiciones de directiva, consulte la estructura de definición de Azure Policy.
Azure Policy funciona asignando una definición de directiva o una iniciativa a un ámbito específico. Un ámbito puede ser un grupo de administración, una suscripción o un grupo de recursos. Las asignaciones de directivas se heredan automáticamente en todos los ámbitos que estén por debajo de la asignación, a menos que se realice una exclusión. Varias definiciones de directiva se pueden aplicar a un ámbito determinado. El resultado neto de las definiciones de directiva de capas se considera más restrictivo acumulativo: si se aplican varias directivas a un determinado recurso, ese recurso solo es compatible si todas las definiciones de directiva que se aplican a él son compatibles.
Las asignaciones de directivas se evalúan durante la creación o actualización de los recursos de Azure. También se evalúan si se cambia la definición o el ámbito y periódicamente para la supervisión continua. Prácticamente, la directiva surte efecto inmediatamente al crear nuevos recursos. También se examinan los recursos históricos, por lo que obtiene una visión de conjunto del cumplimiento de todos los recursos.
Integración de Azure Policy con AKS
Hay dos maneras de integrar Azure Policy con Azure Kubernetes Service (AKS).
- Directivas que aplican el cumplimiento en el plano de control de Azure para AKS.
- Directivas que aplican el cumplimiento en la carga de trabajo que se ejecuta en el clúster.
El primer conjunto de directivas se centra más en los recursos de Azure que representan el diseño del clúster, mientras que el segundo conjunto de directivas se centra en las cargas de trabajo que se ejecutan dentro del clúster.
Una directiva de ejemplo centrada en el plano de control de Azure para AKS es la directiva para aplicar el uso de clústeres privados. La directiva evalúa si un clúster de AKS usa o no la funcionalidad del clúster privado. Esta directiva es una configuración en la API de Azure que controla el diseño del propio clúster.
Un ejemplo del conjunto de directivas centradas en la carga de trabajo que se ejecuta en el clúster es la directiva para aplicar el uso de imágenes permitidas. La directiva evalúa si una definición de pod en Kubernetes usa una imagen que coincide con una expresión regular determinada. Esta directiva es una configuración dentro del propio clúster y no interactúa con la API de Azure.
El primer conjunto de directivas funciona con la propia Azure API. El segundo conjunto de directivas interactúa con la API de Kubernetes. Para aplicar y ejecutar estas directivas de seguridad integradas, debe configurar el complemento de Azure Policy para AKS en el clúster de AKS.
Descripción de cómo funciona Azure Policy para AKS internamente
Para aplicar directivas sobre la API de Kubernetes, Azure Policy para Kubernetes usa muchas herramientas: a saber, webhooks de admisión, Open Policy Agent (OPA), Gatekeeper y, por último, un pod de Azure Policy.
Azure Policy usa webhooks de admisión en Kubernetes. Los webhooks de admisión son una funcionalidad integrada de la API de Kubernetes. Permiten que la API de Kubernetes llame a un webhook externo para validar si una solicitud para crear, eliminar, modificar o conectarse a un recurso debe permitirse o denegarse (); o si se debe cambiar la solicitud (ValidatingAdmissionWebhook
MutatingAdmissionWebhook
).
Open Policy Agent (OPA) es un motor de directivas de código abierto. OPA proporciona un lenguaje de alto nivel en el que definir directivas. Puede usar OPA para aplicar directivas en sus propios microservicios, en canalizaciones de CI/CD y en Kubernetes. Azure Policy para Kubernetes traduce las directivas de Azure en el lenguaje OPA que se va a implementar en el clúster de Kubernetes.
OPA Gatekeeper es una implementación específica de Kubernetes de OPA que se integra con la API de Kubernetes. Se integra con los webhooks de admisión presentados antes. En lugar de tener que implementar controladores de webhook propios, puede usar OPA Gatekeeper para dar servicio a las respuestas de webhook de admisión. Azure Policy para Kubernetes implementa OPA Gatekeeper en el clúster de Kubernetes para lograr esta funcionalidad.