Explicación de Azure Policy para AKS EngineUnderstand Azure Policy for AKS Engine

Azure Policy se integra con AKS Engine, un sistema que proporciona herramientas prácticas para arrancar rápidamente un clúster de Kubernetes autoadministrado en Azure.Azure Policy integrates with AKS Engine, a system that provides convenient tooling to quickly bootstrap a self-managed Kubernetes cluster on Azure. Esta integración permite aplicar medidas de seguridad y cumplimiento a escala en los clústeres autoadministrados de AKS Engine de manera centralizada y coherente.This integration enables at-scale enforcements and safeguards on your AKS Engine self-managed clusters in a centralized, consistent manner. Al extender el uso de Open Policy Agent (OPA) Gatekeeper v3 (beta), un webhook de controlador de admisión, Azure Policy le permite administrar e informar sobre el estado de cumplimiento de sus recursos de Azure y clústeres autoadministrados de AKS Engine desde un solo lugar.By extending use of Open Policy Agent (OPA) Gatekeeper v3 (beta), an admission controller webhook for Kubernetes, Azure Policy makes it possible to manage and report on the compliance state of your Azure resources and AKS Engine self-managed clusters from one place.

Nota

Azure Policy para AKS Engine está en versión preliminar pública y no tiene ningún contrato de nivel de servicio.Azure Policy for AKS Engine is in Public Preview and has no SLA. Gatekeeper v3 está en versión beta y cuenta con el respaldo de la comunidad de código abierto.Gatekeeper v3 is in Beta and is supported by the open source community. El servicio solo admite definiciones de directivas integradas y un único clúster de AKS Engine para cada grupo de recursos configurado con una entidad de servicio.The service only supports built-in policy definitions and a single AKS Engine cluster for each resource group configured with a Service Principal.

Importante

Para obtener soporte técnico para Azure Policy para AKS Engine, AKS Engine o Gatekeeper v3, cree una nueva incidencia en el repositorio de GitHub de AKS Engine.To get support for Azure Policy for AKS Engine, AKS Engine, or Gatekeeper v3, create a new issue in the AKS Engine GitHub repository.

Información generalOverview

Para habilitar y usar Azure Policy para AKS Engine con el clúster de Kubernetes autoadministrado en Azure, realice las siguientes acciones:To enable and use Azure Policy for AKS Engine with your self-managed Kubernetes cluster on Azure, take the following actions:

PrerrequisitosPrerequisites

Antes de instalar el complemento de Azure Policy o habilitar cualquiera de las características del servicio, su suscripción debe tener habilitados el proveedor de recursos Microsoft.PolicyInsights y crear una asignación de roles para la entidad de servicio del clúster.Before installing the Azure Policy Add-on or enabling any of the service features, your subscription must enable the Microsoft.PolicyInsights resource provider and create a role assignment for the cluster service principal.

  1. Para habilitar el proveedor de recursos, siga los pasos descritos en Tipos y proveedores de recursos o ejecute el comando de PowerShell o la CLI de Azure:To enable the resource provider, follow the steps in Resource providers and types or run either the Azure CLI or Azure PowerShell command:

    • Azure CLIAzure CLI

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShellAzure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      
  2. Creación de una asignación de roles para la entidad de servicio del clústerCreate a role assignment for the cluster service principal

    • Si no conoce el identificador de la aplicación de la entidad de servicio del clúster, búsquelo con el siguiente comando.If you don't know the cluster service principal app ID, look it up with the following command.

      # Get the kube-apiserver pod name
      kubectl get pods -n kube-system
      
      # Find the aadClientID value
      kubectl exec <kube-apiserver pod name> -n kube-system cat /etc/kubernetes/azure.json
      
    • Consigne la asignación de roles "Policy Insights Data Writer (Preview)" al identificador de la aplicación de la entidad de servicio del clúster (valor aadClientID del paso anterior) con la CLI de Azure.Assign 'Policy Insights Data Writer (Preview)' role assignment to the cluster service principal app ID (value aadClientID from previous step) with Azure CLI. Reemplace <subscriptionId> por el identificador de su suscripción y <aks engine cluster resource group> por el grupo de recursos en el que se encuentra el clúster de Kubernetes autoadministrado de AKS Engine.Replace <subscriptionId> with your subscription ID and <aks engine cluster resource group> with the resource group the AKS Engine self-managed Kubernetes cluster is in.

      az role assignment create --assignee <cluster service principal app ID> --scope "/subscriptions/<subscriptionId>/resourceGroups/<aks engine cluster resource group>" --role "Policy Insights Data Writer (Preview)"
      

Complemento de Azure PolicyAzure Policy Add-on

El complemento de Azure Policy para Kubernetes conecta el servicio de Azure Policy al controlador de admisión de Gatekeeper.The Azure Policy Add-on for Kubernetes connects the Azure Policy service to the Gatekeeper admission controller. El complemento, que se instala en el espacio de nombres kube-system, ejecuta las siguientes funciones:The add-on, which is installed into the kube-system namespace, enacts the following functions:

  • Comprueba con Azure Policy las asignaciones al clúster de AKS Engine.Checks with Azure Policy for assignments to the AKS Engine cluster
  • Descarga e instala los detalles de la directiva, las plantillas de restricción y las restricciones.Downloads and installs policy details, constraint templates, and constraints
  • Ejecuta una comprobación de cumplimiento de examen completo en el clúster de AKS Engine.Runs a full scan compliance check on the AKS Engine cluster
  • Realiza informes de auditoría y cumplimiento de los detalles de Azure Policy.Reports auditing and compliance details back to Azure Policy

Instalación del complementoInstalling the add-on

Una vez completados los requisitos previos, se puede instalar el complemento de Azure Policy.Once the prerequisites are completed, the Azure Policy Add-on can be installed. La instalación puede realizarse durante la creación o el ciclo de actualización de una instancia de AKS Engine o como una acción independiente en un clúster existente.The installation can be during the creation or update cycle of an AKS Engine or as an independent action on an existing cluster.

  • Instalación durante la creación o el ciclo de actualizaciónInstall during creation or update cycle

    Para habilitar el complemento Azure Policy durante la creación de un nuevo clúster autoadministrado o como una actualización de un clúster existente, incluya la definición del clúster de la propiedad addons para AKS Engine.To enable the Azure Policy Add-on during the creation of a new self-managed cluster or as an update to an existing cluster, include the addons property cluster definition for AKS Engine.

    "addons": [{
        "name": "azure-policy",
        "enabled": true,
        "config": {
            "auditInterval": "30",
            "constraintViolationsLimit": "20"
        }
    }]
    

    Para obtener más información al respecto, consulte la guía externa de definición del clúster de AKS Engine.For more information about, see the external guide AKS Engine cluster definition.

  • Instalación en un clúster existente con gráficos de HelmInstall in existing cluster with Helm Charts

    Siga estos pasos para preparar el clúster e instalar el complemento:Use the following steps to prepare the cluster and install the add-on:

    1. Instale Gatekeeper en el espacio de nombres gatekeeper-system.Install Gatekeeper to the gatekeeper-system namespace.

      kubectl apply -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml
      
    2. Agregue la etiqueta control-plane a kube-system.Add control-plane label to kube-system. Esta etiqueta excluye la auditoría de pods y servicios de kube-system de Gatekeeper y el complemento de Azure Policy.This label excludes the auditing of kube-system pods and services by Gatekeeper and the Azure Policy Add-on.

      kubectl label namespaces kube-system control-plane=controller-manager
      
    3. Sincronice los datos de Kubernetes (espacio de nombres, pod, entrada, servicio) con OPA.Sync Kubernetes data (Namespace, Pod, Ingress, Service) with OPA.

      kubectl apply -f https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/gatekeeper-opa-sync.yaml
      

      Para obtener más información, consulte el tema de OPA sobre la replicación de datos.For more information, see OPA - Replicating data.

    4. Agregue el repositorio Azure Policy a Helm.Add the Azure Policy repo to Helm.

      helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-charts
      

      Para obtener más información, consulte la guía de inicio rápido del gráfico de Helm.For more information, see Helm Chart - Quickstart Guide.

    5. Instale el complemento con un gráfico de Helm.Install the add-on with a Helm Chart. Reemplace <subscriptionId> por el identificador de su suscripción y <aks engine cluster resource group> por el grupo de recursos en el que se encuentra el clúster de Kubernetes autoadministrado de AKS Engine.Replace <subscriptionId> with your subscription ID and <aks engine cluster resource group> with the resource group the AKS Engine self-managed Kubernetes cluster is in.

      helm install azure-policy/azure-policy-addon-aks-engine --name azure-policy-addon --set azurepolicy.env.resourceid="/subscriptions/<subscriptionId>/resourceGroups/<aks engine cluster resource group>"
      

      Para obtener más información sobre lo que instala el gráfico de Helm de complemento, consulte la definición del gráfico de Helm de complemento de Azure Policy en GitHub.For more information about what the add-on Helm Chart installs, see the Azure Policy Add-on Helm Chart definition on GitHub.

      Nota

      Debido a la relación entre Azure Policy complemento y el identificador del grupo de recursos, Azure Policy solo admite un clúster de AKS Engine para cada grupo de recursos.Because of the relationship between Azure Policy Add-on and the resource group id, Azure Policy supports only one AKS Engine cluster for each resource group.

Para comprobar que la instalación del complemento se ha realizado correctamente y que el pod azure-policy se está ejecutando, ejecute el siguiente comando:To validate that the add-on installation was successful and that the azure-policy pod is running, run the following command:

kubectl get pods -n kube-system

Validación y frecuencia de los informesValidation and reporting frequency

El complemento se registra con Azure Policy para detectar cambios en las asignaciones de directivas cada 5 minutos.The add-on checks in with Azure Policy for changes in policy assignments every 5 minutes. Durante este ciclo de actualización, el complemento comprueba si hay cambios.During this refresh cycle, the add-on checks for changes. Estos cambios desencadenan la creación, actualización o eliminación de restricciones y plantillas de restricciones.These changes trigger creates, updates, or deletes of the constraint templates and constraints.

Nota

Aunque es posible que un administrador de clústeres tenga permiso para realizar cambios en las restricciones y las plantillas de restricciones, no se recomienda ni se admite para realizar cambios en las restricciones ni en las plantillas de restricciones creadas por Azure Policy.While a cluster admin may have permission to make changes to constraint templates and constraints, it's not recommended or supported to make changes to constraint templates or constraints created by Azure Policy. Cualquier cambio manual realizado se pierde durante el ciclo de actualización.Any manual changes made are lost during the refresh cycle.

Cada 5 minutos, el complemento solicita un examen completo del clúster.Every 5 minutes, the add-on calls for a full scan of the cluster. Después de recopilar los detalles del examen completo y las evaluaciones en tiempo real que realiza Gatekeeper sobre los intentos de cambios en el clúster, el complemento proporciona los resultados a Azure Policy para los agregue en los detalles de cumplimiento como cualquier otra asignación de Azure Policy.After gathering details of the full scan and any real-time evaluations by Gatekeeper of attempted changes to the cluster, the add-on reports the results back to Azure Policy for inclusion in compliance details like any Azure Policy assignment. Solo los resultados de las asignaciones de directivas activas se devuelven durante el ciclo de auditoría.Only results for active policy assignments are returned during the audit cycle. Los resultados de la auditoría también pueden verse como infracciones enumeradas en el campo de estado de la restricción errónea.Audit results can also be seen as violations listed in the status field of the failed constraint.

Idioma de directivaPolicy language

La estructura del lenguaje de Azure Policy para administrar AKS Engine sigue el camino de las directivas existentes.The Azure Policy language structure for managing AKS Engine follows that of existing policies. El efecto EnforceOPAConstraint se usa para administrar los clústeres de AKS Engine y recopila propiedades de detalles específicas para trabajar con OPA Constraint Framework y Gatekeeper v3.The effect EnforceOPAConstraint is used to manage your AKS Engine clusters and takes details properties specific to working with OPA Constraint Framework and Gatekeeper v3. Para obtener detalles y ejemplos, consulte el efecto EnforceOPAConstraint.For details and examples, see the EnforceOPAConstraint effect.

Como parte de las propiedades details.constraintTemplate y details.constraint de la definición de directiva, Azure Policy pasa los URI de estas CustomResourceDefinitions (CRD) al complemento.As part of the details.constraintTemplate and details.constraint properties in the policy definition, Azure Policy passes the URIs of these CustomResourceDefinitions (CRD) to the add-on. Rego es el lenguaje que OPA y el equipo selector admiten para validar una solicitud al clúster de Kubernetes.Rego is the language that OPA and Gatekeeper support to validate a request to the Kubernetes cluster. Al admitir un estándar existente para la administración de Kubernetes, Azure Policy le permite reutilizar las reglas existentes y vincularlas con Azure Policy para obtener una experiencia de informes de cumplimiento unificada en la nube.By supporting an existing standard for Kubernetes management, Azure Policy makes it possible to reuse existing rules and pair them with Azure Policy for a unified cloud compliance reporting experience. Para obtener más información, consulte ¿Qué es Rego?For more information, see What is Rego?.

Directivas integradasBuilt-in policies

Para encontrar las directivas integradas para administrar el clúster de AKS Engine mediante Azure Portal, siga estos pasos:To find the built-in policies for managing your AKS Engine cluster using the Azure portal, follow these steps:

  1. Inicie el servicio Azure Policy en Azure Portal.Start the Azure Policy service in the Azure portal. Seleccione All services (Todos los servicios) en el panel izquierdo y busque y seleccione la opción Policy (Directiva).Select All services in the left pane and then search for and select Policy.

  2. En el panel izquierdo de la página de Azure Policy, seleccione Definitions (Definiciones).In the left pane of the Azure Policy page, select Definitions.

  3. En el cuadro de lista desplegable Categoría, use Seleccionar todo para borrar el filtro y seleccione Kubernetes.From the Category drop-down list box, use Select all to clear the filter and then select Kubernetes.

  4. Seleccione la definición de directiva y pulse el botón Assign (Asignar).Select the policy definition, then select the Assign button.

Nota

Al asignar la definición de Azure Policy para AKS Engine, el valor de Ámbito debe ser el grupo de recursos del clúster de AKS Engine.When assigning the Azure Policy for AKS Engine definition, the Scope must be the resource group of the AKS Engine cluster.

Alternativamente, use la opción de inicio rápido Asignar una directiva - Portal para encontrar y asignar una directiva de AKS Engine.Alternately, use the Assign a policy - Portal quickstart to find and assign an AKS Engine policy. Busque una definición de directiva de AKS Engine en lugar del ejemplo "audit vms".Search for an AKS Engine policy definition instead of the sample 'audit vms'.

Importante

Las directivas integradas en la categoría Kubernetes solo se usan con AKS Engine.Built-in policies in category Kubernetes are only for use with AKS Engine.

RegistroLogging

Registros del complemento de Azure PolicyAzure Policy Add-on logs

Como controlador o contenedor de Kubernetes, el complemento de Azure Policy mantiene registros en el clúster de AKS Engine.As a Kubernetes controller/container, the Azure Policy Add-on keeps logs in the AKS Engine cluster.

Para ver los registros del complemento de Azure Policy, use kubectl:To view the Azure Policy Add-on logs, use kubectl:

# Get the Azure Policy Add-on pod name
kubectl -n kube-system get pods -l app=azure-policy --output=name

# Get the logs for the add-on
kubectl logs <Azure Policy Add-on pod name> -n kube-system

Registros de GatekeeperGatekeeper logs

El pod de Gatekeeper, gatekeeper-controller-manager-0, suele estar en el espacio de nombres gatekeeper-system o kube-system, pero puede estar en un espacio de nombres diferente en función de cómo se implemente.The Gatekeeper pod, gatekeeper-controller-manager-0, is usually in the gatekeeper-system or kube-system namespace, but can be in a different namespace depending on how it's deployed.

Para ver los registros de Gatekeeper, use kubectl:To view the Gatekeeper logs, use kubectl:

NAMESPACE=<namespace of gatekeeper>
kubectl logs gatekeeper-controller-manager-0 -n $NAMESPACE

Para obtener más información, consulte Depuración de Gatekeeper en la documentación de OPA.For more information, see Debugging Gatekeeper in the OPA documentation.

Eliminar el complementoRemove the add-on

Para quitar el complemento de Azure Policy y Gatekeeper del clúster de AKS Engine, use el método en línea con la manera en que se ha instalado el complemento:To remove the Azure Policy Add-on and Gatekeeper from your AKS Engine cluster, use the method that aligns with how the add-on was installed:

  • Si se ha instalado definiendo la propiedad addons en la definición del clúster para AKS Engine:If installed by setting the addons property in the cluster definition for AKS Engine:

    Vuelva a implementar la definición del clúster en AKS Engine después de cambiar la propiedad addons de azure-policy a false:Redeploy the cluster definition to AKS Engine after changing the addons property for azure-policy to false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    
  • Si se ha instalado con gráficos de Helm:If installed with Helm Charts:

    1. Quite las restricciones antiguas.Remove old constraints

      Actualmente, el mecanismo de desinstalación solo quita el sistema Gatekeeper, no quita ningún recurso ConstraintTemplate, Constraint ni Config creado por el usuario, ni quita las definiciones CRD que los acompañan.Currently the uninstall mechanism only removes the Gatekeeper system, it doesn't remove any ConstraintTemplate, Constraint, or Config resources that have been created by the user, nor does it remove their accompanying CRDs.

      Cuando Gatekeeper se está ejecutando, se pueden quitar las restricciones no deseadas mediante las siguientes acciones:When Gatekeeper is running, it's possible to remove unwanted constraints by:

      • Eliminar todas las instancias del recurso Constraint.Deleting all instances of the constraint resource
      • Eliminar el recurso ConstraintTemplate, que debe limpiar automáticamente la definición CRD.Deleting the ConstraintTemplate resource, which should automatically clean up the CRD
      • Eliminar el recurso Config, con lo que se quitarán los finalizadores de los recursos sincronizados.Deleting the Config resource removes finalizers on synced resources
    2. Desinstale el complemento de Azure Policy.Uninstall Azure Policy Add-on

      helm del --purge azure-policy-addon
      
    3. Desinstale Gatekeeper.Uninstall Gatekeeper

      kubectl delete -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml
      

Datos de diagnóstico recopilados por el complemento de Azure PolicyDiagnostic data collected by Azure Policy Add-on

El complemento de Azure Policy para Kubernetes recopila datos de diagnóstico de clúster limitados.The Azure Policy Add-on for Kubernetes collects limited cluster diagnostic data. Estos datos de diagnóstico son datos técnicos esenciales relacionados con el software y el rendimiento.This diagnostic data is vital technical data related to software and performance. Se utiliza para lo siguiente:It's used in the following ways:

  • Mantener el complemento de Azure Policy actualizado.Keep Azure Policy Add-on up-to-date
  • Mantener la seguridad, la confiabilidad y el rendimiento del complemento de Azure PolicyKeep Azure Policy Add-on secure, reliable, performant
  • Mejorar el complemento de Azure Policy mediante el análisis agregado del uso del complementoImprove Azure Policy Add-on - through the aggregate analysis of the use of the add-on

La información recopilada por el complemento no son datos personales.The information collected by the add-on isn't personal data. Actualmente se recopilan los detalles siguientes:The following details are currently collected:

  • Versión del agente del complemento de Azure PolicyAzure Policy Add-on agent version
  • Tipo de clústerCluster type
  • Región del clústerCluster region
  • Grupo de recursos del clústerCluster resource group
  • Identificador de recurso del clústerCluster resource ID
  • Identificador de suscripción del clústerCluster subscription ID
  • Sistema operativo del clúster (ejemplo: Linux)Cluster OS (Example: Linux)
  • Ciudad del clúster (ejemplo: Seattle)Cluster city (Example: Seattle)
  • Estado o provincia del clúster (ejemplo: Washington)Cluster state or province (Example: Washington)
  • País o región del clúster (ejemplo: Estados Unidos)Cluster country or region (Example: United States)
  • Excepciones o errores encontrados por el complemento de Azure Policy durante la instalación del agente en la evaluación de directivaExceptions/errors encountered by Azure Policy Add-on during agent installation on policy evaluation
  • Número de directivas de Gatekeeper no instaladas por el complemento de Azure PolicyNumber of Gatekeeper policies not installed by Azure Policy Add-on

Pasos siguientesNext steps