Protezione avanzata del piano dati Kubernetes

Questa pagina descrive come usare Microsoft Defender per il cloud set di raccomandazioni sulla sicurezza dedicate alla protezione avanzata del piano dati Kubernetes.

Suggerimento

Per un elenco delle raccomandazioni sulla sicurezza che potrebbero essere visualizzate per i cluster e i nodi Kubernetes, vedere la sezione Raccomandazioni sui contenitori della tabella di riferimento delle raccomandazioni .

Configurare la protezione del carico di lavoro

Microsoft Defender per il cloud include un bundle di raccomandazioni disponibili dopo l'installazione di Criteri di Azure per Kubernetes.

Prerequisiti

Abilitare la protezione avanzata del piano dati Kubernetes

È possibile abilitare il Criteri di Azure per Kubernetes in due modi:

Abilitare Criteri di Azure per Kubernetes per tutti i cluster correnti e futuri usando le impostazioni di piano/connettore

Nota

Quando si abilita questa impostazione, nel cluster, vengono installati i Criteri di Azure per i pod Kubernetes. In questo modo viene allocata una piccola quantità di CPU e memoria per i pod da usare. Questa allocazione potrebbe raggiungere la capacità massima, ma non influisce sul resto della CPU e della memoria nella risorsa.

Nota

L'abilitazione per AWS tramite il connettore non è supportata a causa di una limitazione nel servizio Azure Kubernetes che richiede all'amministratore del cluster di aggiungere autorizzazioni per un nuovo ruolo IAM nel cluster stesso.

Abilitazione per le sottoscrizioni di Azure o in locale

Quando si abilita Microsoft Defender per contenitori, l'impostazione "Criteri di Azure for Kubernetes" è abilitata per impostazione predefinita per il servizio Azure Kubernetes e per i cluster Kubernetes abilitati per Azure Arc nella sottoscrizione pertinente. Se si disabilita l'impostazione nella configurazione iniziale, è possibile abilitarla manualmente.

Se le impostazioni "Criteri di Azure per Kubernetes" sono state disabilitate nel piano dei contenitori, è possibile seguire questa procedura per abilitarla in tutti i cluster nella sottoscrizione:

  1. Accedere al portale di Azure.

  2. Passare alle impostazioni di Microsoft Defender per il cloud> Environment.

  3. Selezionare la sottoscrizione pertinente.

  4. Nella pagina Piani di Defender verificare che i contenitori siano attivati.

  5. Seleziona Impostazioni.

    Screenshot showing the settings button in the Defender plan.

  6. Nella pagina Impostazioni e monitoraggio attivare o disattivare "Criteri di Azure per Kubernetes".

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

Abilitazione per i progetti GCP

Quando si abilita Microsoft Defender per contenitori in un connettore GCP, l'impostazione "estensione Criteri di Azure per Azure Arc" è abilitata per impostazione predefinita per il motore Di Google Kubernetes nel progetto pertinente. Se si disabilita l'impostazione nella configurazione iniziale, è possibile abilitarla manualmente.

Se le impostazioni "estensione Criteri di Azure per Azure Arc" sono state disabilitate nel connettore GCP, è possibile seguire questa procedura per abilitarla nel connettore GCP.

Distribuire Criteri di Azure per Kubernetes in cluster esistenti

È possibile configurare manualmente il Criteri di Azure per Kubernetes nei cluster Kubernetes esistenti tramite la pagina Consigli. Dopo l'abilitazione, le raccomandazioni di protezione avanzata diventano disponibili (alcune delle raccomandazioni richiedono un'altra configurazione per funzionare).

Nota

Per AWS non è possibile eseguire l'onboarding su larga scala usando il connettore, ma può essere installato in tutti i cluster esistenti o in cluster specifici usando la raccomandazione che i cluster Kubernetes abilitati per Azure Arc devono avere l'estensione criteri di Azure per l'estensione Kubernetes installata.

Per distribuire il Criteri di Azure per Kubernetesnei cluster specificati:

  1. Nella pagina raccomandazioni cercare la raccomandazione pertinente:

    • 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 e locale - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Screenshot showing the Azure Kubernetes service clusters recommendation.

      Suggerimento

      La raccomandazione è inclusa in diversi controlli di sicurezza e non è importante quale selezionare nel passaggio successivo.

  2. Da uno dei controlli di sicurezza selezionare la raccomandazione per visualizzare le risorse in cui è possibile installare il componente aggiuntivo.

  3. Selezionare il cluster pertinente e selezionare Correggi.

    Screenshot that shows how to select the cluster to remediate.

Visualizzare e configurare il bundle di raccomandazioni

Al termine dell'installazione di Kubernetes circa 30 minuti dopo il completamento del Criteri di Azure, Defender per il cloud mostra lo stato di integrità dei cluster per le raccomandazioni seguenti, ognuna nel controllo di sicurezza pertinente, come illustrato di seguito:

Nota

Se si installa la Criteri di Azure per Kubernetes per la prima volta, queste raccomandazioni verranno visualizzate come nuove aggiunte nell'elenco delle raccomandazioni.

Suggerimento

Alcune raccomandazioni includono parametri che devono essere personalizzati tramite Criteri di Azure per usarli in modo efficace. Ad esempio, per trarre vantaggio dalle immagini del contenitore di raccomandazione deve essere distribuito solo da registri attendibili, è necessario definire i registri attendibili. Se non si immettono i parametri necessari per le raccomandazioni che richiedono la configurazione, i carichi di lavoro verranno visualizzati come non integri.

Nome raccomandazione Controllo di sicurezza Configurazione richiesta
È consigliabile applicare limiti per la CPU e la memoria dei contenitori Proteggere le applicazioni da attacchi DDoS
Le immagini del contenitore devono essere distribuite solo da registri attendibili Correggi le vulnerabilità
Per i contenitori devono essere imposte le funzionalità Linux con privilegi minimi Gestire l'accesso e le autorizzazioni
I contenitori devono usare solo i profili AppArmor consentiti Correggere le configurazioni di sicurezza
I servizi devono essere in ascolto solo sulle porte consentite Limita l'accesso non autorizzato alla rete
L'utilizzo della rete host e delle porte deve essere limitato Limita l'accesso non autorizzato alla rete
L'utilizzo dei montaggi dei volumi HostPath dei pod deve essere limitato a un elenco noto Gestire l'accesso e le autorizzazioni
È consigliabile evitare i contenitori con escalation dei privilegi Gestire l'accesso e le autorizzazioni No
I contenitori che condividono spazi dei nomi host sensibili devono essere evitati Gestire l'accesso e le autorizzazioni No
Per i contenitori deve essere imposto il file system radice non modificabile (di sola lettura) Gestire l'accesso e le autorizzazioni No
I cluster Kubernetes devono essere accessibili solo tramite HTTPS Crittografa i dati in transito No
Nei cluster Kubernetes il montaggio automatico delle credenziali API deve essere disabilitato Gestire l'accesso e le autorizzazioni No
I cluster Kubernetes non devono usare lo spazio dei nomi predefinito Implementa le procedure consigliate per la sicurezza No
I cluster Kubernetes non devono concedere funzionalità di sicurezza C piattaforma di strumenti analitici YSADMIN Gestire l'accesso e le autorizzazioni No
I contenitori con privilegi devono essere evitati Gestire l'accesso e le autorizzazioni No
È consigliabile evitare l'esecuzione di contenitori come utente radice Gestire l'accesso e le autorizzazioni No

Per consigli con parametri che devono essere personalizzati, è necessario impostare i parametri:

Per impostare i parametri:

  1. Accedere al portale di Azure.

  2. Passare alle impostazioni di Microsoft Defender per il cloud> Environment.

  3. Selezionare la sottoscrizione pertinente.

  4. Nel menu di Defender per il cloud selezionare Criteri di sicurezza.

  5. Selezionare l'assegnazione pertinente. L'assegnazione predefinita è ASC default.

  6. Aprire la scheda Parametri e modificare i valori in base alle esigenze.

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

  7. Selezionare Rivedi e salva.

  8. Seleziona Salva.

Per applicare una delle raccomandazioni:

  1. Aprire la pagina dei dettagli della raccomandazione e selezionare Nega:

    Screenshot showing the Deny option for Azure Policy parameter.

    Verrà aperto il riquadro per impostare l'ambito.

  2. Impostare l'ambito e selezionare Cambia per rifiutare.

Per vedere quali raccomandazioni si applicano ai cluster:

  1. Aprire la pagina di inventario delle risorse di Defender per il cloud e impostare il filtro del tipo di risorsa sui servizi Kubernetes.

  2. Selezionare un cluster per analizzare ed esaminare le raccomandazioni disponibili.

Quando si visualizza una raccomandazione dal set di protezione del carico di lavoro, il numero di pod interessati ("componenti Kubernetes") viene elencato insieme al cluster. Per un elenco dei pod specifici, selezionare il cluster e quindi selezionare Esegui azione.

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

Per testare l'imposizione, usare le due distribuzioni Kubernetes seguenti:

  • Uno è per una distribuzione integra, conforme al bundle di raccomandazioni di protezione del carico di lavoro.

  • L'altro riguarda una distribuzione non integra, non conforme a una delle raccomandazioni.

Distribuire i file yaml di esempio così come sono o usarli come riferimento per correggere il proprio carico di lavoro.

File con estensione yaml di esempio di distribuzione integro

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

File yaml di esempio di distribuzione non integro

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

Passaggi successivi

In questo articolo si è appreso come configurare la protezione avanzata del piano dati Kubernetes.

Per il materiale correlato, vedere le pagine seguenti: