Ochrana posílením zabezpečení roviny dat Kubernetes

Tato stránka popisuje, jak používat sadu doporučení zabezpečení v programu Microsoft Defender for Cloud vyhrazená pro posílení zabezpečení roviny dat Kubernetes.

Tip

Seznam doporučení zabezpečení, která se můžou zobrazit pro clustery a uzly Kubernetes, najdete v části Doporučení kontejneru referenční tabulky doporučení.

Nastavení ochrany úloh

Microsoft Defender pro cloud obsahuje sadu doporučení, která jsou k dispozici po instalaci služby Azure Policy pro Kubernetes.

Požadavky

Povolení posílení zabezpečení roviny dat Kubernetes

Azure Policy pro Kubernetes můžete povolit jedním ze dvou způsobů:

Povolení služby Azure Policy pro Kubernetes pro všechny aktuální a budoucí clustery pomocí nastavení plánu nebo konektoru

Poznámka:

Pokud povolíte toto nastavení, v clusteru se nainstalují pody služby Azure Policy pro Kubernetes. Tím se přidělí malé množství procesoru a paměti pro pody, které se mají použít. Toto přidělení může dosáhnout maximální kapacity, ale nemá vliv na zbývající prostředky procesoru a paměti prostředku.

Poznámka:

Povolení AWS prostřednictvím konektoru se nepodporuje kvůli omezení v EKS, které vyžaduje, aby správce clusteru přidal oprávnění pro novou roli IAM v samotném clusteru.

Povolení pro předplatná Azure nebo místní prostředí

Když povolíte Microsoft Defender for Containers, ve výchozím nastavení se pro Službu Azure Kubernetes a pro clustery Kubernetes s podporou Azure Arc v příslušném předplatném povolí nastavení Azure Policy for Kubernetes. Pokud nastavení zakážete při počáteční konfiguraci, můžete ho potom povolit ručně.

Pokud jste v plánu kontejnerů zakázali nastavení Azure Policy pro Kubernetes, můžete ho povolit ve všech clusterech ve vašem předplatném pomocí následujících kroků:

  1. Přihlaste se k portálu Azure.

  2. Přejděte do nastavení cloudového>prostředí v programu Microsoft Defender.

  3. Vyberte příslušné předplatné.

  4. Na stránce Plány Defenderu se ujistěte, že jsou kontejnery přepnuty na Zapnuto.

  5. Vyberte Nastavení.

    Screenshot showing the settings button in the Defender plan.

  6. Na stránce Nastavení a monitorování přepněte azure Policy pro Kubernetes na Zapnuto.

    Screenshot showing the toggles used to enable or disable the extensions.

Povolení projektů GCP

Když povolíte Microsoft Defender for Containers na konektoru GCP, nastavení Rozšíření Azure Policy pro Azure Arc je ve výchozím nastavení povolené pro modul Google Kubernetes v příslušném projektu. Pokud nastavení zakážete při počáteční konfiguraci, můžete ho potom povolit ručně.

Pokud jste v konektoru GCP zakázali nastavení rozšíření Azure Policy pro Azure Arc, můžete ho pro svůj konektor GCP povolit pomocí následujících kroků.

Nasazení Služby Azure Policy pro Kubernetes v existujících clusterech

Azure Policy pro Kubernetes můžete nakonfigurovat ručně na existujících clusterech Kubernetes prostřednictvím stránky Doporučení. Po povolení budou doporučení k posílení zabezpečení dostupná (některá doporučení vyžadují jinou konfiguraci).

Poznámka:

Pro AWS není možné provést onboarding ve velkém měřítku pomocí konektoru, ale můžete ho nainstalovat na všechny existující clustery nebo na konkrétní clustery s doporučením clusterů Kubernetes s podporou Azure Arc, které by měly mít nainstalované rozšíření Azure Policy pro rozšíření Kubernetes.

Nasazení služby Azure Policy pro Kubernetesdo určených clusterů:

  1. Na stránce s doporučeními vyhledejte relevantní doporučení:

    • Azure-"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"

    • GCP - "GKE clusters should have the Azure Policy extension".

    • AWS a místní prostředí - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Screenshot showing the Azure Kubernetes service clusters recommendation.

      Tip

      Doporučení je součástí různých kontrolních mechanismů zabezpečení a nezáleží na tom, který z nich vyberete v dalším kroku.

  2. V libovolném ovládacím prvku zabezpečení vyberte doporučení, abyste zobrazili prostředky, na které můžete doplněk nainstalovat.

  3. Vyberte příslušný cluster a vyberte Opravit.

    Screenshot that shows how to select the cluster to remediate.

Zobrazení a konfigurace sady doporučení

Přibližně 30 minut po dokončení instalace Služby Azure Policy pro Kubernetes zobrazuje Defender for Cloud stav clusterů pro následující doporučení, přičemž každý z nich je v příslušném ovládacím prvku zabezpečení, jak je znázorněno níže:

Poznámka:

Pokud službu Azure Policy pro Kubernetes instalujete poprvé, zobrazí se tato doporučení jako nová přidání v seznamu doporučení.

Tip

Některá doporučení obsahují parametry, které je potřeba přizpůsobit prostřednictvím služby Azure Policy, aby je bylo možné efektivně používat. Pokud chcete například využít výhod doporučených imagí kontejnerů, měli byste je nasadit jenom z důvěryhodných registrů, musíte definovat důvěryhodné registry. Pokud nezadáte potřebné parametry pro doporučení, která vyžadují konfiguraci, zobrazí se úlohy jako poškozené.

