Azure Policy y cómo se integra con Azure Kubernetes Services

Completado

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 le permite usar también 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. Para ello, compara 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 manera de definir estas reglas de negocio en Azure Policy es mediante definiciones de directiva. Hay muchas directivas integradas que abarcan una variedad de escenarios comunes. Si una de las directivas integradas no satisface las 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 obligatorio. Un ejemplo de una condición podría ser comparar la ubicación de un recurso con 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 definiciones de Azure Policy.

Para funcionar, Azure Policy asigna 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 directiva se heredan automáticamente en todos los ámbitos debajo de la asignación, a menos que se realice una exclusión. Se pueden aplicar varias definiciones de directiva a un ámbito determinado. El resultado neto de las definiciones de directivas en capas se considera acumulativo en su mayoría restrictivo: Si se aplican varias directivas a un recurso determinado, ese recurso solo es compatible si todas las definiciones de directiva que se le aplican 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 vista continua 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 ámbito el uso de clústeres privados. La directiva evalúa si un clúster de AKS usa o no la funcionalidad de 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 Azure API.

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 del funcionamiento en segundo plano de Azure Policy para AKS

Para aplicar directivas sobre la API de Kubernetes, Azure Policy para Kubernetes usa muchas herramientas: 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 se debe permitir o denegar una solicitud para crear, eliminar, modificar o conectarse a un recurso (ValidatingAdmissionWebhook); o si se debe cambiar la solicitud (MutatingAdmissionWebhook).

Open Policy Agent (OPA) es un motor de directivas de código abierto. OPA proporciona un lenguaje general para definir directivas. Puede usar OPA para aplicar directivas en microservicios propios, en canalizaciones de CI/CD y en Kubernetes. La directiva de Azure para Kubernetes traduce las directivas de Azure al lenguaje OPA que se 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.

1.

¿Cómo se asigna una directiva de Azure a todas las suscripciones de la organización?

2.

¿Cómo puede usar Azure para asegurarse de que todos los pods creados en el clúster de Kubernetes tienen solicitudes y límites configurados, y denegar pods sin que se creen esas configuraciones?

3.

Asigne la directiva "Los contenedores de clúster de Kubernetes solo deben usar imágenes permitidas" al grupo de recursos del clúster de Kubernetes. ¿Qué ocurre con los pods existentes que no usan imágenes permitidas?