A Kubernetes-fürtökhöz tartozó Azure Policy ismertetése

Az Azure Policy kibővíti a Gatekeeper v3-at, az Open Policy Agenthez (OPA) készült beléptető-vezérlő webhookot, hogy központi, konzisztens módon alkalmazza a fürtösszetevőkre vonatkozó, nagy léptékű kényszerítéseket és biztonsági intézkedéseket. A fürtösszetevők podokat, tárolókat és névtereket tartalmaznak.

Az Azure Policy lehetővé teszi, hogy egy helyen kezelhesse a Kubernetes-fürtkomponensek megfelelőségi állapotát, és jelentést készíthessen róla. Az Azure Policy bővítményének vagy bővítményének használatával a fürtösszetevők szabályozása olyan Azure Policy-funkciókkal bővül, mint a választók és felülbírálások használata a szabályzat biztonságos bevezetéséhez és visszaállításához.

Az Azure Policy a Kuberneteshez a következő fürtkörnyezeteket támogatja:

Fontos

Az Azure Policy Add-on Helm-modell és az AKS-motor bővítménye elavult. A bővítmények eltávolításához kövesse az utasításokat.

Áttekintés

Az Azure Policy bővítményének vagy kiegészítőjének Kubernetes-fürtökre való telepítésével az Azure Policy a következő funkciókat hajtja végre:

  • Az Azure Policy szolgáltatással ellenőrzi a fürthöz való szabályzat-hozzárendeléseket.
  • A szabályzatdefiníciókat kényszersablonként és egyéni erőforrások korlátozására vagy mutációsablon-erőforrásként helyezi üzembe a fürtben (a szabályzatdefiníció tartalmától függően).
  • Jelentést készít az Azure Policy szolgáltatás felé az ellenőrzés és a megfelelőség részleteiről.

Az Azure Policy Kubernetes-fürttel való engedélyezéséhez és használatához hajtsa végre a következő műveleteket:

  1. Konfigurálja a Kubernetes-fürtöt, és telepítse az Azure Kubernetes Service (AKS) bővítményt vagy az Arc-kompatibilis Kubernetes-fürtökhöz készült Azure Policy-bővítményt (a fürt típusától függően).

    Feljegyzés

    A telepítéssel kapcsolatos gyakori problémákért tekintse meg az Azure Policy bővítmény hibaelhárítását.

  2. Használjon vagy hozzon létre Azure Policy-definíció mintát Kuberneteshez

  3. Rendeljen definíciót a Kubernetes-fürthöz

  4. Várja meg az ellenőrzést

  5. Naplózás és hibaelhárítás

  6. Tekintse át a korlátozásokat és ajánlásokat a GYIK részben

Az AKS-hez készült Azure Policy-bővítmény telepítése

Előfeltételek

  1. Regisztrálja az erőforrás-szolgáltatókat és az előzetes verziójú funkciókat.

    • Azure Portal:

      Regisztrálja az Microsoft.PolicyInsights erőforrás-szolgáltatókat. A lépésekért tekintse meg az erőforrás-szolgáltatókat és -típusokat.

    • 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. Telepítenie és konfigurálnia kell az Azure CLI 2.12.0-s vagy újabb verzióját. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne, olvassa el az Azure CLI telepítését ismertető cikket.

  3. Az AKS-fürtnek az Azure Kubernetes Service (AKS) támogatott Kubernetes-verziójának kell lennie. Az AKS-fürt verziójának ellenőrzéséhez használja a következő szkriptet:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  4. Nyisson meg portokat az Azure Policy-bővítmény számára. Az Azure Policy-bővítmény ezeket a tartományokat és portokat használja a fürt szabályzatdefinícióinak és hozzárendeléseinek lekérésére, valamint a fürt megfelelőségének jelentésére az Azure Policy-ba.

    Tartomány Kikötő
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443

Az előfeltételek teljesítése után telepítse az Azure Policy bővítményt a kezelni kívánt AKS-fürtbe.

  • Azure Portal

    1. Indítsa el az AKS szolgáltatást az Azure Portalon a Minden szolgáltatás kiválasztásával, majd a Kubernetes-szolgáltatások keresésével és kiválasztásával.

    2. Válasszon egy AKS-fürtöt.

    3. A Kubernetes szolgáltatásoldal bal oldalán válassza a Szabályzatok lehetőséget.

    4. A főoldalon válassza a Bővítmény engedélyezése gombot.

  • 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
    

Annak ellenőrzéséhez, hogy a bővítmény telepítése sikeres volt-e, és hogy az Azure-policy és a gatekeeper podok futnak-e, futtassa a következő parancsot:

# 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

Végül ellenőrizze, hogy a legújabb bővítmény telepítve van-e az Azure CLI-parancs futtatásával, lecserélve <rg> az erőforráscsoport nevére és <cluster-name> az AKS-fürt nevére: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Az eredménynek a következő kimenethez hasonlóan kell kinéznie a szolgáltatásnevet használó fürtök esetében:

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

És a következő kimenet felügyelt identitást használó fürtök esetében:

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

Az Azure Arc-kompatibilis Kubernetes Azure Policy-bővítményének telepítése

Az Azure Policy for Kubernetes lehetővé teszi a Kubernetes-fürtök megfelelőségi állapotának kezelését és jelentését egy helyről. Az Azure Policy Arc-kompatibilis Kubernetes-fürtökhöz készült bővítményével szabályozhatja az Arc-kompatibilis Kubernetes-fürtösszetevőket, például a podokat és a tárolókat.

Ez a cikk bemutatja, hogyan hozhatja létre, jelenítheti meg a bővítmény állapotát és törölheti a Kubernetes-bővítményhez készült Azure Policyt.

A bővítményplatform áttekintéséhez tekintse meg az Azure Arc-fürtbővítményeket.

Előfeltételek

Ha már üzembe helyezte az Azure Policy for Kubernetes-t egy Azure Arc-fürtön a Helm közvetlen bővítmények nélküli használatával, kövesse az utasításokat a Helm-diagram törléséhez. A törlés után folytathatja a műveletet.

  1. Győződjön meg arról, hogy a Kubernetes-fürt a támogatott terjesztés része.

    Feljegyzés

    Az Azure Policy for Arc-bővítmény a következő Kubernetes-disztribúciókban támogatott.

  2. Győződjön meg arról, hogy megfelelt az itt felsorolt Kubernetes-bővítmények általános előfeltételeinek, beleértve a fürt Azure Archoz való csatlakoztatását is.

    Feljegyzés

    Az Azure Policy-bővítmény az Arc-kompatibilis Kubernetes-fürtök esetében támogatott ezekben a régiókban.

  3. Nyisson meg portokat az Azure Policy-bővítmény számára. Az Azure Policy-bővítmény ezeket a tartományokat és portokat használja a fürt szabályzatdefinícióinak és hozzárendeléseinek lekérésére, valamint a fürt megfelelőségének jelentésére az Azure Policy-ba.

    Tartomány Kikötő
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Az Azure Policy-bővítmény telepítése vagy bármely szolgáltatásfunkció engedélyezése előtt az előfizetésnek engedélyeznie kell az Microsoft.PolicyInsights erőforrás-szolgáltatókat.

    Feljegyzés

    Az erőforrás-szolgáltató engedélyezéséhez kövesse az erőforrás-szolgáltatók és -típusok lépéseit, vagy futtassa az Azure CLI vagy az Azure PowerShell parancsot.

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

Azure Policy-bővítmény létrehozása

Feljegyzés

Az Azure Policy-bővítmények létrehozásához vegye figyelembe a következőket:

  • Az automatikus frissítés alapértelmezés szerint engedélyezve van, amely új módosítások esetén frissíti az Azure Policy-bővítmény alverziót.
  • A paraméterekként átadott proxyváltozók connectedk8s az Azure Policy-bővítménybe lesznek propagálva a kimenő proxy támogatásához.

Bővítménypéldány létrehozásához futtassa az alábbi parancsot az Értékekkel helyettesítve <> az Arc-kompatibilis fürthöz:

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

Példa:

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

Példakimenet:

{
  "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"
}

Azure Policy-bővítmény megjelenítése

A bővítménypéldány létrehozásának sikerességének ellenőrzéséhez és a bővítmény metaadatainak vizsgálatához futtassa az alábbi parancsot az értékekkel helyettesítve <> :

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

Példa:

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

