Logging audit

Ringkasan

GKE di VMware mendukung logging audit di level cluster Kubernetes dan Cloud API. Dokumen ini memberikan informasi tentang logging audit cluster Kubernetes. Untuk informasi tentang logging audit Cloud API, lihat Informasi logging audit Cloud API.

GKE di VMware memanfaatkan Logging Audit Kubernetes, yang menyimpan catatan kronologis panggilan yang dilakukan ke server Kubernetes API cluster. Log audit berguna untuk menyelidiki permintaan API yang mencurigakan dan untuk mengumpulkan statistik.

Anda dapat mengonfigurasi cluster untuk menulis log audit ke disk atau ke Cloud Audit Logs di project Google Cloud. Menulis ke Cloud Audit Logs memiliki beberapa manfaat dibandingkan menulis ke disk, atau bahkan menangkap log di sistem logging lokal:

  • Log audit untuk semua cluster GKE dapat dipusatkan.
  • Entri log yang ditulis ke Cloud Audit Logs tidak dapat diubah.
  • Entri Cloud Audit Logs dipertahankan selama 400 hari.
  • Cloud Audit Logs disertakan dalam harga Anthos.

Logging audit berbasis disk

Secara default, log audit ditulis ke persistent disk sehingga VM dimulai ulang dan diupgrade tidak menyebabkan log menghilang. GKE di VMware menyimpan entri log audit hingga 12 GB.

Cloud Audit Logs

Jika Anda mengaktifkan Cloud Audit Logs untuk sebuah cluster, entri log audit Aktivitas Admin dari server Kubernetes API cluster akan dikirim ke Google Cloud, menggunakan project Google Cloud yang Anda tentukan di kolom cloudAuditLogging.projectID pada file konfigurasi cluster Anda. Project Google Cloud ini disebut project logging audit.

Project logging audit harus sama dengan project host armada Anda.

Saat Anda mengaktifkan Cloud Audit Logs, GKE di VMware akan menonaktifkan logging audit berbasis disk.

Untuk melakukan buffering dan menulis entri log ke Cloud Audit Logs, GKE di VMware men-deploy Pod audit-proxy ke cluster admin. Komponen ini juga tersedia sebagai container sidecar pada cluster pengguna.

Batasan

Cloud Audit Logs versi saat ini untuk GKE di VMware memiliki beberapa batasan:

  • Logging akses data (permintaan get, daftar, tontonan) tidak didukung.

  • Modifikasi kebijakan audit Kubernetes tidak didukung.

  • Cloud Audit Logs tidak tahan terhadap pemadaman jaringan yang berkepanjangan. Jika entri log tidak dapat diekspor ke Google Cloud, entri tersebut akan di-cache dalam buffering disk 10G. Jika buffer tersebut terisi, entri berikutnya akan dihapus.

Aktifkan Anthos Audit API

Aktifkan Anthos Audit API di project logging audit Anda.

Mengaktifkan Anthos Audit API

Membuat akun layanan untuk Cloud Audit Logs

Anda sudah memiliki satu atau beberapa akun layanan yang dibuat untuk digunakan dengan GKE di VMware. Untuk fitur ini, Anda perlu membuat akun layanan tambahan yang disebut akun layanan logging audit.

  1. Buat akun layanan logging audit Anda:

    gcloud iam service-accounts create audit-logging-service-account
  2. Buat file kunci JSON untuk akun layanan Cloud Audit Logs Anda:

    gcloud iam service-accounts keys create audit-logging-key.json \
       --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    dengan AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL adalah alamat email akun layanan Anda.

  3. Simpan audit-logging-key.json pada workstation admin di lokasi yang sama dengan kunci akun layanan Anda lainnya.

Buat cluster admin dengan Cloud Audit Logs diaktifkan

Anda dapat mengaktifkan Cloud Audit Logs untuk cluster admin hanya saat pertama kali membuat cluster admin. Anda tidak dapat mengubah cluster admin yang ada untuk mengaktifkan Cloud Audit Logs.

  1. Lihat Membuat cluster admin.

  2. Di file konfigurasi cluster admin Anda, isi bagian cloudAuditLogging.

  3. Tetapkan cloudAuditLogging.projectID ke ID project logging audit Anda.

  4. Tetapkan cloudAuditLogging.clusterLocation ke region Google Cloud tempat Anda ingin menyimpan log audit. Untuk meningkatkan latensi, pilih region yang dekat dengan pusat data lokal.

  5. Tetapkan cloudAuditLogging.serviceAccountKeyPath ke jalur file kunci JSON untuk akun layanan logging audit Anda.

Contoh:

cloudAuditLogging:
  projectID: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

Lanjutkan pembuatan cluster seperti biasa.

Buat cluster pengguna dengan Cloud Audit Logs diaktifkan

  1. Lihat Membuat cluster pengguna.

  2. Di file konfigurasi cluster pengguna, isi bagian cloudAuditLogging.

  3. Tetapkan cloudAuditLogging.projectID ke ID project logging audit Anda.

  4. Tetapkan cloudAuditLogging.clusterLocation ke region Google Cloud tempat Anda ingin menyimpan log audit. Untuk meningkatkan latensi, pilih region yang dekat dengan pusat data lokal.

  5. Tetapkan cloudAuditLogging.serviceAccounKeyPath ke jalur file kunci JSON untuk akun layanan Cloud Audit Logs Anda.

  6. Pastikan bagian gkeConnect diisi dan gkeConnect.projectID sama dengan cloudAuditLogging.projectID.

Contoh:

gkeConnect:
  projectID: "my-project"
  registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"

cloudAuditLogging:
  projectID: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

Lanjutkan pembuatan cluster seperti biasa.

Mengaktifkan Cloud Audit Logs untuk cluster pengguna yang ada

Cloud Audit Logs hanya dapat diaktifkan di project Google Cloud tempat cluster pengguna terdaftar.

Jika cluster pengguna yang ada tidak terdaftar, daftarkan cluster dengan mengikuti langkah-langkah berikut sebelum mengaktifkan Cloud Audit Logs:

  1. Tambahkan bagian gkeConnect ke file konfigurasi cluster pengguna. Contoh:

    gkeConnect:
      projectID: "my-project"
      registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"
    
  2. Update cluster:

    gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

Setelah cluster pengguna terdaftar, ikuti langkah-langkah berikut untuk mengaktifkan Cloud Audit Logs:

  1. Isi bagian cloudAuditLogging dari file konfigurasi cluster pengguna Anda. Lihat artikel Membuat cluster pengguna dengan Cloud Audit Logs diaktifkan untuk mengetahui detail tentang masing-masing kolom. projectID di bagian cloudAuditLogging harus sama dengan yang ada di bagian gkeConnect.

  2. Update cluster:

    gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

Menonaktifkan Cloud Audit Logs untuk cluster pengguna yang ada

  1. Di file konfigurasi cluster pengguna, hapus bagian cloudAuditLogging.

  2. Perbarui cluster pengguna:

gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]

Mengakses log audit

Logging audit berbasis disk

Anda dapat menemukan log audit untuk cluster admin di node bidang kontrol di bagian /var/log/kube-audit/kube-apiserver-audit.log. Log audit untuk cluster pengguna berada di PersistentVolumeClaim yang bernama kube-audit-kube-apiserver-0. Anda dapat mengakses data ini dalam Pod Anda sendiri melalui entri volumes:

Tambahkan entri ini untuk cluster admin:

    volumes:
    - name: kube-audit
      hostPath:
        path: /var/log/kube-audit
        type: ""

Tambahkan entri ini untuk cluster pengguna:

    volumes:
    - name: kube-audit
      persistentVolumeClaim:
        claimName: kube-audit-kube-apiserver-0

Untuk menjadwalkan Pod pada node cluster admin yang sesuai (dan hanya node ini), Anda perlu menambahkan bagian nodeSelector dan tolerations ke spesifikasi Pod, seperti ini:

    spec:
      nodeSelector:
        node-role.kubernetes.io/master: ''
      tolerations:
      - key: node-role.kubernetes.io/master
        value: ""
        effect: NoSchedule

Untuk cluster pengguna, tetapkan namespace sebagai nama cluster pengguna, lalu tetapkan nodeName sama dengan kube-apiserver-0:

   spec:
     nodeName: NODE_NAME

Untuk menunjukkan nodeName dari kube-apiserver-0, jalankan perintah berikut:

kubectl get pod kube-apiserver-0 -n USER_CLUSTER_NAME --kubeconfig kubeconfig -o jsonpath='{.spec.nodeName}'

Setiap nama file log audit memiliki stempel waktu yang menunjukkan waktu file dirotasi. File berisi log audit hingga waktu dan tanggal tersebut.

Cloud Audit Logs

Konsol

  1. Di Konsol Google Cloud, buka halaman Logs di menu Logging.

    Buka halaman Log

  2. Di kotak Filter menurut label atau penelusuran teks, tepat di atas menu drop-down yang dibahas di atas, klik panah bawah untuk membuka menu drop-down. Dari menu, pilih Konversikan ke filter lanjutan.

  3. Isi kotak teks dengan filter berikut:

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. Klik Kirim Filter untuk menampilkan semua log audit dari GKE di cluster VMware yang dikonfigurasi untuk login ke project ini.

gcloud

Cantumkan dua entri log pertama dalam log Aktivitas Admin project Anda yang berlaku untuk jenis resource k8s_cluster:

gcloud logging read \
    'logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

dengan PROJECT_ID sebagai project ID Anda.

Output menunjukkan dua entri log. Perhatikan bahwa untuk setiap entri log, kolom logName memiliki nilai projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity dan protoPayload.serviceName sama dengan anthosgke.googleapis.com.

Kebijakan audit

Perilaku Cloud Audit Logs ditentukan oleh kebijakan logging audit Kubernetes yang dikonfigurasi secara statis. Perubahan kebijakan ini saat ini tidak didukung, tetapi akan tersedia dalam rilis mendatang.