Název doporučení Bezpečnostní prvek Vyžaduje se konfigurace.
Měly by se vynutit limity procesoru a paměti kontejneru. Ochrana aplikací před útoky DDoS Ano
Image kontejnerů by se měly nasazovat jenom z důvěryhodných registrů. Náprava ohrožení zabezpečení Ano
Pro kontejnery by se měly vynucovat nejméně privilegované funkce Linuxu. Správa přístupu a oprávnění Ano
Kontejnery by měly používat pouze povolené profily AppArmor. Náprava konfigurací zabezpečení Ano
Služby by měly naslouchat pouze na povolených portech. Omezení neoprávněného síťového přístupu Ano
Použití hostitelských sítí a portů by mělo být omezeno Omezení neoprávněného síťového přístupu Ano
Použití připojení svazků HostPath podu by mělo být omezeno na známý seznam. Správa přístupu a oprávnění Ano
Vyhnete se eskalaci kontejneru s oprávněními. Správa přístupu a oprávnění No
Kontejnery sdílející citlivé obory názvů hostitelů by se měly vyhnout Správa přístupu a oprávnění No
U kontejnerů by se měl vynucovat kořenový systém souborů jen pro čtení. Správa přístupu a oprávnění No
Clustery Kubernetes by měly být přístupné jenom přes PROTOKOL HTTPS. Šifrování přenášených dat No
Clustery Kubernetes by měly zakázat automatické připojování přihlašovacích údajů rozhraní API. Správa přístupu a oprávnění No
Clustery Kubernetes by neměly používat výchozí obor názvů. Implementace osvědčených postupů zabezpečení No
Clustery Kubernetes by neměly udělovat možnosti zabezpečení CAPSYSADMIN Správa přístupu a oprávnění No
Privilegované kontejnery by se měly vyhnout Správa přístupu a oprávnění No
Vyhnete se spouštění kontejnerů jako uživatel root. Správa přístupu a oprávnění No

U doporučení s parametry, které je potřeba přizpůsobit, je potřeba nastavit parametry:

Nastavení parametrů:

  1. Přihlaste se k portálu Azure.

  2. Přejděte do nastavení cloudového>prostředí v programu Microsoft Defender.

  3. Vyberte příslušné předplatné.

  4. V nabídce Defenderu pro cloud vyberte Zásady zabezpečení.

  5. Vyberte příslušné zadání. Výchozí přiřazení je ASC default.

  6. Otevřete kartu Parametry a podle potřeby upravte hodnoty.

    Screenshot showing where to modify the parameters for one of the recommendations in the Kubernetes data plane hardening protection bundle.

  7. Vyberte Zkontrolovat a uložit.

  8. Zvolte Uložit.

Vynucení některého z doporučení:

  1. Otevřete stránku s podrobnostmi doporučení a vyberte Odepřít:

    Screenshot showing the Deny option for Azure Policy parameter.

    Otevře se podokno pro nastavení oboru.

  2. Nastavte obor a vyberte Změnit, aby se odepřel.

Pokud chcete zjistit, která doporučení platí pro vaše clustery:

  1. Otevřete stránku inventáře prostředků v Programu Defender for Cloud a nastavte filtr typů prostředků na služby Kubernetes.

  2. Vyberte cluster, který chcete prozkoumat a zkontrolovat dostupná doporučení, která jsou pro něj k dispozici.

Když zobrazíte doporučení ze sady ochrany úloh, zobrazí se vedle clusteru i počet ovlivněných podů (komponent Kubernetes). Seznam konkrétních podů zobrazíte tak, že vyberete cluster a pak vyberete Provést akci.

Screenshot showing where to view the affected pods for a Kubernetes recommendation.

K otestování vynucení použijte následující dvě nasazení Kubernetes:

  • Jedním z nich je nasazení, které je v pořádku a vyhovuje sadě doporučení ochrany úloh.

  • Druhá je pro nasazení, které není v pořádku, nedodržuje žádná doporučení.

Nasaďte ukázkové soubory .yaml tak, jak jsou, nebo je použijte jako referenci k nápravě vlastní úlohy.

Příklad nasazení v pořádku – soubor .yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-healthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
      annotations:
        container.apparmor.security.beta.kubernetes.io/redis: runtime/default
    spec:
      containers:
      - name: redis
        image: <customer-registry>.azurecr.io/redis:latest
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 100m
            memory: 250Mi
        securityContext:
          privileged: false
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
  name: redis-healthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 80
    targetPort: 80

Příklad nasazení v pořádku – soubor .yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-unhealthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:      
      labels:
        app: redis
    spec:
      hostNetwork: true
      hostPID: true 
      hostIPC: true
      containers:
      - name: redis
        image: redis:latest
        ports:
        - containerPort: 9001
          hostPort: 9001
        securityContext:
          privileged: true
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: true
          runAsUser: 0
          capabilities:
            add:
              - NET_ADMIN
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
          readOnly: true
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /tmp
---
apiVersion: v1
kind: Service
metadata:
  name: redis-unhealthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 6001
    targetPort: 9001

Další kroky

V tomto článku jste zjistili, jak nakonfigurovat posílení zabezpečení roviny dat Kubernetes.

Související materiály najdete na následujících stránkách: