Opis usługi Azure Policy dla klastrów KubernetesUnderstand Azure Policy for Kubernetes clusters

Azure Policy rozszerza program Gatekeeper w wersji 3, element webhook kontrolera danych dla programu Open Policy Agent (OPA), aby stosować w klastrach w sposób scentralizowany i spójny wymuszanie i zabezpieczenia na dużą skalę.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 umożliwia zarządzanie stanem zgodności klastrów Kubernetes i zgłaszanie ich z jednego miejsca.Azure Policy makes it possible to manage and report on the compliance state of your Kubernetes clusters from one place. Dodatek wprowadza następujące funkcje:The add-on enacts the following functions:

  • Sprawdza w Azure Policy usługi pod temat przypisań zasad do klastra.Checks with Azure Policy service for policy assignments to the cluster.
  • Wdraża definicje zasad w klastrze jako szablon ograniczeń i niestandardowe zasoby ograniczenia.Deploys policy definitions into the cluster as constraint template and constraint custom resources.
  • Raporty dotyczące inspekcji i zgodności z powrotem Azure Policy usługi.Reports auditing and compliance details back to Azure Policy service.

Azure Policy dla usługi Kubernetes obsługuje następujące środowiska klastra:Azure Policy for Kubernetes supports the following cluster environments:

Ważne

Dodatki dla aparatu AKS i usługi Kubernetes z obsługą usługi Arc są dostępne w wersji zapoznawczej.The add-ons for AKS Engine and Arc enabled Kubernetes are in preview. Azure Policy kubernetes obsługuje tylko pule węzłów systemu Linux i wbudowane definicje zasad.Azure Policy for Kubernetes only supports Linux node pools and built-in policy definitions. Wbudowane definicje zasad znajdują się w kategorii Kubernetes.Built-in policy definitions are in the Kubernetes category. Ograniczone definicje zasad w wersji zapoznawczej z efektami EnforceOPAConstraint i EnforceRegoPolicy oraz powiązaną kategorią usługi Kubernetes Serviceprzestarzałe.The limited preview policy definitions with EnforceOPAConstraint and EnforceRegoPolicy effect and the related Kubernetes Service category are deprecated. Zamiast tego użyj efektów inspekcji i odmowy w trybie dostawcy Microsoft.Kubernetes.Data zasobów.Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

OmówienieOverview

Aby włączyć i Azure Policy z klastrem Kubernetes, należy podjąć następujące czynności:To enable and use Azure Policy with your Kubernetes cluster, take the following actions:

  1. Skonfiguruj klaster Kubernetes i zainstaluj dodatek:Configure your Kubernetes cluster and install the add-on:

    Uwaga

    Aby uzyskać informacje o typowych problemach z instalacją, zobacz Rozwiązywanie Azure Policy dodatku.For common issues with installation, see Troubleshoot - Azure Policy Add-on.

  2. Opis języka Azure Policy kubernetesUnderstand the Azure Policy language for Kubernetes

  3. Przypisywanie wbudowanej definicji do klastra KubernetesAssign a built-in definition to your Kubernetes cluster

  4. Oczekiwanie na walidacjęWait for validation

OgraniczeniaLimitations

Następujące ogólne ograniczenia dotyczą dodatku Azure Policy dla klastrów Kubernetes:The following general limitations apply to the Azure Policy Add-on for Kubernetes clusters:

  • Azure Policy kubernetes w wersji 1.14 lub wyższej.Azure Policy Add-on for Kubernetes is supported on Kubernetes version 1.14 or higher.
  • Azure Policy dodatek dla rozwiązania Kubernetes można wdrożyć tylko w pulach węzłów systemu LinuxAzure Policy Add-on for Kubernetes can only be deployed to Linux node pools
  • Obsługiwane są tylko wbudowane definicje zasadOnly built-in policy definitions are supported
  • Maksymalna liczba niezgodnych rekordów na zasady na klaster: 500Maximum number of Non-compliant records per policy per cluster: 500
  • Maksymalna liczba niezgodnych rekordów na subskrypcję: 1 milionMaximum number of Non-compliant records per subscription: 1 million
  • Instalacje strażnika poza Azure Policy nie są obsługiwane.Installations of Gatekeeper outside of the Azure Policy Add-on aren't supported. Odinstaluj wszystkie składniki zainstalowane przez poprzednią instalację programu Gatekeeper przed włączeniem Azure Policy dodatku.Uninstall any components installed by a previous Gatekeeper installation before enabling the Azure Policy Add-on.
  • Przyczyny niezgodności nie są dostępne dla trybu Microsoft.Kubernetes.Data dostawcy zasobów.Reasons for non-compliance aren't available for the Microsoft.Kubernetes.Data Resource Provider mode. Użyj szczegółów składnika.Use Component details.
  • Wyjątki nie są obsługiwane w trybach dostawcy zasobów.Exemptions aren't supported for Resource Provider modes.

Poniższe ograniczenia dotyczą tylko Azure Policy dodatku dla AKS:The following limitations apply only to the Azure Policy Add-on for AKS:

ZaleceniaRecommendations

Poniżej przedstawiono ogólne zalecenia dotyczące używania Azure Policy dodatek:The following are general recommendations for using the Azure Policy Add-on:

  • Dodatek Azure Policy wymaga uruchomienia trzech składników programu Gatekeeper: 1 zasobnik inspekcji i 2 repliki zasobników elementów webhook.The Azure Policy Add-on requires three Gatekeeper components to run: 1 audit pod and 2 webhook pod replicas. Te składniki zużywają więcej zasobów w przypadku zwiększenia liczby zasobów kubernetes i przypisań zasad w klastrze, co wymaga operacji inspekcji i wymuszania.These components consume more resources as the count of Kubernetes resources and policy assignments increases in the cluster, which requires audit and enforcement operations.

    • W przypadku mniej niż 500 zasobników w jednym klastrze z maksymalnie 20 ograniczeniami: 2 procesory wirtualne i 350 MB pamięci na składnik.For fewer than 500 pods in a single cluster with a max of 20 constraints: 2 vCPUs and 350 MB memory per component.
    • W przypadku ponad 500 zasobników w jednym klastrze z maksymalnie 40 ograniczeniami: 3 procesory wirtualne i 600 MB pamięci na składnik.For more than 500 pods in a single cluster with a max of 40 constraints: 3 vCPUs and 600 MB memory per component.
  • Zasobniki systemu Windows nie obsługują kontekstów zabezpieczeń.Windows pods don't support security contexts. W związku z tym niektóre definicje Azure Policy, takie jak nie zezwalanie na uprawnienia administratora, nie mogą być eskalowane w zasobnikach systemu Windows i dotyczą tylko zasobników systemu Linux.Thus, some of the Azure Policy definitions, such as disallowing root privileges, can't be escalated in Windows pods and only apply to Linux pods.

Poniższe zalecenie dotyczy tylko dodatku AKS i Azure Policy add-on:The following recommendation applies only to AKS and the Azure Policy Add-on:

  • Zaplanuj zasobniki programu Gatekeeper przy użyciu puli węzłów systemu z CriticalAddonsOnly taintem.Use system node pool with CriticalAddonsOnly taint to schedule Gatekeeper pods. Aby uzyskać więcej informacji, zobacz Korzystanie z pul węzłów systemowych.For more information, see Using system node pools.
  • Zabezpieczanie ruchu wychodzącego z klastrów usługi AKS.Secure outbound traffic from your AKS clusters. Aby uzyskać więcej informacji, zobacz Sterowanie ruchem wychodzącym dla węzłów klastra.For more information, see Control egress traffic for cluster nodes.
  • Jeśli klaster został włączony, Tożsamość zarządzana na węźle (NMI) modyfikują tabelę iptable węzłów w celu przechwycenia wywołań do punktu końcowego metadanych aad-pod-identity wystąpienia platformy Azure.If the cluster has aad-pod-identity enabled, Node Managed Identity (NMI) pods modify the nodes' iptables to intercept calls to the Azure Instance Metadata endpoint. Ta konfiguracja oznacza, że każde żądanie do punktu końcowego metadanych jest przechwytywane przez usługę NMI, nawet jeśli zasobnik nie używa elementu aad-pod-identity .This configuration means any request made to the Metadata endpoint is intercepted by NMI even if the pod doesn't use aad-pod-identity. Definicję CRD elementu AzurePodIdentityException można skonfigurować w taki sposób, aby wszystkie żądania do punktu końcowego metadanych pochodzące z zasobnika, który pasuje do etykiet zdefiniowanych w crd, były proxied bez przetwarzania w usłudze aad-pod-identity NMI.AzurePodIdentityException CRD can be configured to inform aad-pod-identity that any requests to the Metadata endpoint originating from a pod that matches labels defined in CRD should be proxied without any processing in NMI. Zasobniki systemowe z etykietą w przestrzeni nazw kube-system powinny zostać wykluczone przez skonfigurowanie kubernetes.azure.com/managedby: aks aad-pod-identity crd elementu AzurePodIdentityException.The system pods with kubernetes.azure.com/managedby: aks label in kube-system namespace should be excluded in aad-pod-identity by configuring the AzurePodIdentityException CRD. Aby uzyskać więcej informacji, zobacz Disable aad-pod-identity for aad-pod-identity for a specific pod or application (Wyłączanie tożsamości aad-pod-identity dla określonego zasobnika lub aplikacji).For more information, see Disable aad-pod-identity for a specific pod or application. Aby skonfigurować wyjątek, zainstaluj wyjątek mikrofonu YAML.To configure an exception, install the mic-exception YAML.

Instalowanie Azure Policy dodatku dla AKSInstall Azure Policy Add-on for AKS

Przed zainstalowaniem Azure Policy lub włączeniem dowolnej funkcji usługi subskrypcja musi włączyć dostawców zasobów Microsoft.PolicyInsights.Before installing the Azure Policy Add-on or enabling any of the service features, your subscription must enable the Microsoft.PolicyInsights resource providers.

  1. Musisz zainstalować i skonfigurować interfejs wiersza polecenia platformy Azure w wersji 2.12.0 lub nowszej.You need the Azure CLI version 2.12.0 or later installed and configured. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana.Run az --version to find the version. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.If you need to install or upgrade, see Install the Azure CLI.

  2. Zarejestruj dostawców zasobów i funkcje w wersji zapoznawczej.Register the resource providers and preview features.

    • Azure Portal:Azure portal:

      Zarejestruj dostawców zasobów Microsoft.PolicyInsights.Register the Microsoft.PolicyInsights resource providers. Aby uzyskać instrukcje, zobacz Dostawcy zasobów i typy.For steps, see Resource providers and types.

    • Interfejs wiersza polecenia platformy Azure:Azure 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
      
  3. Jeśli zainstalowano ograniczone definicje zasad w wersji zapoznawczej, usuń dodatek z przyciskiem Wyłącz w klastrze usługi AKS na stronie Zasady.If limited preview policy definitions were installed, remove the add-on with the Disable button on your AKS cluster under the Policies page.

  4. Klaster AKS musi być w wersji 1.14 lub wyższej.The AKS cluster must be version 1.14 or higher. Użyj następującego skryptu, aby zweryfikować wersję klastra usługi 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. Zainstaluj wersję 2.12.0 lub nowszą interfejsu wiersza polecenia platformy Azure.Install version 2.12.0 or higher of the Azure CLI. Aby uzyskać więcej informacji, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.For more information, see Install the Azure CLI.

Po ukończeniu powyższych kroków wymagań wstępnych zainstaluj Azure Policy w klastrze usługi AKS, którym chcesz zarządzać.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. Uruchom usługę AKS w chmurze, Azure Portal pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Usługi Kubernetes.Launch the AKS service in the Azure portal by selecting All services, then searching for and selecting Kubernetes services.

    2. Wybierz jeden z klastrów usługi AKS.Select one of your AKS clusters.

    3. Wybierz pozycję Zasady po lewej stronie strony usługi Kubernetes.Select Policies on the left side of the Kubernetes service page.

    4. Na stronie głównej wybierz przycisk Włącz dodatek.In the main page, select the Enable add-on button.

      Uwaga

      Jeśli przycisk Wyłącz dodatek jest włączony i zostanie wyświetlony komunikat z ostrzeżeniem o migracji w wersji 2, dodatek w wersji 1 zostanie zainstalowany i musi zostać usunięty przed przypisaniem definicji zasad w wersji 2.If the Disable add-on button is enabled and a migration warning v2 message is displayed, v1 add-on is installed and must be removed prior to assigning v2 policy definitions. Przestarzały dodatek w wersji 1 zostanie automatycznie zastąpiony przez dodatek w wersji 2, począwszy od 24 sierpnia.The deprecated v1 add-on will automatically be replaced with the v2 add-on starting August 24, 2020. Następnie należy przypisać nowe wersje definicji zasad w wersji 2.New v2 versions of the policy definitions must then be assigned. Aby uaktualnić teraz, wykonaj następujące kroki:To upgrade now, follow these steps:

      1. Sprawdź, czy klaster usługi AKS ma zainstalowany dodatek w wersji 1, odwiedzając stronę Zasady w klastrze usługi AKS i "Bieżący klaster używa Azure Policy dodatku w wersji 1..." Komunikat.Validate your AKS cluster has the v1 add-on installed by visiting the Policies page on your AKS cluster and has the "The current cluster uses Azure Policy add-on v1..." message.
      2. Usuń dodatek.Remove the add-on.
      3. Wybierz przycisk Włącz dodatek, aby zainstalować wersję 2 dodatku.Select the Enable add-on button to install the v2 version of the add-on.
      4. Przypisywanie wersji 2 wbudowanych definicji zasad w wersji 1Assign v2 versions of your v1 built-in policy definitions
  • Interfejs wiersza polecenia platformy AzureAzure 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
    

Aby sprawdzić, czy instalacja dodatku powiodła się i czy zasobniki azure-policy i gatekeeper są uruchomione, uruchom następujące polecenie: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

Na koniec sprawdź, czy jest zainstalowany najnowszy dodatek, uruchamiając to polecenie interfejsu wiersza polecenia platformy Azure, zastępując pozycję nazwą grupy zasobów, a nazwą klastra <rg> <cluster-name> usługi AKS: az aks show --query addonProfiles.azurepolicy -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 --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Wynik powinien wyglądać podobnie do następujących danych wyjściowych, a plik config.version powinien wyglądać następująco: v2The result should look similar to the following output and config.version should be v2:

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

Instalowanie Azure Policy dla Azure Arc Kubernetes (wersja zapoznawcza)Install Azure Policy Add-on for Azure Arc enabled Kubernetes (preview)

Przed zainstalowaniem dodatku usługi Azure Policy lub włączeniem dowolnej funkcji usługi subskrypcja musi włączyć dostawcę zasobów Microsoft.PolicyInsights i utworzyć przypisanie roli dla jednostki usługi klastra.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. Musisz zainstalować i skonfigurować interfejs wiersza polecenia platformy Azure w wersji 2.12.0 lub nowszej.You need the Azure CLI version 2.12.0 or later installed and configured. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana.Run az --version to find the version. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.If you need to install or upgrade, see Install the Azure CLI.

  2. Aby włączyć dostawcę zasobów, wykonaj kroki opisane w tesłudze Resource providers and types (Dostawcy zasobów i typy) lub uruchom interfejs wiersza polecenia platformy Azure Azure PowerShell polecenia:To enable the resource provider, follow the steps in Resource providers and types or run either the Azure CLI or Azure PowerShell command:

    • Interfejs wiersza polecenia platformy AzureAzure 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. Klaster Kubernetes musi być w wersji 1.14 lub wyższej.The Kubernetes cluster must be version 1.14 or higher.

  4. Zainstaluj program Helm 3.Install Helm 3.

  5. Klaster Kubernetes jest włączony dla Azure Arc. Aby uzyskać więcej informacji, zobacz dołączanie klastra Kubernetes do Azure Arc.Your Kubernetes cluster enabled for Azure Arc. For more information, see onboarding a Kubernetes cluster to Azure Arc.

  6. Mieć w pełni kwalifikowany identyfikator zasobu platformy Azure dla Azure Arc Kubernetes z włączoną obsługą.Have the fully qualified Azure Resource ID of the Azure Arc enabled Kubernetes cluster.

  7. Otwórz porty dla dodatku.Open ports for the add-on. Dodatek Azure Policy używa tych domen i portów do pobierania definicji zasad i przypisań oraz zgodności raportów klastra z powrotem do Azure Policy.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.

    DomenaDomain PortPort
    gov-prod-policy-data.trafficmanager.net 443
    raw.githubusercontent.com 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  8. Przypisz przypisanie roli "Funkcja zapisu danych usługi Policy Insights (wersja zapoznawcza)" Azure Arc klastra Kubernetes z włączoną obsługą.Assign 'Policy Insights Data Writer (Preview)' role assignment to the Azure Arc enabled Kubernetes cluster. Zastąp nazwą swojego identyfikatora subskrypcji, nazwą Azure Arc klastra Kubernetes z włączoną obsługą <subscriptionId> <rg> platformy Kubernetes, a nazwą klastra Kubernetes z włączoną obsługą <clusterName> usługi 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. Śledź zwrócone wartości dla parametrów appId, password i tenant w krokach instalacji.Keep track of the returned values for appId, password, and tenant for the installation steps.

    • Interfejs wiersza polecenia platformy AzureAzure 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
      

    Przykładowe dane wyjściowe powyższych poleceń:Sample output of the above commands:

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

Po ukończeniu powyższych kroków wymagań wstępnych zainstaluj Azure Policy w klastrze Kubernetes z Azure Arc obsługą funkcji:Once the above prerequisite steps are completed, install the Azure Policy Add-on in your Azure Arc enabled Kubernetes cluster:

  1. Dodaj Azure Policy dodatku do 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. Zainstaluj Azure Policy przy użyciu pakietu 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>
    

    Aby uzyskać więcej informacji na temat instalacji dodatku Helm Chart, zobacz Azure Policy add-on Helm Chart definition (Definicja dodatku Helm Chart) w witrynie GitHub.For more information about what the add-on Helm Chart installs, see the Azure Policy Add-on Helm Chart definition on GitHub.

Aby sprawdzić, czy instalacja dodatku powiodła się i czy zasobniki azure-policy i gatekeeper są uruchomione, uruchom następujące polecenie: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

Instalowanie Azure Policy dla aparatu AKS (wersja zapoznawcza)Install Azure Policy Add-on for AKS Engine (preview)

Przed zainstalowaniem dodatku usługi Azure Policy lub włączeniem dowolnej funkcji usługi subskrypcja musi włączyć dostawcę zasobów Microsoft.PolicyInsights i utworzyć przypisanie roli dla jednostki usługi klastra.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. Musisz mieć zainstalowany i skonfigurowany interfejs wiersza polecenia platformy Azure w wersji 2.0.62 lub nowszej.You need the Azure CLI version 2.0.62 or later installed and configured. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana.Run az --version to find the version. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.If you need to install or upgrade, see Install the Azure CLI.

  2. Aby włączyć dostawcę zasobów, wykonaj kroki opisane w tesłudze Resource providers and types (Dostawcy zasobów i typy) lub uruchom interfejs wiersza polecenia platformy Azure Azure PowerShell polecenia:To enable the resource provider, follow the steps in Resource providers and types or run either the Azure CLI or Azure PowerShell command:

    • Interfejs wiersza polecenia platformy AzureAzure 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. Utwórz przypisanie roli dla jednostki usługi klastra.Create a role assignment for the cluster service principal.

    • Jeśli nie znasz identyfikatora aplikacji jednostki usługi klastra, odszukaj go za pomocą następującego polecenia.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
      
    • Przypisz przypisanie roli "Narzędzie do zapisu danych usługi Policy Insights (wersja zapoznawcza)" do identyfikatora aplikacji jednostki usługi klastra (wartość aadClientID z poprzedniego kroku) przy użyciu interfejsu wiersza polecenia platformy Azure.Assign 'Policy Insights Data Writer (Preview)' role assignment to the cluster service principal app ID (value aadClientID from previous step) with Azure CLI. Zastąp identyfikatorem subskrypcji, a grupę zasobów, w którym znajduje <subscriptionId> <aks engine cluster resource group> się samodzielnie zarządzany klaster Kubernetes aparatu AKS.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)"
      

Po ukończeniu powyższych kroków wymagań wstępnych zainstaluj Azure Policy instalacji.Once the above prerequisite steps are completed, install the Azure Policy Add-on. Instalacja może być podczas cyklu tworzenia lub aktualizowania aparatu usługi AKS lub jako niezależna akcja w istniejącym klastrze.The installation can be during the creation or update cycle of an AKS Engine or as an independent action on an existing cluster.

  • Instalowanie podczas cyklu tworzenia lub aktualizacjiInstall during creation or update cycle

    Aby włączyć dodatek Azure Policy podczas tworzenia nowego klastra samodzielnego lub jako aktualizację istniejącego klastra, dołącz definicję klastra właściwości dodatków dla aparatu usługi AKS. 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
    }]
    

    Aby uzyskać więcej informacji na ten temat, zobacz przewodnik zewnętrzny definicja klastra aparatu AKS.For more information about, see the external guide AKS Engine cluster definition.

  • Instalowanie w istniejącym klastrze za pomocą wykresów Programu HelmInstall in existing cluster with Helm Charts

    Aby przygotować klaster i zainstalować dodatek, należy wykonać następujące czynności:Use the following steps to prepare the cluster and install the add-on:

    1. Zainstaluj program Helm 3.Install Helm 3.

    2. Dodaj Azure Policy do 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
      

      Aby uzyskać więcej informacji, zobacz Helm Chart - Quickstart Guide (Wykres Helm — Przewodnik Szybki start).For more information, see Helm Chart - Quickstart Guide.

    3. Zainstaluj dodatek za pomocą pakietu Helm.Install the add-on with a Helm Chart. Zastąp identyfikatorem subskrypcji, a grupę zasobów, w którym znajduje się samodzielnie zarządzany klaster <subscriptionId> <aks engine cluster resource group> Kubernetes aparatu AKS.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>"
      

      Aby uzyskać więcej informacji na temat instalacji dodatku Helm Chart, zobacz definicję dodatku Helm Chart Azure Policy w witrynie GitHub.For more information about what the add-on Helm Chart installs, see the Azure Policy Add-on Helm Chart definition on GitHub.

      Uwaga

      Ze względu na relację między Azure Policy i identyfikatorem grupy zasobów Azure Policy obsługuje tylko jeden klaster aparatu usługi AKS dla każdej grupy zasobów.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.

Aby sprawdzić, czy instalacja dodatku powiodła się i czy zasobniki azure-policy i gatekeeper są uruchomione, uruchom następujące polecenie: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

Język zasadPolicy language

Struktura Azure Policy do zarządzania platformą Kubernetes jest zgodna z istniejącymi definicjami zasad.The Azure Policy language structure for managing Kubernetes follows that of existing policy definitions. W trybie dostawcy zasobów programu efekty inspekcji i odmowy są używane do zarządzania Microsoft.Kubernetes.Data klastrami Kubernetes. With a Resource Provider mode of Microsoft.Kubernetes.Data, the effects audit and deny are used to manage your Kubernetes clusters. Inspekcja i odmowa muszą zawierać właściwości szczegółów specyficzne dla pracy z usługami OPA Constraint Framework i Gatekeeper v3.Audit and deny must provide details properties specific to working with OPA Constraint Framework and Gatekeeper v3.

W ramach właściwości details.constraintTemplate i details.constraint w definicji zasad usługa Azure Policy przekazuje do dodatku adresy URI tych właściwości CustomResourceDefinitions (CRD).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 to język, który opa i program Gatekeeper obsługują w celu zweryfikowania żądania do klastra Kubernetes.Rego is the language that OPA and Gatekeeper support to validate a request to the Kubernetes cluster. Dzięki obsługi istniejącego standardu zarządzania platformą Kubernetes usługa Azure Policy umożliwia ponowne używanie istniejących reguł i parowanie ich z usługą Azure Policy, aby uzyskać ujednolicone środowisko raportowania zgodności w chmurze.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. Aby uzyskać więcej informacji, zobacz Co to jest Rego?.For more information, see What is Rego?.

Przypisywanie wbudowanej definicji zasadAssign a built-in policy definition

Aby przypisać definicję zasad do klastra Kubernetes, musisz mieć przypisane odpowiednie operacje przypisywania zasad kontroli dostępu na podstawie ról (RBAC) platformy Azure.To assign a policy definition to your Kubernetes cluster, you must be assigned the appropriate Azure role-based access control (Azure RBAC) policy assignment operations. Role wbudowane platformy Azure Współautor zasad zasobów i Właściciel mają te operacje. The Azure built-in roles Resource Policy Contributor and Owner have these operations. Aby dowiedzieć się więcej, zobacz Uprawnienia RBAC platformy Azure w Azure Policy.To learn more, see Azure RBAC permissions in Azure Policy.

Znajdź wbudowane definicje zasad do zarządzania klastrem przy użyciu Azure Portal, aby wykonać następujące czynności:Find the built-in policy definitions for managing your cluster using the Azure portal with the following steps:

  1. Uruchom usługę Azure Policy w Azure Portal.Start the Azure Policy service in the Azure portal. Wybierz pozycję Wszystkie usługi w okienku po lewej stronie, a następnie wyszukaj i wybierz pozycję Zasady.Select All services in the left pane and then search for and select Policy.

  2. W lewym okienku strony Azure Policy wybierz pozycję Definicje.In the left pane of the Azure Policy page, select Definitions.

  3. W polu listy rozwijanej Kategoria użyj opcji Zaznacz wszystko, aby wyczyścić filtr, a następnie wybierz pozycję Kubernetes.From the Category dropdown list box, use Select all to clear the filter and then select Kubernetes.

  4. Wybierz definicję zasad, a następnie wybierz przycisk Przypisz.Select the policy definition, then select the Assign button.

  5. Ustaw zakres na grupę zarządzania, subskrypcję lub grupę zasobów klastra Kubernetes, w którym będzie stosowane przypisanie zasad.Set the Scope to the management group, subscription, or resource group of the Kubernetes cluster where the policy assignment will apply.

    Uwaga

    Podczas przypisywania Azure Policy dla definicji kubernetes zakres musi zawierać zasób klastra.When assigning the Azure Policy for Kubernetes definition, the Scope must include the cluster resource. W przypadku klastra aparatu usługi AKS zakres musi być grupą zasobów klastra.For an AKS Engine cluster, the Scope must be the resource group of the cluster.

  6. Nadaj przypisaniu zasad nazwę i opis, których możesz użyć do jego łatwego zidentyfikowania.Give the policy assignment a Name and Description that you can use to identify it easily.

  7. Ustaw wymuszanie zasad na jedną z poniższych wartości.Set the Policy enforcement to one of the values below.

    • Włączone — wymuszanie zasad w klastrze.Enabled - Enforce the policy on the cluster. Żądania naruszeń dotyczące danych na kubernetes są odrzucone.Kubernetes admission requests with violations are denied.

    • Wyłączone — nie wymuszaj zasad w klastrze.Disabled - Don't enforce the policy on the cluster. Żądania naruszeń dotyczące naruszeń naruszeń na stronie kubernetes nie są odmówień.Kubernetes admission requests with violations aren't denied. Wyniki oceny zgodności są nadal dostępne.Compliance assessment results are still available. Podczas wycofywania nowych definicji zasad w uruchomionych klastrach opcja Wyłączone jest przydatna do testowania definicji zasad, ponieważ żądania wejścia z naruszeniami nie są odmowami.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. Wybierz opcję Dalej.Select Next.

  9. Ustawianie wartości parametrówSet parameter values

    • Aby wykluczyć przestrzenie nazw kubernetes z oceny zasad, określ listę przestrzeni nazw w parametrze Wykluczenia przestrzeni nazw.To exclude Kubernetes namespaces from policy evaluation, specify the list of namespaces in parameter Namespace exclusions. Zalecane jest wykluczenie: kube-system, gatekeeper-system i azure-arc.It's recommended to exclude: kube-system, gatekeeper-system, and azure-arc.
  10. Wybierz pozycję Przejrzyj i utwórz.Select Review + create.

Możesz też skorzystać z przewodnika Szybki start Przypisywanie zasad — Portal, aby znaleźć i przypisać zasady kubernetes.Alternately, use the Assign a policy - Portal quickstart to find and assign a Kubernetes policy. Wyszukaj definicję zasad platformy Kubernetes zamiast przykładowej "audit vms".Search for a Kubernetes policy definition instead of the sample 'audit vms'.

Ważne

Wbudowane definicje zasad są dostępne dla klastrów Kubernetes w kategorii Kubernetes.Built-in policy definitions are available for Kubernetes clusters in category Kubernetes. Aby uzyskać listę wbudowanych definicji zasad, zobacz Przykłady dla środowiska Kubernetes.For a list of built-in policy definitions, see Kubernetes samples.

Ocena zasadPolicy evaluation

Dodatek jest sprawdzany w usłudze Azure Policy zmian w przypisaniach zasad co 15 minut.The add-on checks in with Azure Policy service for changes in policy assignments every 15 minutes. Podczas tego cyklu odświeżania dodatek sprawdza zmiany.During this refresh cycle, the add-on checks for changes. Te zmiany wyzwalają tworzenie, aktualizacje lub usuwanie szablonów ograniczeń i ograniczeń.These changes trigger creates, updates, or deletes of the constraint templates and constraints.

Jeśli w klastrze Kubernetes przestrzeń nazw ma jedną z następujących etykiet, żądania wejścia z naruszeniami nie są odmowami.In a Kubernetes cluster, if a namespace has either of the following labels, the admission requests with violations aren't denied. Wyniki oceny zgodności są nadal dostępne.Compliance assessment results are still available.

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

Uwaga

Administrator klastra może mieć uprawnienia do tworzenia i aktualizowania zasobów ograniczeń i szablonów ograniczeń instalowanych przez dodatek programu Azure Policy, ale nie są to obsługiwane scenariusze, ponieważ aktualizacje ręczne są zastępowane.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. Program Gatekeeper w dalszym ciągu ocenia zasady, które istniały przed zainstalowaniem dodatku i przypisaniem Azure Policy definicji zasad.Gatekeeper continues to evaluate policies that existed prior to installing the add-on and assigning Azure Policy policy definitions.

Co 15 minut dodatek wywołuje pełne skanowanie klastra.Every 15 minutes, the add-on calls for a full scan of the cluster. Po zebraniu szczegółów pełnego skanowania i wszelkich ocen w czasie rzeczywistym przez strażnika prób zmian w klastrze dodatek zgłasza wyniki z powrotem do usługi Azure Policy w celu uwzględnienia szczegółów zgodności, takich jak dowolne Azure Policy przypisania.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. Podczas cyklu inspekcji są zwracane tylko wyniki aktywnych przypisań zasad.Only results for active policy assignments are returned during the audit cycle. Wyniki inspekcji mogą być również widoczne jako naruszenia wymienione w polu stanu ograniczenia, które zakończyło się niepowodzeniem.Audit results can also be seen as violations listed in the status field of the failed constraint. Aby uzyskać szczegółowe informacje na temat niezgodnych zasobów, zobacz Component details for Resource Provider modes (Szczegóły składników dla trybów dostawcy zasobów).For details on Non-compliant resources, see Component details for Resource Provider modes.

Uwaga

Każdy raport zgodności w Azure Policy dla klastrów Kubernetes zawiera wszystkie naruszenia w ciągu ostatnich 45 minut.Each compliance report in Azure Policy for your Kubernetes clusters include all violations within the last 45 minutes. Znacznik czasu wskazuje, kiedy wystąpiło naruszenie.The timestamp indicates when a violation occurred.

Inne zagadnienia:Some other considerations:

  • Jeśli subskrypcja klastra jest zarejestrowana w Azure Security Center, Azure Security Center kubernetes są automatycznie stosowane w klastrze.If the cluster subscription is registered with Azure Security Center, then Azure Security Center Kubernetes policies are applied on the cluster automatically.

  • Po zastosowaniu zasad odmowy w klastrze z istniejącymi zasobami kubernetes wszystkie istniejące zasoby niezgodne z nowymi zasadami będą nadal działać.When a deny policy is applied on cluster with existing Kubernetes resources, any pre-existing resource that is not compliant with the new policy continues to run. Gdy niezgodny zasób zostanie ponownieplanowany w innym węźle, program Gatekeeper blokuje tworzenie zasobów.When the non-compliant resource gets rescheduled on a different node the Gatekeeper blocks the resource creation.

  • Jeśli klaster ma zasady odmowy, które weryfikują zasoby, podczas tworzenia wdrożenia użytkownik nie zobaczy komunikatu o odrzuceniu.When a cluster has a deny policy that validates resources, the user will not see a rejection message when creating a deployment. Rozważmy na przykład wdrożenie kubernetes, które zawiera zestawy replik i zasobniki.For example, consider a Kubernetes deployment that contains replicasets and pods. Gdy użytkownik wykonuje polecenie kubectl describe deployment $MY_DEPLOYMENT , nie zwraca komunikatu o odrzuceniu w ramach zdarzeń.When a user executes kubectl describe deployment $MY_DEPLOYMENT, it does not return a rejection message as part of events. Zwraca jednak kubectl describe replicasets.apps $MY_DEPLOYMENT zdarzenia skojarzone z odrzuceniem.However, kubectl describe replicasets.apps $MY_DEPLOYMENT returns the events associated with rejection.

RejestrowanieLogging

Zarówno kontroler/kontener platformy Kubernetes, jak i zasobniki azure-policy i gatekeeper przechowują dzienniki w klastrze Kubernetes.As a Kubernetes controller/container, both the azure-policy and gatekeeper pods keep logs in the Kubernetes cluster. Dzienniki można ujawnione na stronie Szczegółowe informacje klastra Kubernetes.The logs can be exposed in the Insights page of the Kubernetes cluster. Aby uzyskać więcej informacji, zobacz Monitor your Kubernetes cluster performance with Azure Monitor for containers (Monitorowanie wydajności klastra Kubernetes za pomocą Azure Monitor kontenerów).For more information, see Monitor your Kubernetes cluster performance with Azure Monitor for containers.

Aby wyświetlić dzienniki dodatków, użyj funkcji 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

Aby uzyskać więcej informacji, zobacz Debugging Gatekeeper (Debugowanie programu Gatekeeper) w dokumentacji programu Gatekeeper.For more information, see Debugging Gatekeeper in the Gatekeeper documentation.

Rozwiązywanie problemów z dodatkuTroubleshooting the add-on

Aby uzyskać więcej informacji na temat rozwiązywania problemów z dodatku dla rozwiązania Kubernetes, zobacz sekcję Kubernetes w artykule Azure Policy rozwiązywania problemów.For more information about troubleshooting the Add-on for Kubernetes, see the Kubernetes section of the Azure Policy troubleshooting article.

Usuwanie dodatkuRemove the add-on

Usuwanie dodatku z aksRemove the add-on from AKS

Aby usunąć Azure Policy z klastra usługi AKS, użyj interfejsu wiersza Azure Portal platformy Azure:To remove the Azure Policy Add-on from your AKS cluster, use either the Azure portal or Azure CLI:

  • Azure PortalAzure portal

    1. Uruchom usługę AKS w chmurze, Azure Portal pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Usługi Kubernetes.Launch the AKS service in the Azure portal by selecting All services, then searching for and selecting Kubernetes services.

    2. Wybierz klaster usługi AKS, w którym chcesz Azure Policy dodatek.Select your AKS cluster where you want to disable the Azure Policy Add-on.

    3. Wybierz pozycję Zasady po lewej stronie strony usługi Kubernetes.Select Policies on the left side of the Kubernetes service page.

    4. Na stronie głównej wybierz przycisk Wyłącz dodatek.In the main page, select the Disable add-on button.

  • Interfejs wiersza polecenia platformy AzureAzure 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
    

Usuwanie dodatku z Azure Arc kubernetesRemove the add-on from Azure Arc enabled Kubernetes

Aby usunąć dodatek Azure Policy i program Gatekeeper z klastra Kubernetes z włączoną Azure Arc, uruchom następujące polecenie 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

Usuwanie dodatku z aparatu AKSRemove the add-on from AKS Engine

Aby usunąć dodatek Azure Policy i program Gatekeeper z klastra aparatu AKS, użyj metody zgodnej ze sposobem instalacji dodatku: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:

  • W przypadku instalacji przez ustawienie właściwości addons w definicji klastra dla aparatu usługi AKS:If installed by setting the addons property in the cluster definition for AKS Engine:

    Po zmianie właściwości addons dla azure-policy na wartość false ponownie wdeń definicję klastra do aparatu usługi AKS:Redeploy the cluster definition to AKS Engine after changing the addons property for azure-policy to false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    

    Aby uzyskać więcej informacji, zobacz AKS Engine - Disable Azure Policy Add-on (Aparat usługi AKS — wyłączanie dodatku Azure Policy).For more information, see AKS Engine - Disable Azure Policy Add-on.

  • W przypadku instalacji z pakietami Helm Charts uruchom następujące polecenie helm:If installed with Helm Charts, run the following Helm command:

    helm uninstall azure-policy-addon
    

Dane diagnostyczne zbierane przez Azure Policy dodatekDiagnostic data collected by Azure Policy Add-on

Dodatek Azure Policy dla usługi Kubernetes zbiera ograniczone dane diagnostyczne klastra.The Azure Policy Add-on for Kubernetes collects limited cluster diagnostic data. Te dane diagnostyczne są istotnymi danymi technicznymi związanymi z oprogramowaniem i wydajnością.This diagnostic data is vital technical data related to software and performance. Jest on używany w następujący sposób:It's used in the following ways:

  • Bądź Azure Policy aktualnego dodatkuKeep Azure Policy Add-on up to date
  • Zachowaj Azure Policy, niezawodność i działanie dodatkuKeep Azure Policy Add-on secure, reliable, performant
  • Ulepszanie Azure Policy dodatek — dzięki zagregowanej analizie użycia dodatkuImprove Azure Policy Add-on - through the aggregate analysis of the use of the add-on

Informacje zbierane przez dodatek nie są danymi osobowy.The information collected by the add-on isn't personal data. Obecnie zbierane są następujące szczegóły:The following details are currently collected:

  • Azure Policy agenta dodatkuAzure Policy Add-on agent version
  • Typ klastraCluster type
  • Region klastraCluster region
  • Grupa zasobów klastraCluster resource group
  • Identyfikator zasobu klastraCluster resource ID
  • Identyfikator subskrypcji klastraCluster subscription ID
  • System operacyjny klastra (przykład: Linux)Cluster OS (Example: Linux)
  • Miasto klastra (przykład: Seattle)Cluster city (Example: Seattle)
  • Stan klastra lub prowincja (przykład: Waszyngton)Cluster state or province (Example: Washington)
  • Kraj lub region klastra (przykład: Stany Zjednoczone)Cluster country or region (Example: United States)
  • Wyjątki/błędy napotkane przez Azure Policy podczas instalacji agenta podczas oceny zasadExceptions/errors encountered by Azure Policy Add-on during agent installation on policy evaluation
  • Liczba definicji zasad strażnika, które Azure Policy dodatekNumber of Gatekeeper policy definitions not installed by Azure Policy Add-on

Następne krokiNext steps