Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A proteção do plano de dados do Kubernetes ajuda a impor configurações seguras para cargas de trabalho em execução em seu cluster, como restringir contêineres privilegiados, impor limites de recursos e limitar o acesso à rede.
No Microsoft Defender para Nuvem, o endurecimento do plano de dados é implementado usando o Azure Policy for Kubernetes para avaliar e aplicar essas configurações. Azure Policy é implantado como parte de Defender para contêineres quando o provisionamento automático está habilitado.
Se o Azure Policy para Kubernetes estiver desativado nas configurações do plano Defender para Contêineres, você poderá implantá-la corrigindo a recomendação relevante. Você também pode implantar o Azure Policy manualmente usando o CLI do Azure para implantar componentes do Defender para Containers ou o Helm para implantar componentes do Defender para Containers se você desativou o provisionamento automático durante a habilitação ou excluiu clusters específicos do provisionamento automático.
Depois que o Azure Policy para Kubernetes for implantado, o Defender para Nuvem gerará recomendações de fortalecimento do plano de dados com base na configuração do cluster. Esta página mostra como examinar essas recomendações, configurar parâmetros de política e aplicá-las em seus clusters.
Pré-requisitos
Para começar, verifique se:
Defender para Contêineres está habilitado em sua assinatura.
Você adicionou as regras de FQDN/aplicação requeridas para a política do Azure.
(Para clusters que não são do AKS) O cluster do Kubernetes está conectado ao Azure Arc.
Habilitar Azure Policy para Kubernetes corrigindo recomendações
Se o Azure Policy for Kubernetes não estiver implantado ou desativado nas configurações do plano Defender for Containers, você pode instalá-lo corrigindo a recomendação que corresponde ao seu tipo de cluster no Defender para Nuvem.
Entre no portal do Azure.
Vá para Microsoft Defender para Nuvem>Recommendations.
Pesquise a recomendação relevante:
- Azure: Serviço de Kubernetes do Azure clusters devem ter o complemento Azure Policy para Kubernetes instalado
- GCP: os clusters GKE devem ter a extensão Azure Policy instalada
- Kubernetes habilitados para AWS/Arc: os clusters de Kubernetes habilitados para Azure Arc devem ter a extensão do Azure Policy instalada
Selecione uma recomendação.
Na guia Executar ação , selecione Corrigir.
Selecione Correção para corrigir os recursos selecionados.
Repita para cada recomendação.
Recomendações de endurecimento do plano de dados
Depois de implantar Azure Policy para Kubernetes, Defender para Nuvem avalia a configuração do cluster e gera recomendações de proteção do plano de dados. Esse processo pode levar até 30 minutos.
Note
Microsoft componentes, como o sensor Defender, são implantados no namespace kube-system por padrão e não são marcados como não compatíveis. Componentes de terceiros instalados em outros namespaces podem ser sinalizados. Para excluir namespaces específicos, configure Azure exclusões de política.
A tabela a seguir lista as recomendações comuns de proteção do plano de dados:
| Nome da recomendação | Controle de segurança | Configuração necessária |
|---|---|---|
| Deverão ser aplicados limites de memória e CPU ao contêiner | Proteger aplicativos contra ataques de DDoS | Yes |
| As imagens de contêiner deverão ser implantadas somente se forem de registros confiáveis | Correção de vulnerabilidades | Yes |
| Deverão ser aplicadas aos contêineres funcionalidades do Linux com privilégios mínimos | Gerenciar acesso e permissões | Yes |
| Os contêineres só devem usar perfis AppArmor permitidos | Corrigir as configurações de segurança | Yes |
| Os serviços devem escutar somente em portas permitidas | Restringir acesso não autorizado à rede | Yes |
| Usar redes e portas do host deverá ser restrito | Restringir acesso não autorizado à rede | Yes |
| O uso de volumes HostPath em pods deve ser restrito a uma lista conhecida | Gerenciar acesso e permissões | Yes |
| Contêiner com escalonamento de privilégios deve ser evitado | Gerenciar acesso e permissões | No |
| Os contêineres que compartilham namespaces de host confidenciais deverão ser evitados | Gerenciar acesso e permissões | No |
| Um sistema de arquivos raiz imutável (somente leitura) deverá ser aplicado aos contêineres | Gerenciar acesso e permissões | No |
| Os clusters do Kubernetes devem ser acessíveis somente via HTTPS | Criptografar dados em trânsito | No |
| Os clusters do Kubernetes devem desabilitar a montagem automática de credenciais da API | Gerenciar acesso e permissões | No |
| Os clusters do Kubernetes não devem usar o namespace padrão | Implementar melhores práticas de segurança | No |
| Os clusters do Kubernetes não devem conceder recursos de CAP_SYS_ADMIN | Gerenciar acesso e permissões | No |
| Os contêineres com privilégios deverão ser evitados | Gerenciar acesso e permissões | No |
| Executar contêineres como usuário raiz deverá ser evitado | Gerenciar acesso e permissões | No |
Exibir recomendações para um cluster
Para exibir as recomendações de endurecimento do plano de dados para um cluster específico:
Entre no portal do Azure.
Vá para Defender para Nuvem>Inventory.
Defina o filtro de tipo de recurso para o serviço kubernetes e selecione Aplicar.
Selecione o cluster relevante.
Examine as recomendações disponíveis. As recomendações de fortalecimento do plano de dados indicam o número de componentes do Kubernetes afetados.
Selecione uma recomendação para exibir os recursos afetados.
Selecione a guia Executar ação para examinar as opções de correção.
Configurar parâmetros de política
Algumas recomendações incluem parâmetros que limitam os recursos Kubernetes avaliados pela Azure Policy subjacente. Por exemplo, a política para o sistema de arquivos raiz Imutável (somente leitura) deve ser aplicada para contêineres que inclui os excludedContainersparâmetros, excludedImages, , e excludedNamespaces . Exclusões de contêineres correspondem aos nomes de contêineres. Exclusões de imagem suportam correspondência de prefixos quando o valor termina em *, como myregistry.azurecr.io/istio:*. Use um nome de imagem totalmente qualificado para evitar excluir involuntariamente uma imagem de um registro não confiável.
Outras recomendações exigem que a configuração dos parâmetros seja eficaz. Por exemplo, a recomendação de que imagens de contêiner devem ser implantadas apenas de registros confiáveis requer que você defina uma lista de registros confiáveis.
Se os parâmetros necessários não estiverem configurados, os recursos serão mostrados como com problemas.
Para configurar parâmetros de política:
Entre no portal do Azure.
Vá para Microsoft Defender para Nuvem>Environment settings.
Selecione a assinatura relevante.
Selecione políticas de segurança.
Na guia Padrões , selecione o padrão de segurança relevante.
Selecione o menu de 3 pontos da atribuição de política relevante e selecione Gerenciar efeito e parâmetros.
Atualize os valores de parâmetro necessários.
Selecione Salvar.
Aplicar políticas de endurecimento do plano de dados
Por padrão, as políticas avaliam os recursos no modo de auditoria. Para impor uma política, defina seu efeito como Negar.
Para impor uma recomendação:
Entre no portal do Azure.
Vá para Microsoft Defender para Nuvem>Recommendations.
Pesquise e selecione a recomendação de endurecimento do plano de dados relevante.
Na guia Executar ação , selecione Negar.
Defina o escopo.
Selecione Alterar para negar.
Testar a aplicação de política
Você pode validar as políticas de proteção do plano de dados implantando cargas de trabalho de teste.
- Uma implantação em conformidade que atende aos requisitos de endurecimento do plano de dados
- Uma implantação não compatível que viola várias políticas
Implante os seguintes arquivos YAML de exemplo para verificar se as cargas de trabalho em conformidade são implantadas com êxito e as cargas de trabalho não compatíveis são sinalizadas ou bloqueadas, dependendo das configurações de imposição de política.
Exemplo de implantação em conformidade
A implantação seguinte utiliza um registro de contêineres confiável, aplica limites de CPU e memória, e aplica um contexto de segurança restritivo que desabilita a escalonação de privilégios e roda como um usuário não root.
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 implantação não compatível
A implantação seguinte viola intencionalmente múltiplas políticas de endurecimento do plano de dados, incluindo a execução de um container privilegiado como root, habilitar a rede de host e namespaces compartilhados, e montar um volume de caminho de host.
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