Annak ellenőrzéséhez, hogy a bővítmény telepítése sikeres volt-e, és hogy az Azure-policy és a gatekeeper podok futnak-e, futtassa a következő parancsot:

# 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

Azure Policy-bővítmény törlése

A bővítménypéldány törléséhez futtassa a következő parancsot az értékekkel helyettesítve <> :

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

Szabályzatdefiníció létrehozása

A Kubernetes kezeléséhez használt Azure Policy nyelvi struktúra a meglévő szabályzatdefiníciókat követi. Az Azure Policy beépített szabályzattárában elérhető mintadefiníciós fájlok a fürtösszetevők szabályozására használhatók.

Az Azure Policy for Kubernetes emellett támogatja az egyéni definíciók létrehozását összetevőszinten az Azure Kubernetes Service-fürtök és az Azure Arc-kompatibilis Kubernetes-fürtök esetében is. A kényszersablon és a mutációs sablonminták a Gatekeeper közösségi könyvtárában érhetők el. Az Azure Policy VS Code-bővítménye segítségével egy meglévő kényszersablont vagy mutációs sablont lefordíthat egy egyéni Azure Policy-szabályzatdefinícióra.

Erőforrás-szolgáltatói Microsoft.Kubernetes.Datamód esetén a kubernetes-fürtök kezeléséhez az effektusok naplózása, elutasítása, letiltása és mutációja használható.

A naplózásnak és a megtagadásnak meg kell adnia az OPA-kényszer-keretrendszer és a Gatekeeper v3 használatával kapcsolatos részletes tulajdonságokat.

A szabályzatdefiníció details.templateInfo vagy details.constraintInfo tulajdonságainak részeként az Azure Policy átadja ezen CustomResourceDefinitions(CRD) URI- vagy Base64Encoded értékét a bővítménynek. A Rego az a nyelv, amelyet az OPA és a Gatekeeper támogat a Kubernetes-fürthöz érkező kérések érvényesítéséhez. A Kubernetes-felügyelet egy meglévő szabványának támogatásával az Azure Policy lehetővé teszi a meglévő szabályok újrafelhasználását és párosítását az Azure Policyval az egységes felhőmegfelelőségi jelentéskészítési élmény érdekében. További információ: Mi a Rego?

Szabályzatdefiníció hozzárendelése

Ha szabályzatdefiníciót szeretne hozzárendelni a Kubernetes-fürthöz, hozzá kell rendelnie a megfelelő Azure-szerepköralapú hozzáférés-vezérlési (Azure RBAC-) szabályzat-hozzárendelési műveleteket. Az Azure beépített szerepkörök erőforrásházirend-közreműködője és tulajdonosa rendelkezik ezekkel a műveletekkel. További információkért tekintse meg az Azure RBAC-engedélyeket az Azure Policyban.

Az alábbi lépésekkel megtalálhatja a fürt azure portalon történő kezelésére szolgáló beépített szabályzatdefiníciókat. Ha egyéni szabályzatdefiníciót használ, keressen rá név vagy a létrehozott kategória alapján.

  1. Indítsa el az Azure Policy szolgáltatást az Azure Portalon. A bal oldali panelen válassza a Minden szolgáltatás lehetőséget, majd keresse meg és válassza a Szabályzat lehetőséget.

  2. Az Azure Policy lap bal oldali ablaktábláján válassza a Definíciók lehetőséget.

  3. A Kategória legördülő listában válassza az Összes kijelölése lehetőséget a szűrő törléséhez, majd válassza a Kubernetes lehetőséget.

  4. Válassza ki a szabályzatdefiníciót, majd válassza a Hozzárendelés gombot.

  5. Állítsa a hatókört annak a Kubernetes-fürtnek a felügyeleti csoportjára, előfizetésére vagy erőforráscsoportjára, ahol a szabályzat-hozzárendelés érvényes lesz.

    Feljegyzés

    Az Azure Policy for Kubernetes-definíció hozzárendelésekor a hatókörnek tartalmaznia kell a fürterőforrást.

  6. Adjon meg egy nevet és leírást a szabályzat-hozzárendelésnek, amellyel könnyen azonosítható.

  7. Állítsa a szabályzatkényszerítést az alábbi értékek egyikére:

    • Engedélyezve – A házirend kényszerítése a fürtön. A Kubernetes szabálysértési kérelmeket elutasítja.

    • Letiltva – Ne kényszerítse ki a házirendet a fürtön. A Kubernetes szabálysértési kérelmeket nem tagadja meg. A megfelelőségértékelés eredményei továbbra is elérhetők. Amikor új szabályzatdefiníciókat vezet be a fürtök futtatására, a letiltott beállítás hasznos a szabályzatdefiníció teszteléséhez, mivel a szabálysértésekkel kapcsolatos belépési kérelmeket nem tiltja le a rendszer.

  8. Válassza a Tovább lehetőséget.

  9. Paraméterértékek beállítása

    • Ha ki szeretné zárni a Kubernetes-névtereket a szabályzatértékelésből, adja meg a névterek listáját a Névtér paraméter kizárásai között. Javasoljuk a kube-system, a gatekeeper-system és az azure-arc kizárását.
  10. Válassza az Áttekintés + létrehozás lehetőséget.

Másik megoldásként használja a Szabályzat hozzárendelése – Portál rövid útmutatót egy Kubernetes-szabályzat megkereséséhez és hozzárendeléséhez. Keresse meg a Kubernetes-szabályzatdefiníciót a minta auditálási virtuális gépek helyett.

Fontos

A kubernetes kategóriában lévő Kubernetes-fürtökhöz beépített szabályzatdefiníciók érhetők el. A beépített szabályzatdefiníciók listáját a Kubernetes-mintákban találja.

Szabályzatkiértékelés

A bővítmény 15 percenként ellenőrzi az Azure Policy szolgáltatásban, hogy módosultak-e a szabályzat-hozzárendelések. A frissítési ciklus során a bővítmény ellenőrzi a módosításokat. Ezek a módosítások aktiválják a kényszersablonok és kényszerek létrehozását, frissítését vagy törlését.

Kubernetes-fürtökben, ha egy névtéren a fürtnek megfelelő címke szerepel, a rendszer nem tagadja meg a szabálysértési kérelmeket. A megfelelőségértékelés eredményei továbbra is elérhetők.

  • Azure Arc-kompatibilis Kubernetes-fürt: admission.policy.azure.com/ignore

Feljegyzés

Bár a fürt rendszergazdája rendelkezhet engedéllyel a kényszersablonok és az Azure Policy-bővítmény által telepített korlátozások erőforrásainak létrehozására és frissítésére, ezek nem támogatott forgatókönyvek, mivel a manuális frissítések felülíródnak. A Gatekeeper továbbra is kiértékeli a bővítmény telepítése és az Azure Policy-szabályzatdefiníciók hozzárendelése előtt meglévő szabályzatokat.

A bővítmény 15 percenként teljes vizsgálatot kezdeményez a fürtön. Miután összegyűjtötte a teljes vizsgálat adatait és a Gatekeeper által a fürtön végrehajtani próbált módosításokról valós időben készített kiértékeléseket, a bővítmény visszaküldi az eredményeket az Azure Policynek, hogy a többi Azure Policy-hozzárendeléssel együtt szerepelhessenek a megfelelőségi adatok között. A naplózási ciklus során csak az aktív szabályzat-hozzárendelések eredményei lesznek visszaadva. A naplózási eredmények megsértésekként is megjelennek a meghiúsult kényszer állapotmezőjében. A nem megfelelő erőforrásokról további információt az Erőforrás-szolgáltatói módok összetevő-részletei című témakörben talál.

Feljegyzés

A Kubernetes-fürtök azure policy-beli megfelelőségi jelentései az elmúlt 45 percben minden szabálysértést tartalmaznak. Az időbélyeg azt jelzi, hogy mikor történt szabálysértés.

Néhány egyéb szempont:

  • Ha a fürt-előfizetés regisztrálva van Felhőhöz készült Microsoft Defender, akkor a rendszer automatikusan alkalmazza Felhőhöz készült Microsoft Defender Kubernetes-szabályzatokat a fürtre.

  • Ha a rendszer megtagadási szabályzatot alkalmaz a meglévő Kubernetes-erőforrásokkal rendelkező fürtön, az új szabályzatnak nem megfelelő meglévő erőforrások továbbra is futnak. Ha a nem megfelelő erőforrást egy másik csomópontra ütemezik át, a Gatekeeper blokkolja az erőforrás létrehozását.

  • Ha egy fürt olyan megtagadási szabályzattal rendelkezik, amely ellenőrzi az erőforrásokat, a felhasználó nem kap elutasítási üzenetet az üzembe helyezés létrehozásakor. Vegyük például egy Kubernetes-üzembe helyezést, amely replikákat és podokat tartalmaz. Amikor egy felhasználó végrehajtja a parancsot kubectl describe deployment $MY_DEPLOYMENT, az nem ad vissza elutasító üzenetet az események részeként. Az kubectl describe replicasets.apps $MY_DEPLOYMENT elutasításhoz kapcsolódó eseményeket azonban visszaadja.

Feljegyzés

Az Init-tárolók belefoglalhatók a szabályzat kiértékelése során. Annak ellenőrzéséhez, hogy az Init-tárolók szerepelnek-e a dokumentumban, tekintse át a CRD-t a következő vagy hasonló deklarációhoz:

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

Kényszersablon ütközései

Ha a kényszersablonok neve megegyezik az erőforrás metaadatainak nevével, de a szabályzatdefiníció különböző helyeken hivatkozik a forrásra, a szabályzatdefiníciók ütközésnek minősülnek. Példa: Két szabályzatdefiníció hivatkozik ugyanarra template.yaml a fájlra, amely különböző forráshelyeken, például az Azure Policy-sablontárolóban (store.policy.core.windows.net) és a GitHubon található.

Ha a szabályzatdefiníciók és a kényszersablonok hozzárendelve vannak, de még nincsenek telepítve a fürtön, és ütközésben vannak, a rendszer ütközésként jelenti őket, és az ütközés feloldásáig nem települnek a fürtbe. Hasonlóképpen, az újonnan hozzárendelt szabályzatdefiníciókkal ütköző fürtön lévő meglévő szabályzatdefiníciók és kényszersablonjaik továbbra is normálisan működnek. Ha egy meglévő hozzárendelés frissül, és nem sikerül szinkronizálni a kényszersablont, a fürt is ütközésként van megjelölve. Az összes ütközési üzenet esetén tekintse meg az AKS erőforrás-szolgáltatói mód megfelelőségi okait

Naplózás

Kubernetes-vezérlőként/tárolóként az azure-policy és a gatekeeper pod is naplókat tárol a Kubernetes-fürtben. Az azure-policy-naplók általában a fürtbe történő szabályzatbetöltéssel és a megfelelőségi jelentésekkel kapcsolatos problémák elhárítására használhatók. A gatekeeper-controller-manager podnaplók a futtatókörnyezeti hibák elhárítására használhatók. A gatekeeper-audit podnaplók a meglévő erőforrások naplózásának hibaelhárítására használhatók. A naplók a Kubernetes-fürt Megállapítások oldalán tehetők közzé. További tudnivalókért lásd a Kubernetes-fürt teljesítményének monitorozását a tárolókhoz készült Azure Monitor segítségével.

A bővítménynaplók megtekintéséhez használja a következőt 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

Ha megpróbál elhárítani egy adott ComplianceReasonCode-ot, amely megjelenik a megfelelőségi eredményekben, a kódhoz tartozó Azure-policy podnaplókban kereshet a teljes kísérő hiba megtekintéséhez.

További tudnivalókért tekintse meg a Gatekeeper hibakeresését ismertető szakaszt a Gatekeeper dokumentációjában.

Gatekeeper-összetevők megtekintése

Miután a bővítmény letöltötte a szabályzat-hozzárendeléseket, és telepítette a fürtre vonatkozó kényszersablonokat és megkötéseket, mind az Azure Policy-információkkal, például a szabályzat-hozzárendelés azonosítójával, mind a szabályzatdefiníció-azonosítóval megjegyzéseket fűz. Ha úgy szeretné konfigurálni az ügyfelet, hogy megtekintse a bővítményhez kapcsolódó összetevőket, kövesse az alábbi lépéseket:

  1. Állítsa be kubeconfig a fürtöt.

    Azure Kubernetes Service-fürt esetén használja a következő Azure CLI-t:

    # 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. Tesztelje a fürtkapcsolatot.

    Futtassa a következő parancsot: kubectl cluster-info. A sikeres futtatáshoz minden szolgáltatás egy URL-címmel válaszol, amelyen fut.

A bővítmény kényszersablonjainak megtekintése

A bővítmény által letöltött kényszersablonok megtekintéséhez futtassa a következőt kubectl get constrainttemplates: A bővítmény által telepített kényszersablonok k8sazure .

A bővítménymutációsablonok megtekintése

A bővítmény által letöltött mutációs sablonok megtekintéséhez futtassa kubectl get assignkubectl get assignmetadatakubectl get modifyseta következőt:

Azure Policy-leképezések lekérése

A fürtre letöltött kényszersablon és a szabályzatdefiníció közötti megfeleltetés azonosításához használja kubectl get constrainttemplates <TEMPLATE> -o yamla következőt: . Az eredmények a következő kimenethez hasonlóak:

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> az előfizetés azonosítója, és <GUID> a megfeleltetett szabályzatdefiníció azonosítója. <URL-OF-YAML> a fürtre való telepítéshez letöltött kényszersablon forráshelye.

Miután megkapta a bővítmény letöltött kényszersablonjainak nevét, a névvel megtekintheti a kapcsolódó kényszereket. A lista lekérésére használható kubectl get <constraintTemplateName> . A bővítmény által telepített korlátozások a következővel kezdődnek azurepolicy-: .

A kényszer részleteinek megtekintése

A korlátozás részletes információkat tartalmaz a szabályzatdefiníció és -hozzárendelés megsértéseiről és leképezéseiről. A részletek megtekintéséhez használja kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yamla következőt: . Az eredmények a következő kimenethez hasonlóak:

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

A bővítmény hibaelhárítása

A Kubernetes bővítmény hibaelhárításával kapcsolatos további információkért tekintse meg az Azure Policy hibaelhárítási cikkének Kubernetes szakaszát .

Az Arc-bővítményekkel kapcsolatos Azure Policy-bővítményekkel kapcsolatos problémákért tekintse meg a következőt:

Az Azure Policyval kapcsolatos problémákért tekintse meg a következő témaköröket:

Azure Policy-bővítmény az AKS változásnaplóhoz

Az Azure Policy AKS-hez készült bővítménye verziószámmal rendelkezik, amely a bővítmény képverzióját jelzi. Mivel a funkciótámogatást újonnan vezetik be a bővítményen, a verziószám megnő.

Ez a szakasz segít azonosítani, hogy melyik bővítményverzió van telepítve a fürtön, és megoszt egy előzménytáblát az AKS-fürtökre telepített Azure Policy bővítményverzióról.

A fürtre telepített bővítményverzió azonosítása

Az Azure Policy bővítmény minden verzióhoz a szabványos szemantikai verziószámozási sémát használja. A használt Azure Policy bővítményverzió azonosításához futtassa a következő parancsot: kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'

Az Azure Policy-bővítmény által használt Gatekeeper-verzió azonosításához futtassa a következő parancsot: kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'

Végül a használt AKS-fürtverzió azonosításához kövesse a csatolt AKS-útmutatót.

Az egyes AKS-fürtverziókhoz elérhető bővítményverziók

1.3.0

Hibaállapotot vezet be a hibás szabályzatokhoz, így azok megkülönböztethetők a nem megfelelő állapotú szabályzatoktól. Támogatja a v1-alapú kényszersablonokat és a kizártNamespaces paraméter használatát a mutációs szabályzatokban. Hibaállapot-ellenőrzést ad hozzá a kényszersablonokhoz a telepítés után.

  • Kiadás dátuma: 2024. február
  • Kubernetes 1.25+
  • Kapuőr 3.14.0

1.2.1

  • Kiadás dátuma: 2023. október
  • Kubernetes 1.25+
  • Kapuőr 3.13.3

1.1.0

  • Kiadás dátuma: 2023. július
  • Kubernetes 1.27+
  • Kapuőr 3.11.1

1.0.1

  • Kiadás dátuma: 2023. június
  • Kubernetes 1.24+
  • Kapuőr 3.11.1

1.0.0

Az Azure Policy for Kubernetes mostantól támogatja a mutációt az AKS-fürtök nagy léptékű szervizeléséhez!

A bővítmény eltávolítása

A bővítmény eltávolítása az AKS-ből

Ha el szeretné távolítani az Azure Policy bővítményt az AKS-fürtből, használja az Azure Portalt vagy az Azure CLI-t:

  • Azure Portal

    1. Indítsa el az AKS szolgáltatást az Azure Portalon a Minden szolgáltatás kiválasztásával, majd a Kubernetes-szolgáltatások keresésével és kiválasztásával.

    2. Válassza ki az AKS-fürtöt, ahol le szeretné tiltani az Azure Policy bővítményt.

    3. A Kubernetes szolgáltatásoldal bal oldalán válassza a Szabályzatok lehetőséget.

    4. A főoldalon válassza a Bővítmény letiltása gombot.

  • 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
    

A bővítmény eltávolítása az Azure Arc-kompatibilis Kubernetesből

Feljegyzés

Az Azure Policy add-on Helm-modell elavult. Ehelyett válassza az Azure Arc-kompatibilis Kubernetes Azure Policy-bővítményét .

Ha el szeretné távolítani az Azure Policy bővítményt és a Gatekeepert az Azure Arc-kompatibilis Kubernetes-fürtből, futtassa a következő Helm-parancsot:

helm uninstall azure-policy-addon

A bővítmény eltávolítása az AKS-motorból

Feljegyzés

Az AKS Engine terméke mostantól elavult az Azure nyilvános felhőügyfelei számára. Fontolja meg az Azure Kubernetes Service (AKS) használatát a felügyelt Kuberneteshez vagy az Azure fürt API-szolgáltatóját a saját felügyeletű Kuberneteshez. Nincsenek tervezett új funkciók; ez a projekt csak a CVE-k és hasonlók esetében lesz frissítve, és a Kubernetes 1.24 lesz a végleges verzió a frissítések fogadásához.

Ha el szeretné távolítani az Azure Policy bővítményt és a Gatekeepert az AKS Engine-fürtből, használja a bővítmény telepítésének módjához igazodó módszert:

  • Ha az AKS Engine fürtdefiníciójában az addons tulajdonság beállításával van telepítve:

    Helyezze újra a fürtdefiníciót az AKS Engine-be, miután az Azure-Policy bővítménytulajdonságát hamisra módosította:

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

    További információ: AKS Engine – Az Azure Policy bővítmény letiltása.

  • Ha Helm-diagramokkal van telepítve, futtassa a következő Helm-parancsot:

    helm uninstall azure-policy-addon
    

Korlátozások

  • Az Azure Policy általános definícióiért és hozzárendelési korlátaiért tekintse át az Azure Policy dokumentált korlátait
  • A Kuberneteshez készült Azure Policy-bővítmény csak Linux-csomópontkészletekben telepíthető.
  • Az Azure Policy bővítmény által támogatott podok maximális száma fürtönként: 10 000
  • Nem megfelelő rekordok maximális száma fürtönként házirendenként: 500
  • Nem megfelelő rekordok maximális száma előfizetésenként: 1 millió
  • Az Azure Policy bővítményen kívüli Gatekeeper telepítések nem támogatottak. Az Azure Policy bővítmény engedélyezése előtt távolítsa el az előző Gatekeeper-telepítés által telepített összetevőket.
  • A meg nem felelés okai nem érhetők el a Microsoft.Kubernetes.Data Resource Provider mód esetében. Az összetevő részleteinek használata.
  • Az erőforrás-szolgáltatói módok nem támogatják az összetevőszintű kivételeket. A paraméterek támogatása elérhető az Azure Policy-definíciókban az adott névterek kizárásához és belefoglalásához.
  • metadata.gatekeeper.sh/requires-sync-data A fürtből az OPA-gyorsítótárba történő adatreplikáció konfigurálásához jelenleg csak a beépített szabályzatok használhatják a megjegyzést egy kényszersablonban. Ennek az az oka, hogy jelentősen növelheti a Gatekeeper-podok erőforrás-használatát, ha nem használja körültekintően.

A következő korlátozások csak az AKS-hez készült Azure Policy-bővítményre vonatkoznak:

Gyakori kérdések

Mit helyez üzembe az Azure Policy bővítmény/Azure Policy-bővítmény a fürtön a telepítéskor?

Az Azure Policy-bővítmény futtatásához három Gatekeeper-összetevő szükséges: egy naplózási pod és két webhook podreplika. Egy Azure Policy-pod és egy Azure Policy webhook pod is telepítve lesz.

Mennyi erőforrás-felhasználást kell elvárnom az Azure Policy bővítménytől/bővítménytől az egyes fürtökön?

A fürtön futó Azure Policy for Kubernetes-összetevők több erőforrást használnak fel, mivel a Kubernetes-erőforrások és szabályzat-hozzárendelések száma nő a fürtben, ami naplózási és kényszerítési műveleteket igényel. A következő becslések segítenek a tervezésben:

  • Egyetlen fürtben kevesebb mint 500 pod esetén, legfeljebb 20 korlátozással: két virtuális processzor és 350 MB memória összetevőnként.
  • Több mint 500 pod egyetlen fürtben, legfeljebb 40 korlátozással: három virtuális processzor és 600 MB memória összetevőnként.

Alkalmazhatók az Azure Policy for Kubernetes-definíciók Windows-podokon?

A Windows-podok nem támogatják a biztonsági környezeteket. Így az Azure Policy egyes definíciói, például a gyökérjogjogok letiltása, nem eszkalálhatók a Windows-podokban, és csak Linux-podokra alkalmazhatók.

Milyen típusú diagnosztikai adatokat gyűjt az Azure Policy bővítmény?

A KubernetesHez készült Azure Policy-bővítmény korlátozott fürtdiagnosztikai adatokat gyűjt. Ezek a diagnosztikai adatok a szoftverhez és a teljesítményhez kapcsolódó alapvető technikai adatok. A következő módokon használható:

  • Az Azure Policy bővítmény naprakészen tartása
  • Az Azure Policy bővítmény biztonságos, megbízható és teljesíthető maradjon
  • Az Azure Policy bővítmény fejlesztése – a bővítmény használatának összesített elemzésével

A bővítmény által gyűjtött információk nem személyes adatok. A rendszer jelenleg a következő adatokat gyűjti össze:

  • Az Azure Policy bővítményügynökének verziója
  • Fürt típusa
  • Fürtrégió
  • Fürterőforrás-csoport
  • Fürt erőforrás-azonosítója
  • Fürt-előfizetés azonosítója
  • Fürt operációs rendszere (példa: Linux)
  • Fürt városa (példa: Seattle)
  • Fürt állapota vagy tartománya (példa: Washington)
  • Fürt országa vagy régiója (példa: Egyesült Államok)
  • Az Azure Policy bővítmény által a szabályzat kiértékelése során az ügynök telepítése során előforduló kivételek/hibák
  • Az Azure Policy bővítmény által nem telepített Gatekeeper-szabályzatdefiníciók száma

Milyen általános ajánlott eljárásokat érdemes szem előtt tartani az Azure Policy bővítmény telepítésekor?

  • A CriticalAddonsOnly taint rendszercsomópontkészlettel ütemezze a Gatekeeper podokat. További információ: Rendszercsomópontkészletek használata.
  • A kimenő forgalom védelme az AKS-fürtökről. További információ: A fürtcsomópontok kimenő forgalmának szabályozása.
  • Ha a fürt aad-pod-identity engedélyezve van, a csomópontok által felügyelt identitás (NMI) podok módosítják a csomópontok iptables-jait, hogy elfogják az Azure Instance Metadata-végpontra irányuló hívásokat. Ez a konfiguráció azt jelenti, hogy a metaadat-végpontra irányuló kéréseket az NMI akkor is elfogja, ha a pod nem használja aad-pod-identity-t.
  • Az AzurePodIdentityException CRD konfigurálható úgy, hogy tájékoztassa az aad-pod-identitást arról, hogy a CRD-ben definiált címkéknek megfelelő podból származó metaadat-végpontra irányuló kéréseket az NMI-ben történő feldolgozás nélkül kell kihozni. Az AzurePodIdentityException CRD konfigurálásával ki kell zárni a kube-system névtérben a kubernetes.azure.com/managedby: aks címkével rendelkező rendszer podokat az aad-pod-identityban. További információt az adott pod vagy alkalmazás aad-pod-identitásának letiltása című témakörben talál. A kivétel konfigurálásához telepítse a mikrofonkivételi YAML-t.

Következő lépések