全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan audit kluster di kluster terdaftar

更新时间:Jul 02, 2025

Server API menghasilkan log audit untuk mencatat permintaan dan respons API Kubernetes. Container Service for Kubernetes (ACK) memungkinkan administrator kluster menganalisis log audit dari server API guna mengaudit operasi yang dilakukan pada sumber daya oleh pengguna berbeda. Ini membantu administrator melacak sejarah operasi kluster dan menyelesaikan masalah pengecualian kluster, sehingga menyederhanakan keamanan kluster O&M.

Prasyarat

Kluster terdaftar telah dibuat dan kluster Kubernetes eksternal telah terhubung ke kluster terdaftar. Untuk informasi lebih lanjut, lihat Buat kluster terdaftar ACK One.

Langkah 1: Modifikasi kebijakan audit untuk Node master

Masuk ke node master dan modifikasi file /etc/kubernetes/audit-policy.yaml sesuai dengan template berikut. Langkah ini juga harus dilakukan pada node master lainnya.

Catatan

Jika versi Kubernetes kluster lebih awal dari 1.24, atur apiVersion menjadi audit.k8s.io/v1beta1. Jika tidak, atur apiVersion menjadi audit.k8s.io/v1. Untuk informasi lebih lanjut, lihat (Tidak digunakan lagi) Kubernetes 1.24.

apiVersion: audit.k8s.io/v1beta1
kind: Policy
# Jangan buat peristiwa audit untuk semua permintaan dalam tahap RequestReceived.
omitStages:
  - "RequestReceived"
rules:
  # Permintaan berikut diidentifikasi secara manual sebagai volume tinggi dan risiko rendah,
  # jadi abaikan mereka.
  - 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"] # identitas kubelet lama
    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"]
  # Jangan catat URL baca saja ini.
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # Jangan catat permintaan acara.
  - level: None
    resources:
      - group: "" # core
        resources: ["events"]
  # Rahasia, ConfigMaps, dan TokenReviews dapat berisi data sensitif & biner,
  # jadi hanya catat pada tingkat Metadata.
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # Respon Get bisa besar; lewati mereka.
  - 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"
  # Tingkat default untuk API yang diketahui
  - 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"
  # Tingkat default untuk semua permintaan lainnya.
  - level: Metadata

Langkah 2: Modifikasi konfigurasi kube-apiserver pada node master

Masuk ke node master dan modifikasi file /etc/kubernetes/manifests/kube-apiserver.yaml sesuai deskripsi berikut. Langkah ini juga harus dilakukan pada node master lainnya.

  • Tambahkan parameter --audit-log-* ke bagian 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
        ...
  • Tambahkan parameter aliyun_logs_audit-* ke bagian env.

    ...
    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
        ...
        ...
        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
    Penting

    Ganti {cluster_id} dengan ID kluster Anda. Untuk informasi lebih lanjut tentang cara mendapatkan ID kluster, lihat Lihat informasi kluster.

  • Gunakan template berikut untuk memasang /etc/kubernetes/audit-policy.yaml ke pod kube-apiserver:

    ...
    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
        ...
        ...
        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
        ...
        ...
        volumeMounts:
        - mountPath: /var/log/kubernetes
          name: k8s-audit
        - mountPath: /etc/kubernetes/audit-policy.yaml
          name: audit-policy
          readOnly: true
        ...
        ...
      volumes:
      - hostPath:
          path: /var/log/kubernetes
          type: DirectoryOrCreate
        name: k8s-audit
      - hostPath:
          path: /etc/kubernetes/audit-policy.yaml
          type: FileOrCreate
        name: audit-policy
      ...

Langkah 3: Instal komponen logtail-ds

Untuk informasi lebih lanjut tentang cara menginstal komponen logtail-ds, lihat Langkah 2: Instal logtail-ds.

Apa yang harus dilakukan selanjutnya

Untuk informasi lebih lanjut tentang cara menggunakan audit kluster dan melihat log audit, lihat Bekerja dengan audit kluster.