Principy Azure Policy pro clustery Kubernetes

Azure Policy rozšiřuje Gatekeeper v3, webhook kontroleru přístupu pro agenta OPA (Open Policy Agent), aby centralizovaným a konzistentním způsobem na clustery aplikuje vynucení a bezpečnostní opatření ve velkém měřítku. Azure Policy umožňuje spravovat a hlásit stav dodržování předpisů clusterů Kubernetes z jednoho místa. Doplněk vyhotověl následujícím funkcím:

  • Kontroluje Azure Policy služby pro přiřazení zásad ke clusteru.
  • Nasadí definice zásad do clusteru jako šablonu omezení a omezí vlastní prostředky.
  • Hlásí podrobnosti auditování a dodržování předpisů zpět Azure Policy službě.

Azure Policy pro Kubernetes podporuje následující clusterová prostředí:

Důležité

Doplňky pro modul AKS a Kubernetes s podporou Arc jsou ve verzi Preview. Azure Policy pro Kubernetes podporuje pouze fondy uzlů Linuxu a integrované definice zásad (vlastní definice zásad jsou funkcí ve verzi Public Preview). Integrované definice zásad jsou v kategorii Kubernetes. Definice zásad s omezenou verzí Preview s efektem EnforceOPAConstraint a EnforceRegoPolicy a související kategorií služby Kubernetes Service jsou zastaralé. Místo toho použijte efekty auditovat a odepřít v režimu poskytovatele prostředků Microsoft.Kubernetes.Data .

Přehled

Pokud chcete povolit a Azure Policy s clusterem Kubernetes, udělejte toto:

  1. Nakonfigurujte cluster Kubernetes a nainstalujte doplněk :

    Poznámka

    Běžné problémy s instalací najdete v tématu Řešení potíží Azure Policy doplňku.

  2. Principy Azure Policy pro Kubernetes

  3. Přiřazení definice ke clusteru Kubernetes

  4. Čekání na ověření

Omezení

Následující obecná omezení platí pro Azure Policy pro clustery Kubernetes:

  • Azure Policy Kubernetes verze 1.14 nebo novější se podporuje doplněk Kubernetes.
  • Azure Policy pro Kubernetes je možné nasadit pouze do fondů uzlů s Linuxem.
  • Podporují se pouze integrované definice zásad. Vlastní definice zásad jsou funkcí ve verzi Public Preview.
  • Maximální počet podů podporovaných Azure Policy doplňkem: 10 000
  • Maximální počet nevyhovujících záznamů na zásadu na cluster: 500
  • Maximální počet nevyhovujících záznamů na předplatné: 1 milion
  • Instalace Gatekeeperu mimo Azure Policy se nepodporují. Před povolením doplňku Gatekeeper odinstalujte všechny komponenty nainstalované předchozí Azure Policy gatekeeper.
  • Pro režim poskytovatele prostředků nejsou k dispozici důvody Microsoft.Kubernetes.Data nedodržování předpisů. Použijte podrobnosti o komponentách.
  • Výjimky na úrovni komponent nejsou podporované pro režimy poskytovatele prostředků.

Následující omezení platí pouze pro Azure Policy pro AKS:

  • Zásady zabezpečení podů AKS a Azure Policy doplňku pro AKS není možné povolit. Další informace najdete v tématu Omezení zabezpečení podů AKS.
  • Obory názvů automaticky vyloučené Azure Policy doplněk pro vyhodnocení: kube-system, gatekeeper-system a aks-periscope.

Doporučení

Toto jsou obecná doporučení pro používání Azure Policy doplňku:

  • Doplněk Azure Policy ke spuštění vyžaduje tři součásti Gatekeeperu: jeden pod auditu a dvě repliky podů webhooku. Tyto komponenty spotřebovávají více prostředků, protože se v clusteru zvyšuje počet prostředků Kubernetes a přiřazení zásad, což vyžaduje operace auditování a vynucování.

    • Pro méně než 500 podů v jednom clusteru s maximálně 20 omezeními: dva virtuální procesory a 350 MB paměti na komponentu.
    • Pro více než 500 podů v jednom clusteru s maximálně 40 omezeními: tři virtuální procesory a 600 MB paměti na komponentu.
  • Windows pody nepodporují kontexty zabezpečení. Proto některé z definic Azure Policy, jako je například neumožnit oprávnění uživatele root, nelze eskalovat v podech Windows a použít pouze na pody Linuxu.

Následující doporučení platí pouze pro AKS a Azure Policy doplněk:

  • K naplánování podů Gatekeeperu použijte fond systémových uzlů CriticalAddonsOnly s taintem. Další informace najdete v tématu Použití fondů systémových uzlů.
  • Zabezpečte odchozí provoz z clusterů AKS. Další informace najdete v tématu Řízení příchozího přenosu dat pro uzly clusteru.
  • Pokud je cluster aad-pod-identity povolený, Identita spravovaná na uzlu (NMI) upraví iptables uzlů tak, aby zachycovat volání koncového bodu metadat instance Azure. Tato konfigurace znamená, že každý požadavek na koncový bod metadat zachytí NMI i v případě, že pod nepodporuje aad-pod-identity . Výjimku CRD AzurePodIdentityException je možné nakonfigurovat tak, aby informovala o tom, že všechny požadavky na koncový bod metadat pocházející z podu, který odpovídá popiskům definovaným v SEZNAMU CRD, by měly být proximovány bez jakéhokoli zpracování v aad-pod-identity NMI. Systémové pody s kubernetes.azure.com/managedby: aks popiskem v oboru názvů kube-system by měly být vyloučené z konfigurace aad-pod-identity CRD AzurePodIdentityException. Další informace najdete v tématu Zakázání aad-pod-identity pro konkrétní pod nebo aplikaci. Pokud chcete nakonfigurovat výjimku, nainstalujte YAML mic-exception.

Instalace Azure Policy pro AKS

Před instalací Azure Policy nebo povolením jakékoli z funkcí služby musí vaše předplatné povolit poskytovatele prostředků Microsoft.PolicyInsights.

  1. Potřebujete mít nainstalované a nakonfigurované rozhraní Azure CLI verze 2.12.0 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace rozhraní příkazového řádku Azure CLI.

  2. Zaregistrujte poskytovatele prostředků a funkce Preview.

    • Azure Portal:

      Zaregistrujte poskytovatele prostředků Microsoft.PolicyInsights. Postup najdete v tématu Poskytovatelé a typy prostředků.

    • 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. Pokud byly nainstalované omezené definice zásad verze Preview, odeberte doplněk tlačítkem Zakázat v clusteru AKS na stránce Zásady.

  4. Cluster AKS musí mít verzi 1.14 nebo novější. K ověření verze clusteru AKS použijte následující skript:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  5. Nainstalujte azure CLI verze 2.12.0 nebo novější. Další informace najdete v tématu Instalace Azure CLI.

Po dokončení výše uvedených požadovaných kroků nainstalujte doplněk Azure Policy v clusteru AKS, který chcete spravovat.

  • portál Azure

    1. Spusťte službu AKS v Azure Portal tak, že vyberete Všechny služby a pak vyhledáte a vyberete Služby Kubernetes.

    2. Vyberte jeden z vašich clusterů AKS.

    3. Na levé straně stránky služby Kubernetes vyberte Zásady.

    4. Na hlavní stránce vyberte tlačítko Povolit doplněk.

  • Azure 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
    

Pokud chcete ověřit, že instalace doplňku byla úspěšná a že jsou spuštěné pody azure-policy a gatekeeper, spusťte následující příkaz:

# 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

Nakonec spuštěním tohoto příkazu Azure CLI ověřte, že je nainstalovaný nejnovější doplněk. Nahraďte názvem vaší skupiny prostředků a názvem clusteru <rg> <cluster-name> AKS: az aks show --query addonProfiles.azurePolicy -g <rg> -n <cluster-name> . Výsledek by měl vypadat podobně jako následující výstup:

{
        "config": null,
        "enabled": true,
        "identity": null
}

Instalace Azure Policy pro Azure Arc Kubernetes (Preview)

Azure Policy pro Kubernetes umožňuje spravovat a hlásit stav dodržování předpisů clusterů Kubernetes z jednoho místa.

Tento článek popisuje, jak vytvořit, zobrazit stavrozšíření a odstranit Azure Policy rozšíření Kubernetes.

Přehled platformy rozšíření najdete v tématu Azure Arc clusterů.

Požadavky

Poznámka: Pokud jste již nasadili Azure Policy pro Kubernetes na clusteru Azure Arc pomocí Helmu přímo bez rozšíření, postupujte podle uvedených pokynů k odstranění chartu Helm. Po odstranění můžete pokračovat.

  1. Ujistěte se, že je váš cluster Kubernetes podporovanou distribucí.

    Poznámka: Azure Policy pro Arc se podporuje v následujících distribucích Kubernetes.

  2. Ujistěte se, že jste splnili všechny běžné požadavky na rozšíření Kubernetes uvedené tady, včetně připojení clusteru k Azure Arc.

    Poznámka: rozšíření Azure Policy podporuje u clusterů Kubernetes s povoleným obloukem v těchto oblastech.

  3. Otevřete porty pro rozšíření Azure Policy. Rozšíření Azure Policy používá tyto domény a porty k načtení definic zásad a přiřazení a nahlášení kompatibility clusteru zpátky do Azure Policy.

    Doména Port
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Před instalací rozšíření Azure Policy nebo povolením kterékoli funkce služby musí vaše předplatné umožňovat poskytovatele prostředků Microsoft. PolicyInsights .

    poznámka: pokud chcete poskytovatele prostředků povolit, postupujte podle kroků v části poskytovatelé a typy prostředků nebo spusťte příkaz Azure CLI nebo Azure PowerShell:

    • 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'
      
    • Azure 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'
      

Vytvořit rozšíření Azure Policy

Při vytváření rozšíření Azure Policy Pamatujte na následující:

  • Automatický upgrade je ve výchozím nastavení povolený, což aktualizuje Azure Policy dílčí verze rozšíření v případě, že se nasadí nějaké nové změny.
  • Všechny proměnné proxy předané jako parametry connectedk8s budou rozšířeny do rozšíření Azure Policy pro podporu odchozího proxy serveru.

Chcete-li vytvořit instanci rozšíření pro cluster s povoleným ARC, spusťte následující příkaz, který nahradí <> vaše hodnoty:

az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>

Příklad:

az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy

Příklad výstupu:

{
  "aksAssignedIdentity": null,
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": {},
  "configurationSettings": {},
  "customLocationSettings": null,
  "errorInfo": null,
  "extensionType": "microsoft.policyinsights",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
 "identity": {
    "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tenantId": null,
    "type": "SystemAssigned"
  },
  "location": null,
  "name": "azurepolicy",
  "packageUri": null,
  "provisioningState": "Succeeded",
  "releaseTrain": "Stable",
  "resourceGroup": "my-test-rg",
  "scope": {
    "cluster": {
      "releaseNamespace": "kube-system"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": {
    "createdAt": "2021-10-27T01:20:06.834236+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
  },
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "1.1.0"
}

Zobrazit rozšíření Azure Policy

Chcete-li zkontrolovat, zda bylo vytváření instancí rozšíření úspěšné, a zkontrolujte metadata rozšíření, spusťte následující příkaz, který nahradí <> vaše hodnoty:

az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Příklad:

az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy

Pokud chcete ověřit, jestli je instalace rozšíření úspěšná a že jsou spuštěné služby Azure-Policy a gatekeeper, spusťte následující příkaz:

# 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

Odstranit rozšíření Azure Policy

Chcete-li instanci rozšíření odstranit, spusťte následující příkaz, který nahradí <> vaše hodnoty:

az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Instalace doplňku Azure Policy pomocí Helm pro Kubernetes s podporou ARC Azure (Preview)

Poznámka

Azure Policy model Helm doplňku bude brzy začínat. Místo toho prosím použijte Azure Policy rozšíření pro Kubernetes pro Azure ARC Enabled .

Před instalací doplňku Azure Policy nebo povolením kterékoli funkce služby musí vaše předplatné umožňovat poskytovatele prostředků Microsoft. PolicyInsights a vytvořit přiřazení role pro instanční objekt služby.

  1. Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.12.0 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace rozhraní příkazového řádku Azure CLI.

  2. pokud chcete poskytovatele prostředků povolit, postupujte podle kroků v části poskytovatelé a typy prostředků nebo spusťte příkaz Azure CLI nebo Azure PowerShell:

    • 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'
      
    • Azure 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. Cluster Kubernetes musí mít verzi 1,14 nebo vyšší.

  4. Nainstalujte Helm 3.

  5. Váš cluster Kubernetes je povolený pro Azure ARC. Další informace najdete v tématu připojení clusteru Kubernetes ke službě Azure ARC.

  6. Máte plně kvalifikované ID prostředku Azure pro cluster Kubernetes s povoleným ARC Azure.

  7. Otevřete porty pro doplněk. Azure Policy doplněk používá tyto domény a porty k načtení definic zásad a přiřazení a nahlášení kompatibility clusteru zpátky do Azure Policy.

    Doména Port
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  8. přiřaďte přiřazení role Přehledy zásady pro zápis dat (Preview) k clusteru Kubernetes s povoleným Arc Azure. Nahraďte <subscriptionId> ID předplatného a <rg> skupinou prostředků clusteru Kubernetes s povoleným ARC Azure a <clusterName> názvem clusteru Kubernetes s povoleným ARC Azure. Udržujte si přehled o vrácených hodnotách appId, Password a tenant pro kroky instalace.

    • Azure CLI

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

    Ukázkový výstup výše uvedených příkazů:

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

Po dokončení výše uvedených požadovaných kroků nainstalujte doplněk Azure Policy v clusteru Kubernetes s povoleným ARC Azure:

  1. Přidejte do Helm úložiště doplňku Azure Policy:

    helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-charts
    
  2. Pomocí grafu Helm nainstalujte doplněk Azure Policy:

    # 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>
    

    Další informace o tom, co se instaluje graf doplňku Helm, najdete v tématu GitHub definice grafu Azure Policy doplňku .

Spusťte následující příkaz, abyste ověřili, že instalace doplňku byla úspěšná a že jsou spuštěné zásady Azure a na serveru gatekeeper .

# 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

Instalace doplňku Azure Policy pro modul AKS (Preview)

  1. Zajistěte, aby byl cluster Kubernetes podporovanou distribucí.

Před instalací doplňku Azure Policy nebo povolením kterékoli funkce služby musí vaše předplatné umožňovat poskytovatele prostředků Microsoft. PolicyInsights a vytvořit přiřazení role pro instanční objekt služby.

  1. Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.0.62 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace rozhraní příkazového řádku Azure CLI.

  2. pokud chcete poskytovatele prostředků povolit, postupujte podle kroků v části poskytovatelé a typy prostředků nebo spusťte příkaz Azure CLI nebo Azure PowerShell:

    • 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'
      
    • Azure 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. Vytvořte přiřazení role pro objekt služby Cluster Service.

    • Pokud neznáte ID aplikace instančního objektu služby, vyhledejte ji pomocí následujícího příkazu.

      # 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
      
    • přiřaďte přiřazení role Přehledy zásady pro zápis dat (Preview) k objektu služby cluster ID aplikace (hodnota aadClientID z předchozího kroku) pomocí Azure CLI. Nahraďte <subscriptionId> ID předplatného a <aks engine cluster resource group> skupinou prostředků, ve které se cluster AKS Engine Kubernetese pro správu používá samostatně.

      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 dokončení výše uvedených požadovaných kroků nainstalujte doplněk Azure Policy. Instalace může být během cyklu vytváření nebo aktualizace modulu AKS nebo jako nezávislá akce v existujícím clusteru.

  • Nainstalovat během vytváření nebo aktualizačního cyklu

    Pokud chcete povolit Azure Policy doplněk během vytváření nového clusteru, který je samostatně spravovaný, nebo jako Aktualizace existujícího clusteru, zahrňte do definice clusteru vlastností Doplňky pro modul AKS.

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

    Další informace o naleznete v tématu definice clusteru modulu AKSpro externí průvodce.

  • Instalace v existujícím clusteru s Helm grafy

    K přípravě clusteru a instalaci doplňku použijte následující postup:

    1. Nainstalujte Helm 3.

    2. Přidejte úložiště Azure Policy do Helm.

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

      Další informace najdete v tématu Průvodce rychlým startem pro Helm graf.

    3. Nainstalujte doplněk pomocí grafu Helm. Nahraďte <subscriptionId> ID předplatného a <aks engine cluster resource group> skupinou prostředků, ve které se cluster AKS Engine Kubernetese pro správu používá samostatně.

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

      Další informace o tom, co se instaluje graf doplňku Helm, najdete v tématu GitHub definice grafu Azure Policy doplňku .

      Poznámka

      Vzhledem k tomu, že vztah mezi doplňkem Azure Policy a ID skupiny prostředků Azure Policy podporuje pro každou skupinu prostředků pouze jeden cluster AKS Engine.

Spusťte následující příkaz, abyste ověřili, že instalace doplňku byla úspěšná a že jsou spuštěné zásady Azure a na serveru gatekeeper .

# 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

Jazyk zásad

Struktura Azure Policy jazyka pro správu Kubernetes se řídí existujícími definicemi zásad. Při použití režimu poskytovatele prostředků se Microsoft.Kubernetes.Data pro správu clusterů Kubernetes používají audit a zamítnutí efektů. Audit a zamítnutí musí poskytovat podrobné vlastnosti, které jsou specifické pro práci s neprů omezením a gatekeeper v3.

Jako součást Details. templateInfo, Details. Constraint nebo Details. constraintTemplate v definici zásady Azure Policy předá do doplňku identifikátor URI nebo hodnotu Base64Encoded těchto CustomResourceDefinitions (CRD). Rego je jazyk, který podporuje NEPRŮ a gatekeeper, aby ověřil požadavek na cluster Kubernetes. Díky podpoře stávajícího standardu pro správu Kubernetes Azure Policy umožňuje znovu použít stávající pravidla a párovat je Azure Policy pro jednotné prostředí generování sestav dodržování předpisů cloudu. Další informace najdete v tématu co je Rego?.

Přiřazení definice zásady

Pokud chcete přiřadit definici zásady ke clusteru Kubernetes, musíte mu přiřadit příslušné operace přiřazení zásad řízení přístupu na základě role Azure (RBAC). Tyto operace mají v předdefinovaných rolích zásady prostředků Přispěvatel a vlastník Azure. Další informace najdete v tématu oprávnění Azure RBAC v Azure Policy.

Poznámka

Definice vlastních zásad je funkce Public Preview .

V následujících krocích najdete předdefinované definice zásad pro správu clusteru pomocí Azure Portal. Pokud používáte vlastní definici zásad, vyhledejte ji podle názvu nebo kategorie, ve které jste ji vytvořili.

  1. Spusťte službu Azure Policy v Azure Portal. V levém podokně vyberte všechny služby a pak vyhledejte a vyberte zásady.

  2. V levém podokně stránky Azure Policy vyberte definice.

  3. V rozevíracím seznamu kategorie použijte možnost Vybrat vše , pokud chcete filtr vymazat, a pak vyberte Kubernetes.

  4. Vyberte definici zásady a pak klikněte na tlačítko přiřadit .

  5. Nastavte obor na skupinu pro správu, předplatné nebo skupinu prostředků clusteru Kubernetes, kde se bude přiřazení zásady vztahovat.

    Poznámka

    Při přiřazování Azure Policy pro definici Kubernetes musí obor zahrnovat prostředek clusteru. V případě clusteru AKS Engine musí být obor skupinou prostředků clusteru.

  6. Udělte přiřazení zásad název a Popis , který můžete použít k jeho snadnému identifikaci.

  7. Nastavte vynucování zásady na jednu z následujících hodnot.

    • Povoleno – vynutilo zásady v clusteru. Žádosti o přístup Kubernetes s porušením jsou odepřeny.

    • Zakázáno – neuplatněte zásady v clusteru. Žádosti o přístup Kubernetes s porušením nejsou odepřeny. Výsledky hodnocení dodržování předpisů jsou stále k dispozici. Při zavedení nových definic zásad do spuštěných clusterů je možnost disabled užitečná pro testování definice zásady, protože žádosti o přístup s porušením nejsou zamítnuté.

  8. Vyberte Další.

  9. Nastavení hodnot parametrů

    • Pokud chcete vyloučit obory názvů Kubernetes ze vyhodnocení zásad, zadejte seznam oborů názvů v vyloučeních oboru názvů parametrů. Doporučuje se vyloučit: Kube-System, gatekeeper-System a Azure-ARC.
  10. Vyberte Zkontrolovat a vytvořit.

Případně můžete k vyhledání a přiřazení zásad Kubernetes použít rychlý Start portálu zásad . Místo ukázky "Auditovat virtuální počítače" vyhledejte definici zásady Kubernetes.

Důležité

Předdefinované definice zásad jsou k dispozici pro clustery Kubernetes ve skupině Kubernetes. Seznam předdefinovaných definic zásad najdete v tématu Kubernetes Samples.

Vyhodnocení zásad

Doplněk se vrátí se změnami v rámci služby Azure Policy pro změny v přiřazení zásad každých 15 minut. Během tohoto cyklu aktualizace doplněk kontroluje změny. Tyto změny triggeru vytvoří, aktualizuje nebo odstraní šablony omezení a omezení.

Pokud má obor názvů v clusteru Kubernetes popisek odpovídající příslušnému clusteru, nejsou žádosti o přístup s narušením odepřeny. Výsledky hodnocení dodržování předpisů jsou stále k dispozici.

  • Kubernetes cluster s podporou ARC Azure: admission.policy.azure.com/ignore
  • Cluster služby Azure Kubernetes: control-plane

Poznámka

Správce clusterů může mít oprávnění k vytváření a aktualizaci šablon omezení a prostředků, které instalují Azure Policy doplněk. Tyto scénáře nejsou podporované, protože se přepíší ruční aktualizace. Server Gatekeeper nadále vyhodnocuje zásady, které existovaly před instalací doplňku a přiřazením Azure Policy definice zásad.

Každých 15 minut doplněk volá úplnou kontrolu clusteru. Po shromáždění podrobností o úplné kontrole a všech vyhodnocení v reálném čase pomocí serveru gatekeeper na základě změn v clusteru hlásí doplněk výsledky zpět do Azure Policy pro zahrnutí v podrobnostech o dodržování předpisů , jako je jakékoli přiřazení Azure Policy. Během cyklu auditu se vrátí jenom výsledky aktivních přiřazení zásad. Výsledky auditu se taky můžou považovat za porušení uvedená v poli stav u neúspěšného omezení. Podrobnosti o nekompatibilních prostředcích najdete v podrobnostech o komponentách pro režimy poskytovatele prostředků.

Poznámka

Každá sestava dodržování předpisů v Azure Policy pro clustery Kubernetes zahrnuje všechna porušení během posledních 45 minut. Časové razítko indikuje, kdy došlo k porušení.

Další požadavky:

  • Pokud je předplatné clusteru zaregistrované ve službě Azure Security Center, Azure Security Center zásady Kubernetes se v clusteru aplikují automaticky.

  • Když se v clusteru s existujícími Kubernetes prostředky použije zásada Odepřít, všechny stávající prostředky, které nejsou kompatibilní s novými zásadami, se budou dál spouštět. Pokud se prostředek, který nedodržuje předpisy, naplánuje na jiný uzel, zablokuje Server Gatekeeper vytváření prostředků.

  • Pokud má cluster zásadu odepřít, která ověřuje prostředky, uživateli se při vytváření nasazení nezobrazí zpráva o zamítnutí. Zvažte například nasazení Kubernetes, které obsahuje replicasets a lusky. Když se uživatel spustí kubectl describe deployment $MY_DEPLOYMENT , nevrátí jako součást událostí zprávu o zamítnutí. Ale kubectl describe replicasets.apps $MY_DEPLOYMENT vrátí události přidružené k zamítnutí.

Poznámka

Během hodnocení zásad můžou být zahrnuté kontejnery inicializace. Chcete-li zjistit, zda jsou kontejnery init zahrnuty, zkontrolujte CRD pro následující nebo podobnou deklaraci:

input_containers[c] { 
   c := input.review.object.spec.initContainers[_] 
}

Konflikty šablon omezení

Pokud mají šablony omezení stejný název metadat prostředků, ale definice zásady odkazuje na zdroj v různých umístěních, definice zásad se považují za konfliktní. Příklad: dvě definice zásad odkazují na stejný template.yaml soubor uložený v různých zdrojových umístěních, jako je například úložiště šablon () Azure Policy ( store.policy.core.windows.net ) a GitHub.

Když jsou definice zásad a jejich šablony omezení přiřazené, ale ještě nejsou nainstalované v clusteru a jsou v konfliktu, nahlásí se jako konflikt a do clusteru se nenainstaluje, dokud konflikt nebude vyřešen. Stejně tak všechny existující definice zásad a jejich šablony omezení, které jsou už v clusteru, jsou v konfliktu s nově přiřazenými definicemi zásad i nadále fungují normálně. Pokud je existující přiřazení aktualizované a při synchronizaci šablony omezení dojde k selhání, cluster se také označí jako konflikt. Všechny zprávy o konfliktech najdete v tématu AKS – důvody pro dodržování předpisů režimu poskytovatele prostředků .

protokolování

Jako Kubernetes Controller nebo kontejner se v clusteru Kubernetes udržují protokoly Azure-Policy i gatekeeper . protokoly je možné zveřejnit na Přehledy stránce clusteru Kubernetes. Další informace najdete v tématu monitorování výkonu clusteru Kubernetes s využitím Azure monitor pro kontejnery.

Chcete-li zobrazit protokoly doplňku, použijte 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

Další informace najdete v tématu ladění serveru gatekeeper v dokumentaci k serveru gatekeeper.

Zobrazit artefakty gatekeeper

Poté, co doplněk stáhne přiřazení zásad a nainstaluje šablony omezení a omezení v clusteru, přidá tyto údaje Azure Policym informacím, jako je ID přiřazení zásady a ID definice zásady. Chcete-li nakonfigurovat klienta tak, aby se zobrazily artefakty související s doplňkem, použijte následující postup:

  1. Instalační program kubeconfig clusteru.

    Pro cluster služby Azure Kubernetes použijte následující Azure CLI:

    # Set context to the subscription
    az account set --subscription <YOUR-SUBSCRIPTION>
    
    # Save credentials for kubeconfig into .kube in your home folder
    az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
    
  2. Otestujte připojení k clusteru.

    Spusťte příkaz kubectl cluster-info. Úspěšný běh má každou službu odpověď s adresou URL, kde je spuštěná.

Zobrazení šablon omezení doplňku

Chcete-li zobrazit šablony omezení stažené doplňkem, spusťte příkaz kubectl get constrainttemplates . Šablony omezení, které začínají, k8sazure jsou ty, které jsou nainstalovány doplňkem.

Získat mapování Azure Policy

Chcete-li identifikovat mapování mezi šablonou omezení staženou do clusteru a definicí zásad, použijte kubectl get constrainttemplates <TEMPLATE> -o yaml . Výsledky vypadají podobně jako v následujícím výstupu:

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
    annotations:
    azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
    constraint-template-installed-by: azure-policy-addon
    constraint-template: <URL-OF-YAML>
    creationTimestamp: "2021-09-01T13:20:55Z"
    generation: 1
    managedFields:
    - apiVersion: templates.gatekeeper.sh/v1beta1
    fieldsType: FieldsV1
...

<SUBID> je ID předplatného a <GUID> je ID mapované definice zásady. <URL-OF-YAML> je zdrojové umístění šablony omezení, kterou doplněk stáhl pro instalaci na cluster.

Jakmile budete mít názvy stažených šablon omezení, můžete k zobrazení souvisejících omezení použít název. Použijte kubectl get <constraintTemplateName> k získání seznamu. Omezení nainstalovaná doplňkem začínají na azurepolicy- .

Zobrazit podrobnosti omezení

Omezení obsahuje podrobnosti o porušeních a mapování na definici a přiřazení zásad. Chcete-li zobrazit podrobnosti, použijte kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml . Výsledky vypadají podobně jako v následujícím výstupu:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
  annotations:
    azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
    azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
    azure-policy-definition-reference-id: ""
    azure-policy-setdefinition-id: ""
    constraint-installed-by: azure-policy-addon
    constraint-url: <URL-OF-YAML>
  creationTimestamp: "2021-09-01T13:20:55Z"
spec:
  enforcementAction: deny
  match:
    excludedNamespaces:
    - kube-system
    - gatekeeper-system
    - azure-arc
  parameters:
    imageRegex: ^.+azurecr.io/.+$
status:
  auditTimestamp: "2021-09-01T13:48:16Z"
  totalViolations: 32
  violations:
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hello-world-78f7bfd5b8-lmc5b
    namespace: default
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hellow-world-89f8bfd6b9-zkggg

Řešení potíží s doplňkem

Další informace o řešení potíží s doplňkem pro Kubernetes najdete v části Kubernetes článku věnovaném řešení potíží s nástrojem Azure Policy.

Pokud Azure Policy rozšíření pro problémy související s rozšířením ARC, přečtěte si:

Problémy související s Azure Policy najdete v těchto tématech:

Odebrání doplňku

Odebrání doplňku z AKS

Pokud chcete odebrat doplněk Azure Policy z clusteru AKS, použijte Azure Portal nebo rozhraní příkazového řádku Azure:

  • portál Azure

    1. Spusťte službu AKS v Azure Portal tím, že vyberete všechny služby a pak vyhledáte a vyberete služby Kubernetes.

    2. Vyberte cluster AKS, ve kterém chcete zakázat doplněk Azure Policy.

    3. Na levé straně stránky služby Kubernetes vyberte zásady .

    4. Na hlavní stránce vyberte tlačítko zakázat doplněk .

  • Azure 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
    

Odebrání doplňku z Kubernetes s povoleným ARC Azure

Pokud chcete Azure Policy Kubernetes s povoleným clusterem Kubernetes odebrat doplněk Azure Arc Gatekeeper, spusťte následující příkaz Helm:

helm uninstall azure-policy-addon

Odebrání doplňku z modulu AKS

Pokud chcete Azure Policy a Gatekeeper z clusteru modulu AKS odebrat, použijte metodu , která je v souladu s tím, jak se doplněk nainstaloval:

  • Pokud se instaluje nastavením vlastnosti addons v definici clusteru pro modul AKS:

    Po změně vlastnosti addons pro azure-policy na false znovu nasaďte definici clusteru do modulu AKS:

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

    Další informace najdete v tématu Modul AKS – Azure Policy doplňku.

  • Pokud je nástroj nainstalovaný s nástroji Helm Charts, spusťte následující příkaz Helm:

    helm uninstall azure-policy-addon
    

Diagnostická data shromážděná Azure Policy doplňku

Doplněk Azure Policy pro Kubernetes shromažďuje omezená diagnostická data clusteru. Tato diagnostická data jsou důležitá technická data související se softwarem a výkonem. Používá se následujícími způsoby:

  • Udržujte Azure Policy, aby byl doplněk aktuální.
  • Zajištění Azure Policy, spolehlivost a výkonu doplňků
  • Vylepšení Azure Policy – prostřednictvím agregované analýzy použití doplňku

Informace shromážděné doplňkem nejsou osobní údaje. Aktuálně jsou shromažďovány následující podrobnosti:

  • Azure Policy agenta doplňků
  • Typ clusteru
  • Oblast clusteru
  • Skupina prostředků clusteru
  • ID prostředku clusteru
  • ID předplatného clusteru
  • Operační systém clusteru (příklad: Linux)
  • Město clusteru (příklad: Praha)
  • Stát nebo kraj clusteru (příklad: Washington)
  • Země nebo oblast clusteru (příklad: USA)
  • Výjimky nebo chyby, ke kterým Azure Policy doplněk během instalace agenta při vyhodnocování zásad
  • Počet definic zásad Gatekeeperu nenainstalovaných Azure Policy doplňku

Další kroky