Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O endurecimento do plano de dados Kubernetes ajuda a impor configurações seguras para cargas de trabalho a correr no seu cluster, como restringir containers privilegiados, impor limites de recursos e limitar o acesso à rede.
Em Microsoft Defender para a Cloud, o endurecimento do plano de dados é implementado usando Azure Policy para Kubernetes avaliar e aplicar estas configurações. O Azure Policy é implementado como parte do Defender for Containers quando o provisionamento automático está ativado.
Se a Azure Policy for Kubernetes estiver desativada nas definições do plano do Defender for Containers, pode implementá-la corrigindo a recomendação relevante. Também pode implementar Azure Policy manualmente usando CLI do Azure ou Helm se desativou o provisionamento automático durante a ativação ou excluiu clusters específicos do provisionamento automático.
Após a implementação do Azure Policy for Kubernetes, o Defender para a Cloud gera recomendações de reforço do plano de dados com base na configuração do seu cluster. Esta página mostra como rever estas recomendações, configurar parâmetros de políticas e aplicá-las aos seus clusters.
Pré-requisitos
Para começar, certifique-se de que:
Foram adicionadas as regras necessárias de FQDN/aplicação para a política do Azure.
(Para clusters não AKS) O teu cluster Kubernetes está ligado a Azure Arc.
Ativar a Política do Azure para Kubernetes corrigindo recomendações
Se o Azure Policy for Kubernetes não estiver implementado ou desligado nas definições do plano Defender for Containers, pode instalá-lo corrigindo a recomendação relevante no Defender para a Cloud.
Inicie sessão no portal Azure.
Vá para Microsoft Defender para Nuvem>Recomendações.
Procure a recomendação relevante:
- Azure: Os clusters do Azure Kubernetes Service devem ter o complemento Azure Policy para Kubernetes instalado.
- GCP: Os clusters GKE devem ter a extensão Azure Policy instalada
- Clusters Kubernetes habilitados pelo Azure Arc devem ter a extensão Azure Policy instalada.
Selecione uma recomendação.
No separador Tomar Ação , selecione Corrigir.
Selecione Corrigir para remediar os recursos selecionados.
Repita para cada recomendação.
Recomendações de fortalecimento do plano de dados
Depois de implementar o Azure Policy for Kubernetes, o Defender para a Cloud avalia a configuração do seu cluster e gera recomendações de endurecimento do plano de dados. Este processo pode demorar até 30 minutos a concluir.
Nota
Componentes Microsoft, como o sensor Defender, são implementados por padrão no espaço de nomes kube-system e não são considerados não conformes. Componentes de terceiros instalados noutros namespaces podem ser sinalizados. Para excluir namespaces específicos, configure exclusões de políticas do Azure.
A tabela seguinte lista recomendações comuns de endurecimento do plano de dados:
| Nome da recomendação | Controlo de segurança | Configuração necessária |
|---|---|---|
| Os limites de CPU e memória do contêiner devem ser impostos | Proteja os aplicativos contra ataques DDoS | Sim |
| As imagens de contenedor devem ser desplegadas apenas a partir de registos confiáveis | Remediar vulnerabilidades | Sim |
| Capacidades Linux menos privilegiadas devem ser impostas a contenedores | Gerenciar acesso e permissões | Sim |
| Os contêineres só devem usar perfis AppArmor permitidos | Remediar configurações de segurança | Sim |
| Os serviços devem escutar apenas nas portas permitidas | Restringir o acesso não autorizado à rede | Sim |
| O uso de rede de anfitrião e portas deve ser restrito | Restringir o acesso não autorizado à rede | Sim |
| O uso de montagens de volume do pod HostPath deve ser restrito a uma lista conhecida | Gerenciar acesso e permissões | Sim |
| Contêiner com escalonamento de privilégios deve ser evitado | Gerenciar acesso e permissões | Não |
| Contêineres que compartilham namespaces de host confidenciais devem ser evitados | Gerenciar acesso e permissões | Não |
| O sistema de arquivos raiz imutável (somente leitura) deve ser imposto para contêineres | Gerenciar acesso e permissões | Não |
| Os clusters Kubernetes devem ser acessíveis somente por HTTPS | Criptografar dados em trânsito | Não |
| Os clusters Kubernetes devem desativar a montagem automática das credenciais da API | Gerenciar acesso e permissões | Não |
| Os clusters Kubernetes não devem usar o namespace padrão | Implementação de melhores práticas de segurança | Não |
| Os clusters do Kubernetes não deveriam conceder capacidades CAP_SYS_ADMIN | Gerenciar acesso e permissões | Não |
| Contentores privilegiados devem ser evitados | Gerenciar acesso e permissões | Não |
| A execução de contêineres como usuário raiz deve ser evitada | Gerenciar acesso e permissões | Não |
Consulte recomendações para um cluster
Para ver as recomendações de endurecimento do plano de dados para um cluster específico:
Inicie sessão no portal Azure.
Vai ao Defender para a Cloud>Inventory.
Defina o filtro de tipo de recurso para serviço Kubernetes e selecione Aplicar.
Selecione o cluster relevante.
Consulte as recomendações disponíveis. As recomendações de endurecimento do plano de dados mostram o número de componentes Kubernetes afetados.
Selecione uma recomendação para visualizar os recursos afetados.
Selecione o separador Agir para rever as opções de remediação.
Configurar parâmetros de política
Algumas recomendações exigem que a configuração dos parâmetros seja eficaz. Por exemplo, a recomendação Imagens de contentores apenas devem ser implementadas a partir de registos confiáveis requer que defina uma lista de registos confiáveis.
Se os parâmetros necessários não forem configurados, os recursos são mostrados como pouco saudáveis.
Para configurar parâmetros de política:
Inicie sessão no portal Azure.
Vai a Microsoft Defender para Cloud>Definições de ambiente.
Selecione a subscrição relevante.
Selecione Políticas de segurança.
No separador Padrões, selecione o padrão de segurança relevante.
Selecione o menu de 3 pontos da atribuição de políticas relevante e selecione Gerir efeito e parâmetros.
Atualize os valores dos parâmetros necessários.
Selecione Guardar.
Aplicar políticas de endurecimento do plano de dados
Por defeito, as políticas avaliam os recursos em modo de auditoria. Para fazer cumprir uma política, defina o seu efeito para Deny.
Para fazer cumprir uma recomendação:
Inicie sessão no portal Azure.
Vá para Microsoft Defender para Nuvem>Recomendações.
Pesquise e selecione a recomendação relevante de endurecimento de plano de dados.
No separador Tomar Ação , selecione Negar.
Defina o escopo.
Selecione Alterar para recusar.
Aplicação da política de testes
Pode validar políticas de endurecimento de planos de dados implementando cargas de trabalho de teste.
- Uma implementação compatível que cumpra os requisitos de fortalecimento do plano de dados
- Uma implementação não conforme que viola múltiplas políticas
Implemente os seguintes ficheiros YAML de exemplo para verificar se cargas de trabalho compatíveis são implementadas com sucesso e se cargas de trabalho não compatíveis são sinalizadas ou bloqueadas, dependendo das definições de aplicação de políticas.
Exemplo de implementação conforme
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
Exemplo de implementação não conforme
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