Sdílet prostřednictvím


Principy Azure Policy pro clustery Kubernetes

Azure Policy rozšiřuje Gatekeeper v3, webhook kontroleru přístupu pro open policy agenta (OPA), aby na komponenty clusteru použil centralizovaným a konzistentním způsobem vynucení ve velkém měřítku a ochranu. Součástí clusteru jsou pody, kontejnery a obory názvů.

Azure Policy pro Kubernetes umožňuje na jednom místě spravovat a hlásit stav dodržování předpisů u součástí clusterů Kubernetes. Pomocí doplňku nebo rozšíření služby Azure Policy se řízení komponent clusteru vylepšuje funkcemi azure Policy, jako je možnost používat selektory a přepsání pro bezpečné zavedení a vrácení zásad zpět.

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

Důležité

Model Helm doplňku Azure Policy a doplněk pro modul AKS jsou zastaralé. Podle pokynů doplňky odeberte.

Přehled

Když na clustery Kubernetes nainstalujete doplněk nebo rozšíření služby Azure Policy, Azure Policy provede následující funkce:

  • Kontroluje přiřazení zásad ke clusteru pomocí služby Azure Policy.
  • Nasadí definice zásad do clusteru jako šablonu omezení a vlastní prostředky omezení nebo jako prostředek šablony pro předmětu (v závislosti na obsahu definice zásad).
  • Vykazuje podrobnosti o auditování a dodržování předpisů zpět do služby Azure Policy.

Pokud chcete povolit a používat Azure Policy s clusterem Kubernetes, proveďte následující akce:

  1. Nakonfigurujte cluster Kubernetes a nainstalujte doplněk Azure Kubernetes Service (AKS) nebo rozšíření Azure Policy pro clustery Kubernetes s podporou arc (v závislosti na typu clusteru).

    Poznámka:

    Běžné problémy s instalací najdete v tématu Řešení potíží – doplněk Azure Policy.

  2. Vytvoření nebo použití ukázkové definice služby Azure Policy pro Kubernetes

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

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

  5. Protokolování a řešení potíží

  6. Kontrola omezení a doporučení v oddílu Nejčastější dotazy

Instalace doplňku Azure Policy pro AKS

Doplněk Azure Policy pro AKS je součástí Kubernetes verze 1.27 s dlouhodobou podporou (LTS).

Požadavky

  1. Zaregistrujte poskytovatele prostředků a funkce preview.

    • Azure Portal:

      Zaregistrujte Microsoft.PolicyInsights poskytovatele prostředků. 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
      
  2. Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.12.0 nebo novější. Verzi najdete spuštěním az --version příkazu. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si, jak nainstalovat Azure CLI.

  3. Cluster AKS musí být podporovanou verzí Kubernetes ve službě Azure Kubernetes Service (AKS). 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
    
  4. 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 hlášení dodržování předpisů clusteru zpět do služby 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

Po dokončení požadavků nainstalujte doplněk Azure Policy do clusteru AKS, který chcete spravovat.

  • portál Azure

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

    2. Vyberte jeden z 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
    

Spuštěním následujícího příkazu ověřte, že instalace doplňku proběhla úspěšně a jestli jsou spuštěné pody azure-policy a 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

Nakonec ověřte, že je nainstalovaný nejnovější doplněk, spuštěním tohoto příkazu Azure CLI a nahrazením <rg> názvu vaší skupiny prostředků a <cluster-name> názvem clusteru 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 pro clustery používající instanční objekty:

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

A následující výstup pro clustery používající spravovanou identitu:

 {
   "config": null,
   "enabled": true,
   "identity": {
     "clientId": "########-####-####-####-############",
     "objectId": "########-####-####-####-############",
     "resourceId": "<resource-id>"
   }
 }

Instalace rozšíření Azure Policy pro Kubernetes s podporou Služby Azure Arc

Azure Policy pro Kubernetes umožňuje spravovat a hlásit stav dodržování předpisů clusterů Kubernetes z jednoho místa. S rozšířením Azure Policy pro clustery Kubernetes s podporou arc můžete řídit komponenty clusteru Kubernetes s podporou Arc, jako jsou pody a kontejnery.

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

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

Požadavky

Pokud jste už nasadili Azure Policy pro Kubernetes v clusteru Azure Arc pomocí Helmu přímo bez rozšíření, odstraňte chart Helm podle pokynů. Po dokončení odstranění můžete pokračovat.

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

    Poznámka:

    Rozšíření Azure Policy for 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 tady uvedená rozšíření Kubernetes, včetně připojení clusteru ke službě Azure Arc.

    Poznámka:

    Rozšíření Azure Policy se podporuje pro clustery Kubernetes s podporou Arc 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 hlášení dodržování předpisů clusteru zpět do služby 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. Než nainstalujete rozšíření Azure Policy nebo povolíte některou z funkcí služby, musí vaše předplatné povolit Microsoft.PolicyInsights poskytovatele prostředků.

    Poznámka:

    Pokud chcete poskytovatele prostředků povolit, postupujte podle pokynů v poskytovatelích prostředků a typech nebo spusťte příkaz Azure CLI nebo Azure PowerShellu.

    • 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ření rozšíření Azure Policy

Poznámka:

Pro vytvoření rozšíření Azure Policy si poznamenejte následující:

  • Ve výchozím nastavení je povolený automatický upgrade, který aktualizuje podverzi rozšíření Azure Policy, pokud se nasadí nějaké nové změny.
  • Všechny proměnné proxy serveru předané jako parametry connectedk8s se rozšíří do rozšíření Azure Policy, aby podporovalo odchozí proxy server.

Pokud chcete vytvořit instanci rozšíření, spusťte pro cluster s podporou Arc následující příkaz, který nahrazuje <> 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"
}

Zobrazení rozšíření Azure Policy

Pokud chcete zkontrolovat úspěšné vytvoření instance rozšíření a zkontrolovat metadata rozšíření, spusťte následující příkaz, který nahrazuje <> 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, že instalace rozšíření proběhla ú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

Odstranění rozšíření Azure Policy

Pokud chcete odstranit instanci rozšíření, spusťte následující příkaz, kterým nahraďte <> hodnoty:

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

Vytvoření definice zásady

Struktura jazyka Azure Policy pro správu Kubernetes se řídí stávajícími definicemi zásad. K dispozici jsou ukázkové definiční soubory, které můžete přiřadit v integrované knihovně zásad služby Azure Policy, která se dá použít k řízení komponent clusteru.

Azure Policy pro Kubernetes také podporuje vytváření vlastních definic na úrovni komponent pro clustery Azure Kubernetes Service i clustery Kubernetes s podporou Azure Arc. Ukázky šablony omezení a šablony pro protěžování šablon jsou k dispozici v knihovně komunity Gatekeeperu. Rozšíření editoru Visual Studio Code pro Azure Policy je možné použít k překladu existující šablony omezení nebo šablony pro šablonu s předělanou šablonou na vlastní definici zásad Azure Policy.

V režimu Microsoft.Kubernetes.Dataposkytovatele prostředků se k správě clusterů Kubernetes používají efekty auditu, zamítnutí, zakázání a ztlumení.

Audit a zamítnutí musí poskytovat details vlastnosti specifické pro práci s architekturou omezení OPA a gatekeeperem v3.

V rámci vlastností details.templateInfo nebo details.constraintInfo v definici zásady předá Azure Policy identifikátor URI nebo Base64Encoded hodnotu těchto customResourceDefinitions(CRD) doplňku. Rego je jazyk, který podporuje OPA a Gatekeeper k ověření požadavku na cluster Kubernetes. Díky podpoře stávajícího standardu pro správu Kubernetes umožňuje Azure Policy opakovaně používat stávající pravidla a spárovat je se službou Azure Policy pro jednotné prostředí generování sestav dodržování předpisů v cloudu. Další informace naleznete v tématu Co je Rego?.

Přiřazení definice zásady

Pokud chcete přiřadit definici zásad ke clusteru Kubernetes, musíte mít přiřazené odpovídající operace přiřazení zásad na základě role v Azure (Azure RBAC). Tyto operace mají předdefinované role Přispěvatel zásad prostředků Azure a vlastník . Další informace najdete v tématu Oprávnění Azure RBAC ve službě Azure Policy.

Následující kroky vám pomůžou najít předdefinované definice zásad pro správu clusteru pomocí webu Azure Portal. Pokud používáte vlastní definici zásad, vyhledejte ji podle názvu nebo kategorie, se kterou jste ji vytvořili.

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

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

  3. V rozevíracím seznamu Kategorie pomocí příkazu Vybrat vše zrušte zaškrtnutí filtru a pak vyberte Kubernetes.

  4. Vyberte definici zásady a pak vyberte tlačítko Přiřadit .

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

    Poznámka:

    Při přiřazování definice Azure Policy pro Kubernetes musí obor zahrnovat prostředek clusteru.

  6. Přiřazovat zásady název a popis, které můžete použít k jeho snadné identifikaci.

  7. Nastavte vynucení zásad na jednu z následujících hodnot:

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

    • Zakázáno – Nevynucujte zásadu v clusteru. Požadavky na přístup Kubernetes s porušením nejsou odepřeny. Výsledky posouzení dodržování předpisů jsou stále k dispozici. Když pro spuštěné clustery zavedete nové definice zásad, je pro testování definice zásady užitečná možnost Zakázáno , protože požadavky na přístup s porušením nejsou odepřeny.

  8. Vyberte Další.

  9. Nastavení hodnot parametrů

    • Pokud chcete vyloučit obory názvů Kubernetes z vyhodnocení zásad, zadejte seznam oborů názvů v vyloučeních oboru názvů parametrů. Doporučení je vyloučit: kube-system, gatekeeper-system a azure-arc.
  10. Vyberte Zkontrolovat a vytvořit.

Případně pomocí rychlého startu Přiřadit zásadu – Portál vyhledejte a přiřaďte zásady Kubernetes. Místo ukázkových virtuálních počítačů auditu vyhledejte definici zásady Kubernetes.

Důležité

Integrované definice zásad jsou k dispozici pro clustery Kubernetes v kategorii Kubernetes. Seznam předdefinovaných definic zásad najdete v ukázkách Kubernetes.

Vyhodnocení zásad

Doplněk kontroluje změny přiřazení zásad ve službě Azure Policy každých 15 minut. Během tohoto cyklu aktualizace doplněk kontroluje změny. Tyto změny aktivují vytvoření, aktualizaci nebo odstranění šablon omezení a omezení.

Pokud má obor názvů v clusteru Kubernetes popisek odpovídající clusteru, požadavky na přístup s porušením nejsou odepřeny. Výsledky posouzení dodržování předpisů jsou stále k dispozici.

  • Cluster Kubernetes s podporou Azure Arc: admission.policy.azure.com/ignore

Poznámka:

I když správce clusteru může mít oprávnění k vytváření a aktualizaci šablon omezení a prostředků omezení nainstalovaných doplňkem Azure Policy, tyto scénáře se nepodporují, protože se přepisují ruční aktualizace. Gatekeeper dál vyhodnocuje zásady, které existovaly před instalací doplňku a přiřazením definic zásad Azure Policy.

Doplněk každých 15 minut volá úplnou kontrolu clusteru. Po shromáždění podrobností o úplné kontrole a případných vyhodnoceních pokusů o změny clusteru v reálném čase řešením Gatekeeper nahlásí doplněk výsledky zpět do služby Azure Policy, která je zahrne do podrobností o dodržování předpisů podobně jako jakékoli přiřazení Azure Policy. Během cyklu auditu se vrátí pouze výsledky týkající se aktivních přiřazení zásad. Výsledky auditu je také možné zobrazit jako porušení uvedená v poli stavu 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ů ve službě Azure Policy pro clustery Kubernetes zahrnuje všechna porušení za posledních 45 minut. Časové razítko označuje, kdy došlo k narušení.

Další aspekty:

  • Pokud je předplatné clusteru zaregistrované v programu Microsoft Defender for Cloud, použijí se v clusteru automaticky zásady Microsoft Defenderu for Cloud Kubernetes.

  • Pokud se na clusteru s existujícími prostředky Kubernetes použije zásada zamítnutí, všechny existující prostředky, které nevyhovují novým zásadám, budou nadále spuštěné. Pokud se prostředek nedodržující předpisy přeplánuje na jiném uzlu, gatekeeper zablokuje vytvoření prostředku.

  • Pokud má cluster zásadu zamítnutí, která ověřuje prostředky, uživateli se při vytváření nasazení nezobrazí zpráva o zamítnutí. Představte si například nasazení Kubernetes, které obsahuje replicasets a pody. Když se uživatel spustí kubectl describe deployment $MY_DEPLOYMENT, nevrátí zprávu o zamítnutí jako součást událostí. kubectl describe replicasets.apps $MY_DEPLOYMENT Vrátí však události spojené se zamítnutím.

Poznámka:

Kontejnery inicializačních objektů můžou být zahrnuté během vyhodnocování zásad. Pokud chcete zjistit, jestli jsou zahrnuté kontejnery inicializačních objektů, projděte si 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 úložiště šablon Azure Policy (store.policy.core.windows.net) a GitHub.

Pokud jsou definice zásad a jejich šablony omezení přiřazené, ale ještě nejsou nainstalované v clusteru a jsou v konfliktu, budou hlášeny jako konflikt a nebudou nainstalovány do clusteru, dokud se konflikt nevyřeší. Stejně tak všechny existující definice zásad a jejich šablony omezení, které jsou již v clusteru, které jsou v konfliktu s nově přiřazenými definicemi zásad, nadále fungují normálně. Pokud se aktualizuje existující přiřazení a dojde k selhání synchronizace šablony omezení, cluster se také označí jako konflikt. Všechny konfliktní zprávy najdete v důvodech dodržování předpisů v režimu poskytovatele prostředků AKS.

Protokolování

Jako kontroler/kontejner Kubernetes uchovává pody Azure-Policy i vrátného protokoly v clusteru Kubernetes. Obecně platí, že protokoly azure-policy je možné použít k řešení problémů s příjmem zásad do clusteru a generování sestav dodržování předpisů. Protokoly podů gatekeeper-controller-manager je možné použít k řešení potíží s odepřeným modulem runtime. Protokoly podu gatekeeper-audit je možné použít k řešení potíží s audity stávajících prostředků. Protokoly je možné zobrazit na stránce Přehledy clusteru Kubernetes. Další informace najdete v tématu Monitorování výkonu clusteru Kubernetes s využitím služby Azure Monitor pro kontejnery.

Pokud chcete 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

Pokud se pokoušíte vyřešit konkrétní kód complianceReasonCode, který se zobrazuje ve výsledcích dodržování předpisů, můžete vyhledat protokoly podů azure-policy a zobrazit úplnou doprovodnou chybu.

Další informace najdete v části věnované ladění řešení Gatekeeper v dokumentaci k řešení Gatekeeper.

Zobrazení artefaktů Gatekeeperu

Jakmile doplněk stáhne přiřazení zásad a nainstaluje šablony omezení a omezení v clusteru, přidá do něj poznámky informace o službě Azure Policy, jako je ID přiřazení zásady a ID definice zásady. Ke konfiguraci klienta pro zobrazení artefaktů souvisejících s doplňky použijte následující kroky:

  1. Nastavte kubeconfig cluster.

    V případě clusteru Azure Kubernetes Service 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í clusteru.

    Spusťte příkaz kubectl cluster-info. Úspěšné spuštění má každou službu, která odpovídá adresou URL místa, kde je spuštěná.

Zobrazení šablon omezení doplňku

Pokud chcete zobrazit šablony omezení stažené doplňkem, spusťte kubectl get constrainttemplatespříkaz . Šablony omezení, které začínají, k8sazure jsou ty, které doplněk instaluje.

Zobrazení šablon doplňků pro natěchování

Chcete-li zobrazit šablony s příponou stažené doplňkem, spusťte kubectl get assign, kubectl get assignmetadataa kubectl get modifyset.

Získání mapování Azure Policy

K identifikaci 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 do clusteru.

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

Zobrazení podrobností omezení

Omezení obsahuje podrobnosti o porušeních a mapováních na definici a přiřazení zásady. Pokud chcete 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 v článku o řešení potíží se službou Azure Policy.

Informace o problémech souvisejících s rozšířením Azure Policy pro rozšíření Arc naleznete v těchto tématech:

V případě problémů souvisejících se službou Azure Policy přejděte na:

Doplněk Azure Policy pro protokol změn AKS

Doplněk azure Policy pro AKS má číslo verze, které označuje verzi doplňku image. Vzhledem k tomu, že podpora funkcí je nově zavedena v doplňku, zvýší se číslo verze.

Tato část vám pomůže určit, která verze doplňku je nainstalovaná v clusteru, a také sdílet historickou tabulku verze doplňku Azure Policy nainstalovanou pro cluster AKS.

Určení verze doplňku, která je nainstalovaná v clusteru

Doplněk Azure Policy používá standardní schéma sémantické správy verzí pro každou verzi. Pokud chcete identifikovat používanou verzi doplňku Azure Policy, můžete spustit následující příkaz: kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'

Pokud chcete zjistit verzi Gatekeeperu, kterou váš doplněk Azure Policy používá, můžete spustit následující příkaz: kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'

Nakonec pomocí propojených pokynů AKS identifikujte verzi clusteru AKS, kterou používáte.

Dostupné verze doplňků pro každou verzi clusteru AKS

1.7.1

Představujeme CEL a VAP. Common Expression Language (CEL) je jazyk nativního výrazu Kubernetes, který lze použít k deklaraci ověřovacích pravidel zásad. Funkce ověřování zásad přístupu (VAP) poskytuje vyhodnocení zásad ve stromové struktuře, snižuje latenci požadavků na přístup a zlepšuje spolehlivost a dostupnost. Mezi podporované ověřovací akce patří Odepření, Upozornění a Audit. Vlastní vytváření zásad pro CEL/VAP je povolené a stávající uživatelé nebudou muset převést rego na CEL, protože budou podporovány a budou použity k vynucení zásad. Pokud chcete používat CEL a VAP, musí se uživatelé zaregistrovat do příznaku AKS-AzurePolicyK8sNativeValidation Microsoft.ContainerService funkce v oboru názvů. Další informace najdete v dokumentaci gatekeeperu.

Vylepšení zabezpečení

  • Vydáno zář 2024
  • Kubernetes 1.27 nebo novější (generování VAP se podporuje jenom ve verzi 1.30+)
  • Vrátný 3.17.1

1.7.0

Představujeme rozšíření, funkci posunu doleva, která vám umožní předem zjistit, jestli vaše prostředky úloh (nasazení, repliky, úlohy atd.) vytvoří přípustné pody. Rozšíření by nemělo měnit chování vašich zásad; Místo doby přijetí podu se přesune vyhodnocení zásad omezených na pody gatekeepera, aby se místo doby přijetí podů vyskytla v době přijetí úloh. K provedení tohoto vyhodnocení však musí vygenerovat a vyhodnotit pod citlivostní analýzy, který je založený na specifikaci podu definované v úloze, což může mít neúplná metadata. Například pod citlivostní citlivost nebude obsahovat správné odkazy na vlastníka. Kvůli tomuto malému riziku změny chování zásad zavádíme ve výchozím nastavení rozšíření jako zakázané. Chcete-li povolit rozšíření pro danou definici zásady, nastavte na Allhodnotu .policyRule.then.details.source . Předdefinované iny budou brzy aktualizovány, aby bylo možné parametrizaci tohoto pole povolit. Pokud otestujete definici zásad a zjistíte, že pod citlivostní analýza generovaný pro účely vyhodnocení je neúplný, můžete také použít mutaci se zdrojem Generated ke ztlumení podů citlivostní analýzy. Další informace o této možnosti najdete v dokumentaci Gatekeeper.

Vylepšení zabezpečení

  • Vydáno v červenci 2024
  • Kubernetes 1.27 nebo novější
  • Vrátný 3.16.3

1.6.1

Vylepšení zabezpečení

  • Vydáno v květnu 2024
  • Vrátný 3.14.2

1.5.0

Vylepšení zabezpečení

  • Vydáno v květnu 2024
  • Kubernetes 1.27 nebo novější
  • Vrátný 3.16.3

1.4.0

Povoluje ve výchozím nastavení mutaci a externí data. Další ztlumení webhooku a zvýšení limitu časového limitu webhooku může zvýšit latenci volání v nejhorším případě. Zavádí také podporu zobrazení definice zásad a nastavení verze definice ve výsledcích dodržování předpisů.

  • Vydáno v květnu 2024
  • Kubernetes 1.25 nebo novější
  • Vrátný 3.14.0

1.3.0

Zavádí stav chyby pro zásady, které se chybují, a umožňuje je odlišit od zásad v nekompatibilních stavech. Přidá podporu pro šablony omezení verze 1 a použití parametru excludedNamespaces v zásadách s mutací. Přidá kontrolu stavu chyby u šablon omezení po instalaci.

  • Vydáno v únoru 2024
  • Kubernetes 1.25 nebo novější
  • Vrátný 3.14.0

1.2.1

  • Vydáno říjen 2023
  • Kubernetes 1.25 nebo novější
  • Vrátný 3.13.3

1.1.0

  • Vydáno v červenci 2023
  • Kubernetes 1.27 nebo novější
  • Vrátný 3.11.1

1.0.1

  • Vydáno v červnu 2023
  • Kubernetes 1.24 nebo novější
  • Vrátný 3.11.1

1.0.0

Azure Policy pro Kubernetes teď podporuje mutaci pro nápravu clusterů AKS ve velkém měřítku.

Odebrání doplňku

Odebrání doplňku z AKS

Pokud chcete doplněk Azure Policy z clusteru AKS odebrat, použijte Azure Portal nebo Azure CLI:

  • portál Azure

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

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

    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 podporou Služby Azure Arc

Poznámka:

Model Helm doplňku Azure Policy je teď zastaralý. Místo toho byste měli zvolit rozšíření Azure Policy pro Kubernetes s podporou Azure Arc.

Pokud chcete z clusteru Kubernetes s podporou Azure Arc odebrat doplněk Azure Policy a Gatekeeper, spusťte následující příkaz Helm:

helm uninstall azure-policy-addon

Odebrání doplňku z modulu AKS

Poznámka:

Produkt AKS Engine je teď pro zákazníky veřejného cloudu Azure zastaralý. Zvažte použití služby Azure Kubernetes Service (AKS) pro spravovaného poskytovatele rozhraní Kubernetes nebo poskytovatele rozhraní CLUSTER API v Azure pro samospravované Kubernetes. Nejsou naplánovány žádné nové funkce; tento projekt bude aktualizován pouze pro cve a podobné verze s Kubernetes 1.24 jako finální verzí pro příjem aktualizací.

Pokud chcete z clusteru modulu AKS odebrat doplněk Azure Policy a Gatekeeper, použijte metodu, která odpovídá způsobu instalace doplňku:

  • Pokud je nainstalovaná nastavením vlastnosti addons v definici clusteru pro modul AKS:

    Po změně vlastnosti doplňků 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 – Zakázání doplňku Azure Policy.

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

    helm uninstall azure-policy-addon
    

Omezení

  • Obecné definice a limity přiřazení služby Azure Policy najdete v dokumentovaných limitech služby Azure Policy.
  • Doplněk Azure Policy pro Kubernetes se dá nasadit jenom do fondů uzlů Linuxu.
  • Maximální počet podů podporovaných doplňkem Azure Policy na cluster: 10 000
  • Maximální počet nekompatibilních záznamů na jednu zásadu na cluster: 500
  • Maximální počet záznamů nedodržovaných předpisů na předplatné: 1 milion
  • Instalace Gatekeeperu mimo doplněk Azure Policy se nepodporují. Před povolením doplňku Azure Policy odinstalujte všechny komponenty nainstalované předchozí instalací Gatekeeperu.
  • Důvody nedodržování předpisů nejsou k dispozici pro režim poskytovatele prostředků Microsoft.Kubernetes.Data. Použijte podrobnosti o komponentě.
  • Výjimky na úrovni komponent nejsou podporovány pro režimy poskytovatele prostředků. Podpora parametrů je k dispozici v definicích služby Azure Policy pro vyloučení a zahrnutí konkrétních oborů názvů.
  • metadata.gatekeeper.sh/requires-sync-data Použití poznámek v šabloně omezení ke konfiguraci replikace dat z clusteru do mezipaměti OPA je v současné době povoleno pouze pro předdefinované zásady. Důvodem je, že může výrazně zvýšit využití prostředků gatekeeperových podů, pokud se nepoužívá pečlivě.

Konfigurace konfigurace Gatekeeperu

Změna konfigurace Gatekeeperu není podporována, protože obsahuje důležitá nastavení zabezpečení. Úpravy konfigurace jsou odsouhlasené.

Použití data.inventory v šablonách omezení

V současné době využívá replikace dat několik předdefinovaných zásad, které uživatelům umožňují synchronizovat stávající prostředky v clusteru s mezipapa a odkazovat na ně během vyhodnocení AdmissionReview žádosti. Zásady replikace dat se dají odlišit od přítomnosti data.inventory v registru a přítomností metadata.gatekeeper.sh/requires-sync-data poznámky, která informuje doplněk Azure Policy, které prostředky je potřeba ukládat do mezipaměti, aby vyhodnocení zásad fungovalo správně. Tento proces se liší od samostatného Gatekeepera, kde je tato poznámka popisná, nikoli popisná.

Replikace dat je aktuálně blokovaná pro použití v definicích vlastních zásad, protože replikace prostředků s vysokým počtem instancí může výrazně zvýšit využití prostředků podů Gatekeeper, pokud nejsou pečlivě používány. Při pokusu ConstraintTemplateInstallFailed o vytvoření vlastní definice zásady obsahující šablonu omezení s touto poznámkou se zobrazí chyba.

Při odebrání poznámky se může zobrazit zmírnění zobrazené chyby, ale doplněk zásad nesynchronizuje žádné požadované prostředky pro tuto šablonu omezení do mezipaměti. Proto se vaše zásady vyhodnotí jako prázdné data.inventory (za předpokladu, že není přiřazen žádný předdefinovaný, který replikuje požadované prostředky). To povede k zavádějícím výsledkům dodržování předpisů. Jak jsme si poznamenali dříve, ruční úprava konfigurace pro ukládání požadovaných prostředků do mezipaměti také není povolená.

Následující omezení platí jenom pro doplněk Azure Policy pro AKS:

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

Nejčastější dotazy

Co nasadí doplněk Azure Policy nebo rozšíření Azure Policy v mém clusteru při instalaci?

Doplněk Azure Policy vyžaduje ke spuštění tři komponenty Gatekeeperu: jeden pod auditu a dvě repliky podu webhooku. Nainstaluje se také jeden pod Azure Policy a jeden pod webhooku Azure Policy.

Jakou spotřebu prostředků mám očekávat, že se doplněk Azure Policy nebo rozšíření použije v každém clusteru?

Komponenty Azure Policy pro Kubernetes, které běží v clusteru, spotřebovávají více prostředků, protože počet prostředků Kubernetes a přiřazení zásad se zvyšuje v clusteru, což vyžaduje operace auditu a vynucování.

Následující odhady vám pomůžou s plánováním:

  • Pro méně než 500 podů v jednom clusteru s maximálním omezením 20: dva virtuální procesory a 350 MB paměti na součást.
  • U více než 500 podů v jednom clusteru s maximálně 40 omezeními: tři vCPU a 600 MB paměti na součást.

Je možné na pody Windows použít definice Azure Policy pro Kubernetes?

Pody Windows nepodporují kontexty zabezpečení. Některé definice Azure Policy, jako je zákaz kořenových oprávnění, proto nejde v podech Windows eskalovat a platí jenom pro pody Linuxu.

Jaký typ diagnostických dat shromažďuje doplněk Azure Policy?

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. Data se používají následujícími způsoby:

  • Udržujte doplněk Azure Policy v aktualizovaném stavu.
  • Udržujte doplněk Azure Policy zabezpečený, spolehlivý a výkonný.
  • Vylepšení doplňku 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:

  • Verze agenta doplňku Azure Policy
  • 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: Seattle)
  • Clusterový stát nebo provincie (příklad: Washington)
  • Země nebo oblast clusteru (příklad: USA)
  • Výjimky nebo chyby, ke kterým došlo doplňkem Azure Policy během instalace agenta při vyhodnocování zásad
  • Počet definic zásad Gatekeeperu, které doplněk Azure Policy nenainstaluje

Jaké jsou obecné osvědčené postupy, které je potřeba mít na paměti při instalaci doplňku Azure Policy?

  • K naplánování podů Gatekeeper použijte fond systémových uzlů s CriticalAddonsOnly taintem. Další informace naleznete v tématu Použití fondů systémových uzlů.
  • Zabezpečte odchozí provoz z clusterů AKS. Další informace najdete v tématu Řízení výchozího přenosu dat pro uzly clusteru.
  • Pokud je cluster aad-pod-identity povolený, pody NMI (Node Managed Identity) upraví uzly tak, aby zachytily iptables volání koncového bodu metadat služby Azure Instance. Tato konfigurace znamená, že služba NMI zachytí všechny požadavky na koncový bod metadat, i když pod nepoužívá aad-pod-identity.
  • AzurePodIdentityException CRD je možné nakonfigurovat tak, aby informovala aad-pod-identity , že všechny požadavky na koncový bod metadat pocházející z podu, který odpovídá popiskům definovaným v CRD, by se měly přexiovat bez jakéhokoli zpracování v NMI. Systémové pody s kubernetes.azure.com/managedby: aks popiskem v oboru názvů kube-system by měly být vyloučeny aad-pod-identity konfigurací AzurePodIdentityException CRD. Další informace najdete v tématu Zakázání identity aad-pod pro konkrétní pod nebo aplikaci. Pokud chcete nakonfigurovat výjimku, nainstalujte YAML s výjimkou mikrofonu.

Další kroky