Konfigurera härdning av Kubernetes dataplans i Defender för molnet

Kubernetes dataplanshärdning hjälper till att framtvinga säkra konfigurationer för arbetsbelastningar som körs i klustret, till exempel begränsa privilegierade containrar, framtvinga resursgränser och begränsa nätverksåtkomsten.

I Microsoft Defender för molnet implementeras härdning av dataplanet med hjälp av Azure Policy för Kubernetes för att utvärdera och tillämpa dessa konfigurationer. Azure Policy distribueras som en del av Defender för containrar när automatisk etablering är aktiverad.

Om Azure Policy för Kubernetes är inaktiverad i inställningarna för Defender for Containers, kan du distribuera den genom att åtgärda den relevanta rekommendationen. Du kan också distribuera Azure Policy manuellt med hjälp av Azure CLI eller Helm om du inaktiverade automatisk etablering under aktivering eller exkluderade specifika kluster från automatisk etablering.

När Azure Policy för Kubernetes har distribuerats genererar Defender för molnet härdningsrekommendationer för dataplanet baserat på klusterkonfigurationen. Den här sidan visar hur du granskar dessa rekommendationer, konfigurerar principparametrar och framtvingar dem i dina kluster.

Förutsättningar

Börja med att kontrollera att:

Aktivera Azure Policy för Kubernetes genom att åtgärda rekommendationer

Om Azure Policy för Kubernetes inte har distribuerats eller har inaktiverats i inställningarna för Defender för containrar kan du installera Azure Policy genom att åtgärda den relevanta rekommendationen i Defender för molnet.

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet>Recommendations.

  3. Sök efter relevant rekommendation:

    • Azure: Azure Kubernetes Service kluster bör ha Azure Policy-tillägget för Kubernetes installerat
    • GCP: GKE-kluster bör ha Azure Policy-tillägget installerat
    • AWS/Arc-aktiverade Kubernetes: Azure Arc-aktiverade Kubernetes-kluster bör ha Azure Policy-tillägget installerat

    Screenshot som visar rekommendationen Azure Kubernetes-tjänstkluster.

  4. Välj en rekommendation.

  5. På fliken Vidta åtgärd väljer du Åtgärda.

    Skärmbild av en rekommendation med knappen Åtgärda markerad.

  6. Välj Åtgärda för att åtgärda de valda resurserna.

  7. Upprepa för varje rekommendation.

Rekommendationer för härdning av dataplan

När du har distribuerat Azure Policy för Kubernetes utvärderar Defender för molnet klusterkonfigurationen och genererar härdningsrekommendationer för dataplanet. Den här processen kan ta upp till 30 minuter.

Anteckning

Microsoft komponenter, till exempel Defender sensorn, distribueras som standard i namnområdet kube-system och markeras inte som inkompatibla. Komponenter från tredje part som är installerade i andra namnområden kan flaggas. Om du vill undanta specifika namnområden konfigurerar du Azure principundantag.

I följande tabell visas vanliga härdningsrekommendationer för dataplanet:

Rekommendationsnamn Säkerhetskontroll Konfiguration krävs
Cpu- och minnesgränser för containrar ska tillämpas Skydda program mot DDoS-angrepp Ja
Containeravbildningar ska endast distribueras från betrodda register Åtgärda sårbarheter Ja
Minst privilegierade Linux-funktioner ska tillämpas för containrar Hantera åtkomst och behörigheter Ja
Containrar bör endast använda tillåtna AppArmor-profiler Åtgärda säkerhetskonfigurationer Ja
Tjänster bör endast lyssna på tillåtna portar Begränsa obehörig nätverksåtkomst Ja
Användningen av värdnätverk och portar bör begränsas Begränsa obehörig nätverksåtkomst Ja
Användning av pods HostPath-volymmonteringar bör begränsas till en specificerad lista Hantera åtkomst och behörigheter Ja
Container som har behörighetseskalering bör undvikas Hantera åtkomst och behörigheter Nej
Containrar som delar känsliga värdnamnområden bör undvikas Hantera åtkomst och behörigheter Nej
Oföränderligt (skrivskyddat) rotfilsystem ska tillämpas för containrar Hantera åtkomst och behörigheter Nej
Kubernetes-kluster bör endast vara tillgängliga via HTTPS Kryptera data under överföring Nej
Kubernetes-kluster bör inaktivera automatisk inmontering av API-autentiseringsuppgifter Hantera åtkomst och behörigheter Nej
Kubernetes-kluster bör inte använda standardnamnområdet Implementera bästa praxis för säkerhet Nej
Kubernetes-kluster bör inte bevilja CAP_SYS_ADMIN funktioner Hantera åtkomst och behörigheter Nej
Privilegierade containrar bör undvikas Hantera åtkomst och behörigheter Nej
Du bör undvika att köra containrar som rotanvändare Hantera åtkomst och behörigheter Nej

Visa rekommendationer för ett kluster

Så här visar du härdningsrekommendationer för dataplanet för ett specifikt kluster:

  1. Logga in på Azure-portalen.

  2. Gå till Defender för molnet>Inventory.

  3. Ange filtret för resurstyp till Kubernetes-tjänsten och välj Använd.

    Skärmbild av hur du använder resurstypsfiltret för att välja kubernetes-tjänsten.

  4. Välj relevant kluster.

  5. Granska de tillgängliga rekommendationerna. Härdningsrekommendationer för dataplanet visar antalet berörda Kubernetes-komponenter.

  6. Välj en rekommendation för att visa berörda resurser.

    Skärmbild av att välja en rekommendation från sidan Resurshälsa.

  7. Välj fliken Vidta åtgärd för att granska reparationsalternativen.

    Skärmbild av fliken Vidta åtgärd som används för att visa reparationssteg för en rekommendation.

Konfigurera principparametrar

Vissa rekommendationer kräver att parameterkonfigurationen är effektiv. Rekommendationen Containeravbildningar ska till exempel distribueras från betrodda register kräver bara att du definierar en lista över betrodda register.

Om nödvändiga parametrar inte har konfigurerats visas resurserna som ohälsosamma.

Så här konfigurerar du principparametrar:

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet>Miljöinställningar.

  3. Välj relevant prenumeration.

  4. Välj Säkerhetsprinciper.

    Skärmbild av sidan Säkerhetsprinciper.

  5. På fliken Standarder väljer du relevant säkerhetsstandard.

  6. Välj den relevanta principtilldelningens 3-punktsmeny och välj Hantera effekt och parametrar.

    Skärmbild av att välja 3-punktsmenyn och sedan välja Hantera effekt och parametrar.

  7. Uppdatera de obligatoriska parametervärdena.

    Skärmbild av parameterpanelen.

  8. Välj Spara.

Framtvinga härdningsprinciper för dataplanet

Som standard utvärderar principer resurser i granskningsläge. Om du vill framtvinga en princip anger du dess effekt till Neka.

Så här framtvingar du en rekommendation:

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet>Recommendations.

  3. Sök efter och välj den relevanta härdningsrekommenderingen för dataplanet.

  4. På fliken Vidta åtgärd väljer du Neka.

    Screenshot som visar alternativet Neka för Azure Policy parameter.

  5. Ange omfånget.

  6. Välj Växla till neka.

Testa policyns tillämpning

Du kan verifiera principerna för härdning av dataplan genom att distribuera testarbetslaster.

  • En kompatibel utplacering som uppfyller kraven för dataplanshärdning
  • En icke-kompatibel distribution som bryter mot flera policyer

Distribuera följande YAML-exempelfiler för att kontrollera att kompatibla arbetsbelastningar har distribuerats och att inkompatibla arbetsbelastningar flaggas eller blockeras, beroende på inställningarna för principframtvingande.

Exempel på kompatibel distribution

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

Exempel på icke-kompatibel utrullning

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