Pular para o conteúdo principal

Checklist de Hardening de Segurança

Se você só fizer 3 coisas: desabilite contas locais, habilite network policies com default-deny e use Workload Identity. Todo o resto é defesa em profundidade sobre essa base.

Matriz de prioridade

Crítico (faça isso primeiro)

AçãoComoImpacto
Desabilitar contas locaisaz aks update --disable-local-accountsPrevine bypass da autenticação do Entra ID
Habilitar Workload IdentityCredenciais federadas, sem secrets nos podsElimina credenciais armazenadas
Network policies default-denyAplicar deny-all ingress/egress por namespacePrevine movimentação lateral
API server privado--enable-private-clusterControl plane fora da internet
Desabilitar SSH nos nodes--disable-ssh no node poolSem acesso backdoor aos nodes
# Default deny all ingress and egress in a namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
aviso

Sem network policies default-deny, todo pod pode alcançar qualquer outro pod em qualquer porta. Um container comprometido em um namespace pode atacar bancos de dados em outro. Esta é a falha de segurança mais comum em clusters AKS.

Alta prioridade

AçãoComoImpacto
Defender for ContainersHabilitar no Defender for CloudDetecção de ameaças em runtime, scan de vulnerabilidades
Azure Policy (restritiva)Atribuir Kubernetes cluster pods should only use allowed imagesBloquear imagens não confiáveis
Pull de imagens apenas do ACRNetwork policy + admission controllerSem pull do Docker Hub em prod
Pod Security AdmissionAplicar perfil restrictedBloquear containers privilegiados
Logs de auditoriaDiagnostic settings -> Log AnalyticsRastrear todas as operações do API server
# Enable Defender for Containers
az security pricing create \
--name Containers \
--tier Standard

# Assign built-in Azure Policy initiative
az policy assignment create \
--name 'aks-baseline-security' \
--policy-set-definition '42b8ef37-b724-4e24-bbc8-7a7708edfe00' \
--scope "/subscriptions/{sub-id}/resourceGroups/{rg}"

Média prioridade

AçãoComoImpacto
Assinatura de imagens (Ratify)Notation + Ratify admission controllerExecutar apenas imagens verificadas
Rotação de secretsKey Vault + CSI driver com rotaçãoRotacionar secrets automaticamente
Auto-upgrade do OS dos nodes--node-os-upgrade-channel SecurityPatchPatches de segurança automatizados
Limitar egress com Azure FirewallRegras de FQDN para destinos permitidosBloquear exfiltração de dados
Habilitar mTLS com service meshIstio ambient mode ou LinkerdCriptografar tráfego pod-to-pod

CIS Kubernetes benchmark

O Azure Policy inclui o benchmark CIS como uma initiative integrada. Atribua-a para obter scores de compliance.

# Check current compliance
az policy state list \
--resource-group myrg \
--resource-type Microsoft.ContainerService/managedClusters \
--query "[?complianceState=='NonCompliant'].{policy:policyDefinitionName, reason:complianceState}" \
--output table
informação

Não tente atingir 100% de compliance CIS no primeiro dia. Comece pelos itens Críticos, depois trabalhe nos de Alta prioridade, depois Média. Compliance perfeita sem workloads rodando não é um estado útil.

Segurança da cadeia de suprimentos

# Scan images before deployment (in CI/CD pipeline)
az acr task run \
--registry myacr \
--name scan-image \
--image myapp:latest

# Block unsigned images with Ratify
# Install Ratify via Helm, configure notation verifier
helm install ratify ratify/ratify \
--namespace gatekeeper-system \
--set featureFlags.RATIFY_CERT_ROTATION=true

Erros comuns

  1. Habilitar contas locais "para emergências" -- Se o Entra ID cair, contas locais ignoram todo o RBAC. Use procedimentos de break-glass em vez disso.
  2. Network policies com defaults allow-all -- O mesmo que não ter network policies.
  3. Armazenar secrets em Kubernetes Secrets -- São codificados em base64, não criptografados em repouso por padrão. Use Key Vault.
  4. Rodar como root em containers -- A maioria das imagens não precisa de root. Defina runAsNonRoot: true.
  5. Ignorar alertas do Defender -- Fadiga de alertas é real, mas suprimir todos os alertas é pior.
Opinião

Segurança não é opcional. Um cluster comprometido pode fazer pivot para todo o seu tenant Azure via managed identity. Trate a segurança do AKS como segurança do tenant.

Recursos