Descripción de Azure Policy para clústeres de Kubernetes (versión preliminar)Understand Azure Policy for Kubernetes clusters (preview)

Azure Policy extiende Gatekeeper v3, un webhook de controlador de admisión de Open Policy Agent (OPA), a fin de aplicar medidas de seguridad y cumplimiento a escala en los clústeres de una manera centralizada y coherente.Azure Policy extends Gatekeeper v3, an admission controller webhook for Open Policy Agent (OPA), to apply at-scale enforcements and safeguards on your clusters in a centralized, consistent manner. Azure Policy permite administrar e informar sobre el estado de cumplimiento de los clústeres de Kubernetes desde un único lugar.Azure Policy makes it possible to manage and report on the compliance state of your Kubernetes clusters from one place. El complemento realiza las funciones siguientes:The add-on enacts the following functions:

  • Comprueba con el servicio Azure Policy las asignaciones de directivas al clúster.Checks with Azure Policy service for policy assignments to the cluster.
  • Implementa definiciones de directiva en el clúster como recursos de plantilla de restricción y restricción.Deploys policy definitions into the cluster as constraint template and constraint custom resources.
  • Realiza informes de auditoría y cumplimiento y los devuelve al servicio Azure Policy.Reports auditing and compliance details back to Azure Policy service.

Azure Policy para Kubernetes admite los entornos de clúster siguientes:Azure Policy for Kubernetes supports the following cluster environments:

Importante

Azure Policy para Kubernetes está en versión preliminar y solo admite grupos de nodos de Linux y definiciones de directiva integradas.Azure Policy for Kubernetes is in Preview and only supports Linux node pools and built-in policy definitions. Las definiciones de directiva integradas se encuentran en la categoría Kubernetes.Built-in policy definitions are in the Kubernetes category. Las definiciones de directiva de versión preliminar limitadas con efecto EnforceRegoPolicy y la categoría servicio Kubernetes relacionada están en desuso.The limited preview policy definitions with EnforceRegoPolicy effect and the related Kubernetes Service category are deprecated. En su lugar, use el efecto actualizado EnforceOPAConstraint.Instead, use the updated EnforceOPAConstraint effect.

Información generalOverview

Para habilitar y usar Azure Policy con el clúster de Kubernetes, realice las acciones siguientes:To enable and use Azure Policy with your Kubernetes cluster, take the following actions:

  1. Configure el clúster de Kubernetes e instale el complemento:Configure your Kubernetes cluster and install the add-on:

    Nota

    Para resolver problemas de instalación comunes, consulte el tema de solución de problemas del complemento Azure Policy.For common issues with installation, see Troubleshoot - Azure Policy add-on.

  2. Descripción del lenguaje de Azure Policy para KubernetesUnderstand the Azure Policy language for Kubernetes

  3. Asignación de una definición integrada a un clúster de KubernetesAssign a built-in definition to your Kubernetes cluster

  4. Espere la validaciónWait for validation

Instalación del complemento de Azure Policy para AKSInstall Azure Policy Add-on for AKS

