Megosztás a következőn keresztül:


Az Azure Kubernetes Service- (AKS-) fürtök védelme az Azure Policy használatával

Az Azure Policy használatával beépített biztonsági szabályzatokat alkalmazhat és kényszeríthet az Azure Kubernetes Service-fürtökre. Az Azure Policy segít kikényszeríteni a szervezeti szabványokat, és felmérni a megfelelőséget. Az AKS Azure Policy bővítményének telepítése után egyéni szabályzatdefiníciókat vagy kezdeményezésnek (más néven szabályzathalmazoknak) nevezett szabályzatdefiníciókat alkalmazhat a fürtre. Az AKS-szabályzatok és kezdeményezési definíciók teljes listájáért tekintse meg az Azure Policy beépített definícióit az AKS-hez .

Ez a cikk bemutatja, hogyan alkalmazhat szabályzatdefiníciókat a fürtre, és ellenőrizheti, hogy a hozzárendelések érvénybe lépnek-e.

Előfeltételek

  • Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, létrehozhat egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
  • Az AKS-fürtön telepítve kell lennie az AKS-hez készült Azure Policy-bővítménynek.

Beépített szabályzatdefiníció vagy -kezdeményezés hozzárendelése

A szabályzatdefiníciót vagy kezdeményezést az Azure Portalon az alábbi lépések végrehajtásával alkalmazhatja:

  1. Lépjen az Azure Policy szolgáltatáshoz az Azure Portalon, amelyet Szabályzatnak hívunk.
  2. Az Azure Policy lap bal oldali ablaktábláján válassza a Definíciók lehetőséget.
  3. A Kategóriák csoportban válassza a lehetőségetKubernetes.
  4. Válassza ki az alkalmazni kívánt szabályzatdefiníciót vagy kezdeményezést. Ebben a példában válassza ki a Kubernetes-fürt podjának biztonsági alapkonfigurációs szabványait a Linux-alapú számítási feladatok kezdeményezéséhez .
  5. Válassza a Hozzárendelés lehetőséget.
  6. Állítsa be a hatókört az AKS-fürt erőforráscsoportjára, amelynél az Azure Policy bővítmény engedélyezve van.
  7. Válassza a Paraméterek lapot, és frissítse az auditdeny az alaptervet megsértő új üzemelő példányok letiltásához. További névtereket is hozzáadhat a kiértékelésből való kizáráshoz. Ebben a példában tartsa meg az alapértelmezett értékeket.
  8. Válassza a Véleményezés + Létrehozás lehetőséget> a szabályzat-hozzárendelés elküldéséhez.

Egyéni szabályzatdefiníció létrehozása és hozzárendelése

Az egyéni szabályzatok lehetővé teszik az Azure használatára vonatkozó szabályok meghatározását. Például a következő típusú szabályokat kényszerítheti ki:

  • Biztonsági eljárások
  • Költségkezelés
  • Szervezetspecifikus szabályok (például elnevezés vagy helyek)

Egyéni szabályzat létrehozása előtt ellenőrizze a gyakori minták és minták listáját, és ellenőrizze, hogy az eset már szerepel-e a listán.

Az egyéni szabályzatdefiníciók JSON-ban vannak megírva. Az egyéni szabályzatok létrehozásával kapcsolatos további információkért tekintse meg az Azure Policy definíciós struktúráját és az egyéni szabályzatdefiníciók létrehozását ismertető témakört.

Feljegyzés

Az Azure Policy mostantól egy új, templateInfo nevű tulajdonságot használ, amely lehetővé teszi a kényszersablon forrástípusának meghatározását. Amikor a templateInfo-t szabályzatdefiníciókban definiálja, nem kell definiálnia a constraintTemplate vagy a kényszertulajdonságokat. Továbbra is meg kell határoznia az apiGroup-okat és -típusokat. Erről további információt az Azure Policy hatásainak ismertetése című témakörben talál.

Miután létrehozta az egyéni szabályzatdefiníciót, tekintse meg a Szabályzatdefiníció hozzárendelése című témakört a szabályzat Kubernetes-fürthöz való hozzárendelésének részletes útmutatójához.

Az Azure Policy futásának ellenőrzése

  • Győződjön meg arról, hogy a szabályzat-hozzárendelések alkalmazásra kerülnek a fürtre az alábbi kubectl get parancs segítségével.

    kubectl get constrainttemplates
    

    Feljegyzés

    A szabályzat-hozzárendelések akár 20 percet is igénybe vehetnek az egyes fürtökbe való szinkronizáláshoz .

    A kimenetnek hasonlónak kell lennie a következő példakimenethez:

    NAME                                     AGE
    k8sazureallowedcapabilities              23m
    k8sazureallowedusersgroups               23m
    k8sazureblockhostnamespace               23m
    k8sazurecontainerallowedimages           23m
    k8sazurecontainerallowedports            23m
    k8sazurecontainerlimits                  23m
    k8sazurecontainernoprivilege             23m
    k8sazurecontainernoprivilegeescalation   23m
    k8sazureenforceapparmor                  23m
    k8sazurehostfilesystem                   23m
    k8sazurehostnetworkingports              23m
    k8sazurereadonlyrootfilesystem           23m
    k8sazureserviceallowedports              23m
    

Privilegizált pod elutasításának érvényesítése

Először teszteljük, hogy mi történik, amikor a podot a privileged: true biztonsági környezettel ütemezi. Ez a biztonsági környezet emeli a pod jogosultságait. A kezdeményezés nem engedélyezi a kiemelt podokat, ezért a kérés elutasításra kerül, ami az üzembe helyezés visszautasításához vezet.

  1. Hozzon létre egy fájlt nginx-privileged.yaml néven, és illessze be a következő YAML-manifesztet.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-privileged
    spec:
      containers:
        - name: nginx-privileged
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
          securityContext:
            privileged: true
    
  2. Hozza létre a podot a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f nginx-privileged.yaml
    

    A vártnak megfelelően a pod nem lesz ütemezve, ahogy az a következő példakimenetben is látható:

    Error from server ([denied by azurepolicy-container-no-privilege-00edd87bf80f443fa51d10910255adbc4013d590bec3d290b4f48725d4dfbdf9] Privileged container is not allowed: nginx-privileged, securityContext: {"privileged": true}): error when creating "privileged.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [denied by azurepolicy-container-no-privilege-00edd87bf80f443fa51d10910255adbc4013d590bec3d290b4f48725d4dfbdf9] Privileged container is not allowed: nginx-privileged, securityContext: {"privileged": true}
    

    A pod nem éri el az ütemezési szakaszt, ezért nincsenek törlendő erőforrások a továbblépés előtt.

Nem emelt szintű pod létrehozásának tesztelése

Az előző példában a tárolórendszerkép automatikusan a gyökér használatával próbálta meg az NGINX-et a 80-s porthoz kötni. A szabályzat kezdeményezés elutasítja ezt a kérelmet, ezért a pod nem tud elindulni. Most próbáljuk meg ugyanazt az NGINX-podot privilegizált hozzáférés nélkül futtatni.

  1. Hozzon létre egy fájlt nginx-unprivileged.yaml, és illessze be a következő YAML-nyilatkozatot.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-unprivileged
    spec:
      containers:
        - name: nginx-unprivileged
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    
  2. Hozza létre a podot a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f nginx-unprivileged.yaml
    
  3. Ellenőrizze a pod állapotát a kubectl get pods paranccsal.

    kubectl get pods
    

    A kimenetnek hasonlónak kell lennie a következő példakimenethez, amely azt mutatja, hogy a pod sikeresen ütemezve van, és fut:

    NAME                 READY   STATUS    RESTARTS   AGE
    nginx-unprivileged   1/1     Running   0          18s
    

    Ez a példa a gyűjtemény szabályzatait sértő telepítéseket érintő alapszintű kezdeményezést mutatja be. Az engedélyezett üzemelő példányok továbbra is működnek.

  4. Törölje az NGINX nem emelt szintű podot a kubectl delete parancs használatával, és adja meg a YAML-jegyzék nevét.

    kubectl delete -f nginx-unprivileged.yaml
    

Szabályzat vagy kezdeményezés letiltása

Az Alapterv kezdeményezést az Azure Portalon az alábbi lépésekkel távolíthatja el:

  1. Lépjen a Szabályzat panelre az Azure Portalon.
  2. Válassza ki a Hozzárendelések lehetőséget.
  3. Válassza a ... gombot a Linux-alapú munkaterhelés Kubernetes klaszter pod biztonsági alapszabványai kezdeményezés mellett.
  4. Válassza a Hozzárendelés törlése lehetőséget.

Következő lépések

Az Azure Policy működésével kapcsolatos további információkért tekintse meg az alábbi cikkeket: