O ACK coleta e analisa logs e dados de auditoria de vários componentes do Kubernetes, incluindo o servidor de API, Ingress, componentes do plano de controle e eventos principais do Kubernetes, para apoiar a análise de causa raiz e a rastreabilidade quando ocorrem problemas de segurança ou no cluster. fornece registro de logs de auditoria e monitoramento de eventos para clusters Kubernetes, oferecendo suporte à análise de segurança e à solução de problemas.
Usar a auditoria de cluster
O log de auditoria do servidor de API registra e rastreia atividades de usuários para fins de segurança e operações. Consulte Work with cluster auditing para coletar logs de auditoria com o SLS, configurar regras de alerta ou desativar a auditoria.
A política de auditoria do ACK é a seguinte:
Os campos do log de auditoria estão definidos em audit.k8s.io/v1 Event.
apiVersion: audit.k8s.io/v1beta1 # This is required.
kind: Policy
# Don't log events for requests in the RequestReceived stage.
omitStages:
- "RequestReceived"
rules:
# The following requests are high-volume and low-risk, so they are not logged.
- level: None
users: ["system:kube-proxy"]
verbs: ["watch"]
resources:
- group: "" # core
resources: ["endpoints", "services"]
- level: None
users: ["system:unsecured"]
namespaces: ["kube-system"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["configmaps"]
- level: None
users: ["kubelet"] # legacy kubelet identity
verbs: ["get"]
resources:
- group: "" # core
resources: ["nodes"]
- level: None
userGroups: ["system:nodes"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["nodes"]
- level: None
users:
- system:kube-controller-manager
- system:kube-scheduler
- system:serviceaccount:kube-system:endpoint-controller
verbs: ["get", "update"]
namespaces: ["kube-system"]
resources:
- group: "" # core
resources: ["endpoints"]
- level: None
users: ["system:apiserver"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["namespaces"]
# Don't log requests to these read-only URLs.
- level: None
nonResourceURLs:
- /healthz*
- /version
- /swagger*
# Don't log event requests.
- level: None
resources:
- group: "" # core
resources: ["events"]
# Secrets, ConfigMaps, and token reviews can contain sensitive and binary data,
# so only log them at the Metadata level.
- level: Metadata
resources:
- group: "" # core
resources: ["secrets", "configmaps"]
- group: authentication.k8s.io
resources: ["tokenreviews"]
- level: Request
verbs: ["get", "list", "watch"]
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apps"
- group: "authentication.k8s.io"
- group: "authorization.k8s.io"
- group: "autoscaling"
- group: "batch"
- group: "certificates.k8s.io"
- group: "extensions"
- group: "networking.k8s.io"
- group: "policy"
- group: "rbac.authorization.k8s.io"
- group: "settings.k8s.io"
- group: "storage.k8s.io"
# Default level for known APIs.
- level: RequestResponse
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apps"
- group: "authentication.k8s.io"
- group: "authorization.k8s.io"
- group: "autoscaling"
- group: "batch"
- group: "certificates.k8s.io"
- group: "extensions"
- group: "networking.k8s.io"
- group: "policy"
- group: "rbac.authorization.k8s.io"
- group: "settings.k8s.io"
- group: "storage.k8s.io"
- group: "autoscaling.alibabacloud.com"
# Default level for all other requests.
- level: Metadata
Personalizar regras de log de auditoria do cluster
Adicione regras de auditoria personalizadas no campo auditPolicyRules na página de configuração do kube-apiserver.
# The rules must be defined as a list in YAML format.
- level: RequestResponse
resources:
- group: "policy.alibabacloud.com"
resources: ["policies"]
- level: None
userGroups: ["system:nodes"]
verbs: ["update", "patch"]
resources:
- group: ""
resources: ["nodes/status", "pods/status"]
Essas regras:
Ampliam a auditoria: Registram todas as operações em modelos de política do ACK (
policies.policy.alibabacloud.com) no nívelRequestResponse.Reduzem ruído: Ignoram atualizações de status de nós e Pods provenientes do kubelet (grupo
system:nodes), como heartbeats.
A sintaxe das regras de auditoria está documentada em Auditing.
Ao configure regras personalizadas:
Formato da regra: Insira uma lista de regras de auditoria (
rules), e não um objetoPolicycompleto.Prioridade da regra: Não é possível alterar o nível de log para solicitações cobertas pelas regras de auditoria padrão do ACK.
Validação da regra: O ACK valida as regras conforme a especificação policies.audit.k8s.io. Consulte Kubernetes Audit para obter a sintaxe válida das regras. Importante: Uma regra com formato incorreto pode impedir a inicialização do servidor de API.
Auditoria de atividade exec em contêineres
Atacantes podem usar o comando exec para acessar contêineres e iniciar ataques laterais, mas o log de auditoria padrão do servidor de API não registra comandos executados dentro do contêiner. Para capturar comandos pós-intrusão visando a análise de causa raiz e mitigação de segurança, ative container internal activity auditing.
Usar metadados de auditoria
Duas anotações de log de auditoria, authorization.k8s.io/decision e authorization.k8s.io/reason, indicam se uma solicitação foi autorizada e o motivo. Use-as para rastrear decisões de autorização de chamadas de API.
Monitorar eventos do cluster com NPD e SLS
O node-problem-detector (NPD) converte anomalias de nó, como engines docker travadas, travamentos de kernel, problemas de rede de saída e exaustão de descritores de arquivo, em eventos e funciona em conjunto com o kube-eventer para alertas em ciclo fechado. O Kubernetes Event Center no SLS agrega todos os eventos do cluster em tempo real, incluindo evicções de Pod, falhas ao baixar imagens e acessos exec suspeitos, permitindo consulta, análise, visualização e geração de alertas. Consulte Event monitoring.
Ativar o painel do Ingress
O componente Ingress registra solicitações HTTP na saída padrão e integra-se ao SLS para análise baseada em painéis. O painel do Ingress exibe métricas essenciais, incluindo visualizações de página (PVs), visitantes únicos (UVs), tráfego, latência e principais URLs, facilitando o monitoramento de tráfego em tempo real e a detecção de ataques DoS. Consulte Ingress Dashboard.
Ativar o registro de logs do CoreDNS
Clusters ACK utilizam o CoreDNS como servidor DNS interno. Analise os logs do CoreDNS para solucionar problemas de resolução de DNS ou investigar consultas a domínios de alto risco. O painel do CoreDNS no SLS auxilia na identificação de solicitações suspeitas. Consulte Analyze and monitor CoreDNS logs.