Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use cluster auditing in registered clusters

Última atualização: Jun 27, 2026

O servidor de API registra cada solicitação e resposta da API do Kubernetes como um log de auditoria. Em clusters registrados — nos quais um cluster Kubernetes externo se conecta ao ACK — os administradores podem encaminhar esses logs para o Alibaba Cloud Log Service e usá-los para responder a perguntas como:

  • O que aconteceu e quando?

  • Quem iniciou a solicitação?

  • Qual recurso foi afetado?

Isso permite rastrear todo o histórico de operações do cluster e investigar incidentes de segurança durante as atividades de operação e manutenção (O&M).

Pré-requisitos

Antes de começar, verifique se você tem:

Etapa 1: Configure a política de auditoria nos nós mestres

Faça login em um nó mestre e edite o arquivo /etc/kubernetes/audit-policy.yaml usando o modelo abaixo. Repita esta etapa em todos os outros nós mestres.

Nota

O valor de apiVersion depende da sua versão do Kubernetes:

  • Versões anteriores à 1.24: use audit.k8s.io/v1beta1

  • Kubernetes 1.24 ou posterior: use audit.k8s.io/v1

Para mais detalhes, consulte Notas de lançamento do Kubernetes 1.24.

Níveis de auditoria

O modelo de política usa quatro níveis de auditoria. Compreender esses níveis ajuda a decidir se é necessário ajustar as regras para o seu ambiente:

Nível

O que é registrado

None

Nada. Eventos correspondentes a esta regra não são registrados.

Metadata

Apenas metadados da solicitação: usuário, carimbo de data/hora, recurso e verbo. Os corpos da solicitação e da resposta não são registrados.

Request

Metadados e corpo da solicitação. O corpo da resposta não é registrado. Não se aplica a solicitações sem recurso.

RequestResponse

Metadados, corpo da solicitação e corpo da resposta. Não se aplica a solicitações sem recurso.

Modelo de política de auditoria

apiVersion: audit.k8s.io/v1beta1  # Use audit.k8s.io/v1 for Kubernetes >= 1.24
kind: Policy
# Suppress events in the RequestReceived stage.
omitStages:
  - "RequestReceived"
rules:
  # High-volume, low-risk requests — 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"]
  # Read-only URLs — not logged.
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # Events — not logged.
  - level: None
    resources:
      - group: "" # core
        resources: ["events"]
  # Secrets, ConfigMaps, and TokenReviews contain sensitive or binary data —
  # log metadata only.
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # Read requests for known API groups — log request metadata only (responses can be large).
  - 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"
  # Write requests for known API groups — log full request and response.
  - 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"
  # All other requests — log metadata only.
  - level: Metadata

Etapa 2: Configure o kube-apiserver nos nós mestres

Acesse um nó mestre e edite o arquivo /etc/kubernetes/manifests/kube-apiserver.yaml. Repita este procedimento em todos os demais nós mestres.

A configuração consiste em três partes: sinalizadores de linha de comando, variáveis de ambiente para coleta de logs e montagens de volume.

Adicionar sinalizadores de log de auditoria

Inclua os seguintes sinalizadores na seção command:

spec:
  containers:
  - command:
    - kube-apiserver
    - --audit-log-maxbackup=10
    - --audit-log-maxsize=100
    - --audit-log-path=/var/log/kubernetes/kubernetes.audit
    - --audit-log-maxage=30
    - --audit-policy-file=/etc/kubernetes/audit-policy.yaml

Cada sinalizador controla um aspecto específico da rotação de logs e da política:

Sinalizador

Descrição

--audit-log-path

Caminho onde o backend de log grava os eventos de auditoria. A ausência deste sinalizador desativa completamente o backend de log.

--audit-log-maxsize

Tamanho máximo do arquivo de log em megabytes antes da rotação. Defina como 100.

--audit-log-maxbackup

Quantidade máxima de arquivos de log rotacionados a serem retidos. Defina como 10.

--audit-log-maxage

Número máximo de dias para reter arquivos de log antigos. Defina como 30.

--audit-policy-file

Caminho para o arquivo de política de auditoria configurado na Etapa 1.

Adicionar variáveis de ambiente para coleta de logs

Acrescente as variáveis abaixo na seção env. Substitua {cluster_id} pelo ID real do seu cluster nos quatro nomes de variáveis. Para localizar o ID do cluster, consulte Visualize informações do cluster.

      env:
      - name: aliyun_logs_audit-${cluster_id}
        value: /var/log/kubernetes/kubernetes.audit
      - name: aliyun_logs_audit-${cluster_id}_tags
        value: audit=apiserver
      - name: aliyun_logs_audit-${cluster_id}_product
        value: k8s-audit
      - name: aliyun_logs_audit-${cluster_id}_jsonfile
        value: "true"
      image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1

Variável

Descrição

aliyun_logs_audit-${cluster_id}

Caminho do arquivo de log de auditoria coletado pelo Logtail.

aliyun_logs_audit-${cluster_id}_tags

Rótulo adicionado a cada entrada de log para identificar o servidor de API como source.

aliyun_logs_audit-${cluster_id}_product

Identificador de tipo de log usado pelo backend de log.

aliyun_logs_audit-${cluster_id}_jsonfile

Instrui o Logtail a analisar o arquivo de log como JSON.

Montar o arquivo de política de auditoria e o diretório de logs

Adicione entradas de volumeMounts à especificação do contêiner:

      volumeMounts:
      - mountPath: /var/log/kubernetes
        name: k8s-audit
      - mountPath: /etc/kubernetes/audit-policy.yaml
        name: audit-policy
        readOnly: true

Em seguida, adicione as entradas correspondentes de volumes no nível de especificação do pod:

    volumes:
    - hostPath:
        path: /var/log/kubernetes
        type: DirectoryOrCreate
      name: k8s-audit
    - hostPath:
        path: /etc/kubernetes/audit-policy.yaml
        type: FileOrCreate
      name: audit-policy

Etapa 3: Instale o componente logtail-ds

Instale o componente logtail-ds para ative a coleta de logs dos nós mestres. Para obter as etapas de instalação, consulte Etapa 2: Instale o logtail-ds.

Próximos passos

Após concluir a configuração, visualize e analise seus logs de auditoria no console do ACK. Consulte Trabalhar com auditoria de cluster.