Antes de instalar el complemento de Azure Policy o habilitar cualquiera de las características del servicio, la suscripción debe habilitar los proveedores de recursos Microsoft.ContainerService y Microsoft.PolicyInsights.Before installing the Azure Policy Add-on or enabling any of the service features, your subscription must enable the Microsoft.ContainerService and Microsoft.PolicyInsights resource providers.

  1. Es preciso que esté instalada y configurada la versión 2.0.62 de la CLI de Azure, o cualquier otra versión posterior.You need the Azure CLI version 2.0.62 or later installed and configured. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.If you need to install or upgrade, see Install the Azure CLI.

  2. Registre los proveedores de recursos y las características en vista previa.Register the resource providers and preview features.

    Precaución

    Al registrar una característica en una suscripción, no se puede anular el registro de esa característica.When you register a feature on a subscription, you can't un-register that feature. Después de habilitar algunas características en vista previa, se pueden usar los valores predeterminados en todos los clústeres de AKS y, luego, se pueden crear en la suscripción.After you enable some preview features, defaults may be used for all AKS clusters then created in the subscription. No habilite características en vista previa en las suscripciones de producción.Don't enable preview features on production subscriptions. Use una suscripción independiente para probar las características en vista previa y recopilar comentarios.Use a separate subscription to test preview features and gather feedback.

    • Azure Portal:Azure portal:

      1. Registre los proveedores de recursos Microsoft.ContainerService y Microsoft.PolicyInsights.Register the Microsoft.ContainerService and Microsoft.PolicyInsights resource providers. Para conocer los pasos, consulte Proveedores de recursos y sus tipos.For steps, see Resource providers and types.

      2. Inicie el servicio Azure Policy en Azure Portal. Para ello, haga clic en Todos los servicios y, a continuación, busque y seleccione Directiva.Launch the Azure Policy service in the Azure portal by clicking All services, then searching for and selecting Policy.

        Búsqueda de la directiva en todos los servicios

      3. Seleccione Join Preview (Unirse a la versión preliminar) en el lado izquierdo de la página Azure Policy.Select Join Preview on the left side of the Azure Policy page.

        Unirse a la directiva de la versión preliminar de AKS

      4. Seleccione la fila de la suscripción que quiera agregar a la versión preliminar.Select the row of the subscription you want added to the preview.

      5. Seleccione el botón Opt-in (Participar) en la parte superior de la lista de suscripciones.Select the Opt-in button at the top of the list of subscriptions.

    • CLI de Azure:Azure CLI:

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Kubernetes Service provider
      az provider register --namespace Microsoft.ContainerService
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace Microsoft.PolicyInsights
      
      # Feature register: enables installing the add-on
      az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
      
      # Use the following to confirm the feature has registered
      az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AKS-AzurePolicyAutoApprove')].   {Name:name,State:properties.state}"
      
      # Once the above shows 'Registered' run the following to propagate the update
      az provider register -n Microsoft.ContainerService
      
  3. Si hay definiciones de directiva de versión preliminar limitadas instaladas, quite el complemento con el botón Deshabilitar en el clúster de AKS en la página Directivas (versión preliminar) .If limited preview policy definitions were installed, remove the add-on with the Disable button on your AKS cluster under the Policies (preview) page.

  4. Se debe usar la versión del clúster de AKS 1.14 o posterior.The AKS cluster must be version 1.14 or higher. Use el siguiente script para validar la versión del clúster de AKS:Use the following script to validate your AKS cluster version:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  5. Instale la versión 0.4.0 de la extensión de la versión preliminar de la CLI de Azure para AKS, aks-preview:Install version 0.4.0 of the Azure CLI preview extension for AKS, aks-preview:

    # Log in first with az login if you're not using Cloud Shell
    
    # Install/update the preview extension
    az extension add --name aks-preview
    
    # Validate the version of the preview extension
    az extension show --name aks-preview --query [version]
    

    Nota

    Si ha instalado anteriormente la extensión aks-preview, instale todas las actualizaciones con el comando az extension update --name aks-preview.If you've previously installed the aks-preview extension, install any updates using the az extension update --name aks-preview command.

Una vez que se han completado los pasos anteriores de requisitos previos, instale el complemento de Azure Policy en el clúster de AKS que quiera administrar.Once the above prerequisite steps are completed, install the Azure Policy Add-on in the AKS cluster you want to manage.

  • Azure portalAzure portal

    1. Inicie el servicio AKS en Azure Portal haciendo clic en Todos los servicios; a continuación, busque y seleccione Servicios de Kubernetes.Launch the AKS service in the Azure portal by clicking All services, then searching for and selecting Kubernetes services.

    2. Seleccione uno de sus clústeres de AKS.Select one of your AKS clusters.

    3. Seleccione Policies (preview) (Directivas [versión preliminar]) en el lado izquierdo de la página de servicio de Kubernetes.Select Policies (preview) on the left side of the Kubernetes service page.

      Definiciones de directivas desde el clúster de AKS

    4. En la página principal, seleccione el botón Enable add-on (Habilitar complemento).In the main page, select the Enable add-on button.

      Habilitar la directiva de Azure para el complemento de AKS

      Nota

      Si el botón Habilitar complemento está atenuado, significa que la suscripción todavía no se ha agregado a la versión preliminar.If the Enable add-on button is grayed out, the subscription hasn't yet been added to the preview. Si el botón Deshabilitar complemento está habilitado y se muestra un mensaje de advertencia de migración a v2, Gatekeepver v2 sigue instalado y se debe quitar.If the Disable add-on button is enabled and a migration warning to v2 message is displayed, Gatekeepver v2 is still installed and must be removed.

  • Azure CLIAzure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

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

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Por último, para comprobar que el complemento más reciente está instalado, ejecute este comando de la CLI de Azure y reemplace <rg> por el nombre del grupo de recursos y <cluster-name> por el nombre del clúster de AKS: az aks show -g <rg> -n <cluster-name>.Lastly, verify that the latest add-on is installed by running this Azure CLI command, replacing <rg> with your resource group name and <cluster-name> with the name of your AKS cluster: az aks show -g <rg> -n <cluster-name>. El resultado debe ser similar al siguiente y config.version debe ser v2:The result should look similar to the following output and config.version should be v2:

"addonProfiles": {
    "azurepolicy": {
        "config": {
            "version": "v2"
        },
        "enabled": true,
        "identity": null
    },
}

Instalación del complemento de Azure Policy de Kubernetes habilitado para Azure ArcInstall Azure Policy Add-on for Azure Arc enabled Kubernetes

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. Es preciso que esté instalada y configurada la versión 2.0.62 de la CLI de Azure, o cualquier otra versión posterior.You need the Azure CLI version 2.0.62 or later installed and configured. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.If you need to install or upgrade, see Install the Azure CLI.

  2. 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'
      
  3. Se debe usar la versión del clúster de Kubernetes 1.14 o posterior.The Kubernetes cluster must be version 1.14 or higher.

  4. Instale Helm 3.Install Helm 3.

  5. El clúster de Kubernetes habilitado para Azure Arc. Para obtener más información, vea Incorporación de un clúster de Kubernetes a Azure Arc.Your Kubernetes cluster enabled for Azure Arc. For more information, see onboarding a Kubernetes cluster to Azure Arc.

  6. Tener el identificador de recurso completo de Azure del clúster de Kubernetes habilitado para Azure Arc.Have the fully qualified Azure Resource ID of the Azure Arc enabled Kubernetes cluster.

  7. Abra los puertos para el complemento.Open ports for the add-on. El complemento de Azure Policy usa estos dominios y puertos para obtener las definiciones de directiva y las asignaciones, y notificar a Azure Policy el cumplimiento del clúster.The Azure Policy Add-on uses these domains and ports to fetch policy definitions and assignments and report compliance of the cluster back to Azure Policy.

    DomainDomain PortPort
    gov-prod-policy-data.trafficmanager.net 443
    raw.githubusercontent.com 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  8. Asigne la asignación de rol "Escritor de datos de Policy Insights (versión preliminar)" al clúster de Kubernetes habilitado para Azure Arc.Assign 'Policy Insights Data Writer (Preview)' role assignment to the Azure Arc enabled Kubernetes cluster. Reemplace <subscriptionId> por el identificador de la suscripción, <rg> por el grupo de recursos del clúster de Kubernetes habilitado para Azure Arc y <clusterName> por el nombre del clúster de Kubernetes habilitado para Azure Arc.Replace <subscriptionId> with your subscription ID, <rg> with the Azure Arc enabled Kubernetes cluster's resource group, and <clusterName> with the name of the Azure Arc enabled Kubernetes cluster. Realice el seguimiento de los valores devueltos para appId, password y tenant para los pasos de instalación.Keep track of the returned values for appId, password, and tenant for the installation steps.

    • Azure CLIAzure CLI

      az ad sp create-for-rbac --role "Policy Insights Data Writer (Preview)" --scopes "/subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.Kubernetes/connectedClusters/<clusterName>"
      
    • Azure PowerShellAzure PowerShell

      $sp = New-AzADServicePrincipal -Role "Policy Insights Data Writer (Preview)" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.Kubernetes/connectedClusters/<clusterName>"
      
      @{ appId=$sp.ApplicationId;password=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sp.Secret));tenant=(Get-AzContext).Tenant.Id } | ConvertTo-Json
      

    Ejemplo de salida de los comandos anteriores:Sample output of the above commands:

    {
        "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "password": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
        "tenant": "cccccccc-cccc-cccc-cccc-cccccccccccc"
    }
    

Una vez que se han completado los pasos anteriores de requisitos previos, instale el complemento de Azure Policy en el clúster de Kubernetes habilitado para Azure Arc:Once the above prerequisite steps are completed, install the Azure Policy Add-on in your Azure Arc enabled Kubernetes cluster:

  1. Agregue el repositorio del complemento de Azure Policy a Helm:Add the Azure Policy Add-on repo to Helm:

    helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-charts
    
  2. Instale el complemento de Azure Policy con el gráfico de Helm:Install the Azure Policy Add-on using Helm Chart:

    # In below command, replace the following values with those gathered above.
    #    <AzureArcClusterResourceId> with your Azure Arc enabled Kubernetes cluster resource Id. For example: /subscriptions/<subscriptionId>/resourceGroups/<rg>/providers/Microsoft.Kubernetes/connectedClusters/<clusterName>
    #    <ServicePrincipalAppId> with app Id of the service principal created during prerequisites.
    #    <ServicePrincipalPassword> with password of the service principal created during prerequisites.
    #    <ServicePrincipalTenantId> with tenant of the service principal created during prerequisites.
    helm install azure-policy-addon azure-policy/azure-policy-addon-arc-clusters \
        --set azurepolicy.env.resourceid=<AzureArcClusterResourceId> \
        --set azurepolicy.env.clientid=<ServicePrincipalAppId> \
        --set azurepolicy.env.clientsecret=<ServicePrincipalPassword> \
        --set azurepolicy.env.tenantid=<ServicePrincipalTenantId>
    

    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.

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

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Instalación del complemento de Azure Policy para AKS EngineInstall Azure Policy Add-on for AKS Engine

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. Es preciso que esté instalada y configurada la versión 2.0.62 de la CLI de Azure, o cualquier otra versión posterior.You need the Azure CLI version 2.0.62 or later installed and configured. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.If you need to install or upgrade, see Install the Azure CLI.

  2. 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'
      
  3. Cree una asignación de roles para la entidad de servicio del clúster.Create 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)"
      

Una vez que se han completado los pasos anteriores de requisitos previos, instale el complemento de Azure Policy.Once the above prerequisite steps are completed, install the Azure Policy Add-on. 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
    }]
    

    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 Helm 3.Install Helm 3.

    2. 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.

    3. 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-addon azure-policy/azure-policy-addon-aks-engine --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 los pods azure-policy y gatekeeper están en ejecución, ejecute el comando siguiente:To validate that the add-on installation was successful and that the azure-policy and gatekeeper pods are running, run the following command:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Idioma de directivaPolicy language

La estructura del lenguaje de Azure Policy para administrar Kubernetes sigue la de las definiciones de directiva existentes.The Azure Policy language structure for managing Kubernetes follows that of existing policy definitions. El efecto EnforceOPAConstraint se usa para administrar los clústeres de Kubernetes y recopila propiedades de detalles específicas para trabajar con OPA Constraint Framework y Gatekeeper v3.The effect EnforceOPAConstraint is used to manage your Kubernetes 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?.

Asignación de una definición de directiva integradaAssign a built-in policy definition

Para asignar una definición de directiva al clúster de Kubernetes, debe tener asignadas las operaciones de asignación de directivas de control de acceso basado en rol (RBAC) adecuadas.To assign a policy definition to your Kubernetes cluster, you must be assigned the appropriate role-based access control (RBAC) policy assignment operations. Los roles de RBAC integrados Colaborador de la directiva de recursos y Propietario tienen estas operaciones.The built-in RBAC roles Resource Policy Contributor and Owner have these operations. Para obtener más información, vea Permisos de RBAC en Azure Policy.To learn more, see RBAC permissions in Azure Policy.

Siga estos pasos para buscar las directivas integradas para administrar el clúster mediante Azure Portal:Find the built-in policy definitions for managing your cluster using the Azure portal with the following 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.

  5. Establezca el Ámbito en el grupo de administración, la suscripción o el grupo de recursos del clúster de Kubernetes al que se aplicará la asignación de directiva.Set the Scope to the management group, subscription, or resource group of the Kubernetes cluster where the policy assignment will apply.

    Nota

    Al asignar Azure Policy para la definición de Kubernetes, el Ámbito debe incluir el recurso de clúster.When assigning the Azure Policy for Kubernetes definition, the Scope must include the cluster resource. En el caso de un clúster de AKS Engine, el ámbito debe ser el grupo de recursos del clúster.For an AKS Engine cluster, the Scope must be the resource group of the cluster.

  6. Asigne un Nombre y una Descripción a la asignación de directiva que pueda usar para identificarla con facilidad.Give the policy assignment a Name and Description that you can use to identify it easily.

  7. Establezca Cumplimiento de directivas en uno de los valores mostradosSet the Policy enforcement to one of the values
    a continuación.below.

    • Habilitado: aplicar la directiva en el clúster.Enabled - Enforce the policy on the cluster. Se deniegan las solicitudes de admisión de Kubernetes con infracciones.Kubernetes admission requests with violations are denied.

    • Deshabilitado: no aplicar la directiva en el clúster.Disabled - Don't enforce the policy on the cluster. No se deniegan las solicitudes de admisión de Kubernetes con infracciones.Kubernetes admission requests with violations aren't denied. Los resultados de la evaluación de cumplimiento siguen estando disponibles.Compliance assessment results are still available. Al implementar nuevas definiciones de directiva para ejecutar clústeres, la opción Deshabilitado resulta útil para probar la definición de directiva, ya que las solicitudes de admisión con infracciones no se deniegan.When rolling out new policy definitions to running clusters, Disabled option is helpful for testing the policy definition as admission requests with violations aren't denied.

  8. Seleccione Next (Siguiente).Select Next.

  9. Establecer Valores de parámetrosSet parameter values

    • Para excluir los espacios de nombres de Kubernetes de la evaluación de directivas, especifique la lista de espacios de nombres en el parámetro Exclusiones de los espacios de nombres.To exclude Kubernetes namespaces from policy evaluation, specify the list of namespaces in parameter Namespace exclusions. Se recomienda excluir: kube-system, gatekeeper-system y azure-arc.It's recommended to exclude: kube-system, gatekeeper-system, and azure-arc.
  10. Seleccione Revisar + crear.Select Review + create.

Como alternativa, use el inicio rápido Asignación de una directiva: Portal para buscar y asignar una directiva de Kubernetes.Alternately, use the Assign a policy - Portal quickstart to find and assign a Kubernetes policy. Busque una definición de directiva de Kubernetes en lugar del ejemplo "audit vms".Search for a Kubernetes policy definition instead of the sample 'audit vms'.

Importante

Las definiciones de directiva integradas están disponibles para los clústeres de Kubernetes en la categoría Kubernetes.Built-in policy definitions are available for Kubernetes clusters in category Kubernetes. Para obtener una lista de las definiciones de directiva integradas, vea Ejemplos de Kubernetes.For a list of built-in policy definitions, see Kubernetes samples.

Evaluación de directivaPolicy evaluation

El complemento se registra con el servicio Azure Policy para detectar cambios en las asignaciones de directivas cada 15 minutos.The add-on checks in with Azure Policy service for changes in policy assignments every 15 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.

En un clúster de Kubernetes, si un espacio de nombres tiene alguna de las etiquetas siguientes, no se deniegan las solicitudes de admisión con infracciones.In a Kubernetes cluster, if a namespace has either of the following labels, the admission requests with violations aren't denied. Los resultados de la evaluación de cumplimiento siguen estando disponibles.Compliance assessment results are still available.

  • control-plane
  • admission.policy.azure.com/ignore

Nota

Aunque es posible que un administrador de clústeres tenga permiso para crear y actualizar los recursos de plantillas y restricciones instalados por el complemento Azure Policy, estos no son escenarios admitidos, ya que las actualizaciones manuales se sobrescriben.While a cluster admin may have permission to create and update constraint templates and constraints resources install by the Azure Policy Add-on, these aren't supported scenarios as manual updates are overwritten. Gatekeeper sigue evaluando las directivas que existían antes de instalar el complemento y de asignar las definiciones de directiva de Azure Policy.Gatekeeper continues to evaluate policies that existed prior to installing the add-on and assigning Azure Policy policy definitions.

Cada 15 minutos, el complemento solicita un examen completo del clúster.Every 15 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.

Nota

En cada informe de cumplimiento de Azure Policy para los clústeres de Kubernetes se incluyen todas las infracciones de los últimos 45 minutos.Each compliance report in Azure Policy for your Kubernetes clusters include all violations within the last 45 minutes. La marca de tiempo indica cuándo se ha producido una infracción.The timestamp indicates when a violation occurred.

RegistroLogging

Como controlador o contenedor de Kubernetes, los pods azure-policy y gatekeeper mantienen registros en el clúster de Kubernetes.As a Kubernetes controller/container, both the the azure-policy and gatekeeper pods keep logs in the Kubernetes cluster. Los registros se pueden exponer en la página Insights (Detalles) del clúster de Kubernetes.The logs can be exposed in the Insights page of the Kubernetes cluster. Para obtener más información, vea Supervisión del rendimiento del clúster de Kubernetes con Azure Monitor para contenedores.For more information, see Monitor your Kubernetes cluster performance with Azure Monitor for containers.

Para ver los registros del complemento, use kubectl:To view the add-on logs, use kubectl:

# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system

# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system

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

Eliminar el complementoRemove the add-on

Eliminación del complemento de AKSRemove the add-on from AKS

Para eliminar el complemento de Azure Policy del clúster de AKS, use Azure Portal o la CLI de Azure:To remove the Azure Policy Add-on from your AKS cluster, use either the Azure portal or Azure CLI:

  • Azure portalAzure portal

    1. Inicie el servicio AKS en Azure Portal haciendo clic en Todos los servicios; a continuación, busque y seleccione Servicios de Kubernetes.Launch the AKS service in the Azure portal by clicking All services, then searching for and selecting Kubernetes services.

    2. Seleccione el clúster de AKS en el que quiera deshabilitar el complemento de Azure Policy.Select your AKS cluster where you want to disable the Azure Policy Add-on.

    3. Seleccione Policies (preview) (Directivas [versión preliminar]) en el lado izquierdo de la página de servicio de Kubernetes.Select Policies (preview) on the left side of the Kubernetes service page.

      Definiciones de directivas desde el clúster de AKS

    4. En la página principal, pulse Disable add-on (Deshabilitar complemento).In the main page, select the Disable add-on button.

      Deshabilitar Azure Policy para el complemento de AKS

  • Azure CLIAzure CLI

    # Log in first with az login if you're not using Cloud Shell
    
    az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Eliminación del complemento desde Kubernetes habilitado para Azure ArcRemove the add-on from Azure Arc enabled Kubernetes

Para quitar el complemento de Azure Policy y Gatekeeper desde el clúster de Kubernetes habilitado para Azure Arc, ejecute el siguiente comando de Helm:To remove the Azure Policy Add-on and Gatekeeper from your Azure Arc enabled Kubernetes cluster, run the following Helm command:

helm uninstall azure-policy-addon

Eliminación del complemento desde AKS EngineRemove the add-on from AKS Engine

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
    }]
    

    Para obtener más información, vea AKS Engine: deshabilitación del complemento de Azure Policy.For more information, see AKS Engine - Disable Azure Policy Add-on.

  • Si se ha instalado con gráficos de Helm, ejecute el siguiente comando de Helm:If installed with Helm Charts, run the following Helm command:

    helm uninstall azure-policy-addon
    

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 actualizado el complemento de Azure PolicyKeep 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 definiciones de directiva de Gatekeeper no instaladas por el complemento de Azure PolicyNumber of Gatekeeper policy definitions not installed by Azure Policy Add-on

Pasos siguientesNext steps