Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa pagina descrive come usare il set di raccomandazioni sulla sicurezza di Microsoft Defender for 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, esaminare le raccomandazioni sui contenitori.
Configurare la protezione del carico di lavoro
Microsoft Defender for Cloud include un bundle di raccomandazioni disponibili dopo aver installato Azure Policy per Kubernetes.
Prerequisiti
- Aggiungere le regole FQDN/application obbligatorie per i criteri di Azure.
- (Per i cluster Kubernetes non AKS) Connettere un cluster Kubernetes esistente a Azure Arc.
Attivare la protezione avanzata del piano dati Kubernetes
È possibile abilitare il Azure Policy per Kubernetes in due modi:
- Abilitare per tutti i cluster correnti e futuri usando le impostazioni di piano/connettore:
- Deploy Azure Policy per Kubernetes in cluster esistenti
Abilitare Azure Policy per Kubernetes per tutti i cluster correnti e futuri usando le impostazioni di piano/connettore
Note
Quando si abilita questa impostazione, nel cluster vengono installati i Azure Policy 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.
Note
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.
Abilitare per le sottoscrizioni Azure o in locale
Quando si abilita Microsoft Defender per contenitori, l'impostazione "Azure Policy per Kubernetes" è abilitata per impostazione predefinita per il Azure Kubernetes Service 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 "Azure Policy per Kubernetes" sono state disabilitate nel piano dei contenitori, è possibile seguire la procedura seguente per abilitarla in tutti i cluster nella sottoscrizione:
Accedere al portale Azure.
Passare a Microsoft Defender for Cloud>Gestione>Impostazioni dell'ambiente.
Selezionare la sottoscrizione pertinente.
Nella pagina dei piani di Defender, assicurarsi che Containers sia impostato su Attivo.
Selezionare Impostazioni.
In Impostazioni & Pagina Monitoraggio, attiva/disattiva la
Azure Policy per Kubernetes aOn .
Abilitare per i progetti GCP
Quando si abilita Microsoft Defender per contenitori in un connettore GCP, l'impostazione "estensione Azure Policy 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 Azure Policy per Azure Arc" sono state disabilitate nel connettore GCP, è possibile seguire la procedura seguente per abilitarla nel connettore GCP.
Distribuire Azure Policy per Kubernetes in cluster esistenti
È possibile configurare manualmente il Azure Policy 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).
Note
Per AWS, l'onboarding su larga scala con il connettore non è supportato. È tuttavia possibile installare Azure Policy per Kubernetes in tutti i cluster esistenti o in cluster specifici usando la raccomandazione Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed.
Per distribuire il Azure Policy per Kubernetes nei cluster specificati:
Accedere al portale Azure.
Passare a Microsoft Defender for Cloud>General>Recommendations.
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 On-premise -
"Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed".
-
Azure -
Selezionare una raccomandazione trovata.
Selezionare Correggi.
Ripetere per ogni raccomandazione aggiuntiva.
Visualizzare e configurare il bundle di raccomandazioni
Circa 30 minuti dopo il completamento dell'installazione di Azure Policy per Kubernetes, Defender for Cloud mostra lo stato di salute dei cluster per le seguenti raccomandazioni, ciascuno nel relativo controllo di sicurezza, come illustrato di seguito:
Note
Se si installa la Azure Policy per Kubernetes per la prima volta, queste raccomandazioni vengono visualizzate come nuove aggiunte nell'elenco delle raccomandazioni.
Suggerimento
Alcuni consigli includono parametri che devono essere personalizzati tramite Azure Policy per usarli in modo efficace. Ad esempio, per trarre vantaggio dalla raccomandazione che le immagini di contenitori dovrebbero 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.
Note
Componenti Microsoft come il sensore Defender vengono distribuiti nello spazio dei nomi Kube-system per impostazione predefinita. Questa configurazione garantisce che non siano contrassegnati come non conformi nelle raccomandazioni del data plane. Tuttavia, gli strumenti del fornitore di terze parti installati in uno spazio dei nomi diverso potrebbero 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 | 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 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 Azure.
Passare a Microsoft Defender per il cloud>Gestione>Impostazioni dell'ambiente.
Selezionare la sottoscrizione pertinente.
Dal menu di spostamento selezionare Criteri di sicurezza.
Nella scheda Standard cercare lo standard di sicurezza appropriato.
Selezionare il menu a 3 puntini di sicurezza standard e selezionare Gestisci.
Selezionare il menu a 3 puntini di assegnazione dei criteri pertinente e selezionare Gestisci effetto e parametri.
Modificare i valori in base alle esigenze.
Selezionare 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:
Accedere al portale Azure.
Passare a Defender for Cloud>Inventory.
Impostare il filtro del tipo di risorsa sui servizi Kubernetes e selezionare Applica.
Selezionare un cluster da analizzare.
Esamina 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.
Facoltativo: per un elenco dei pod specifici, selezionare il suggerimento.
e quindi selezionare 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: