Protezione avanzata del piano dati Kubernetes
Questa pagina descrive come usare il set di raccomandazioni sulla sicurezza di Microsoft Defender per il cloud 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, prendere in esame le raccomandazioni sui contenitori.
Configurare la protezione del carico di lavoro
Microsoft Defender per il cloud d include un bundle di raccomandazioni disponibili dopo aver installato i Criteri di Azure per Kubernetes.
Prerequisiti
- Aggiungere le regole FQDN/applicazione necessarie per i criteri di Azure.
- (Per i cluster non AKS) Connettere un cluster Kubernetes esistente ad Azure Arc.
Attivare la protezione avanzata del piano dati Kubernetes
È possibile abilitare Criteri di Azure per Kubernetes in due modi:
- Abilitare per tutti i cluster correnti e futuri usando le impostazioni di piano/connettore
- Distribuire Criteri di Azure per Kubernetes in cluster esistenti
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 da usare per i pod. 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 di EKS che richiede all'amministratore del cluster di aggiungere autorizzazioni per un nuovo ruolo IAM nel cluster stesso.
Abilitare per le sottoscrizioni di Azure o in locale
Quando si abilita Microsoft Defender per contenitori, l'impostazione "Criteri di Azure per 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 in seguito.
Se le impostazioni di Criteri di Azure per Kubernetes sono state disabilitate nel piano dei contenitori, è possibile seguire questa procedura per abilitarle in tutti i cluster nella sottoscrizione:
Accedere al portale di Azure.
Andare alle impostazioni dell'ambiente Microsoft Defender per il cloud>.
Selezionare la sottoscrizione pertinente.
Nella pagina Piani di Defender verificare che i contenitori siano impostati su On.
Seleziona Impostazioni.
Nella pagina Impostazioni e monitoraggio impostare "Criteri di Azure per Kubernetes" su On.
Abilitare 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 in seguito.
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 Criteri di Azure per Kubernetes nei cluster Kubernetes esistenti tramite la pagina Raccomandazioni. 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; tuttavia, è possibile installarlo in tutti i cluster esistenti o in cluster specifici usando la raccomandazione I cluster Kubernetes abilitati per Azure Arc devono avere l'estensione di criteri di Azure per l'estensione Kubernetes installata.
Per distribuire i Criteri di Azure per Kubernetes nei cluster specificati:
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"
.Suggerimento
La raccomandazione è inclusa in diversi controlli di sicurezza e non è importante quale selezionare nel passaggio successivo.
Da uno dei controlli di sicurezza selezionare la raccomandazione per visualizzare le risorse in cui è possibile installare il componente aggiuntivo.
Selezionare il cluster pertinente e selezionare Correggi.
Visualizzare e configurare il bundle di raccomandazioni
Circa 30 minuti dopo il completamento dell'installazione di Criteri di Azure per Kubernetes, Defender per il cloud mostra lo stato di integrità dei cluster per le raccomandazioni seguenti, ognuno nei controlli di sicurezza pertinenti, come mostrato:
Nota
Se si installa 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 dalla raccomandazione Le immagini dei contenitori devono essere distribuite 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.
Nota
I componenti Microsoft come il sensore Defender e l'agente di Monitoraggio di Azure (AMA) vengono distribuiti nello spazio dei nomi kube-system per impostazione predefinita. Questa configurazione garantisce che non siano contrassegnate come non conformi nelle raccomandazioni del piano dati. Tuttavia, gli strumenti del fornitore di terze parti installati in uno spazio dei nomi diverso possono essere contrassegnati come non conformi. Per escludere fornitori di terze parti da queste raccomandazioni, è possibile aggiungere lo spazio dei nomi all'elenco di esclusione.
Nome della raccomandazione | Controllo di sicurezza | Configurazione necessaria |
---|---|---|
È consigliabile applicare limiti per la CPU e la memoria dei contenitori | Proteggi le applicazioni da attacchi DDoS | Sì |
È consigliabile distribuire le immagini del contenitori solo da registri attendibili | Correggi le vulnerabilità | Sì |
Per i contenitori devono essere imposte le funzionalità Linux con privilegi minimi | Gestire l'accesso e le autorizzazioni | Sì |
I contenitori devono usare solo i profili AppArmor consentiti | Correggere le configurazioni di sicurezza | Sì |
I servizi devono essere in ascolto solo sulle porte consentite | Limita l'accesso non autorizzato alla rete | Sì |
L'utilizzo della rete host e delle porte deve essere limitato | Limita l'accesso non autorizzato alla rete | Sì |
L'utilizzo dei montaggi dei volumi HostPath dei pod deve essere limitato a un elenco noto | Gestire l'accesso e le autorizzazioni | Sì |
È 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 | Crittografare i dati in movimento | 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 le funzionalità di sicurezza CAPSYSADMIN | 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:
Accedere al portale di Azure.
Andare alle impostazioni dell'ambiente Microsoft Defender per il cloud>.
Selezionare la sottoscrizione pertinente.
Nel menu di Defender per il cloud selezionare Criteridi sicurezza.
Selezionare l'assegnazione pertinente. L'assegnazione predefinita è
ASC default
.Aprire la scheda Parametri e modificare i valori in base alle esigenze.
Selezionare Rivedi e salva.
Seleziona Salva.
Per applicare una delle raccomandazioni:
Aprire la pagina dei dettagli della raccomandazione e selezionare Nega:
Verrà aperto il riquadro per impostare l'ambito.
Impostare l'ambito e selezionare Cambia in Nega.
Per vedere quali raccomandazioni si applicano ai cluster:
Aprire la pagina Inventario degli asset di Defender per il cloud e impostare il filtro del tipo di risorsa sui Servizi Kubernetes.
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 seguito da Esegui azione.
Per testare l'imposizione, usare le due distribuzioni Kubernetes seguenti:
Una è per una distribuzione integra, conforme al bundle di raccomandazioni di protezione del carico di lavoro.
L'altra riguarda una distribuzione non integra, non conforme a nessuna 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 i materiali correlati, vedere le pagine seguenti: