Logging audit

Ringkasan

Dokumen ini menjelaskan cara menggunakan Cloud Audit Logs untuk Google Distributed Cloud (khusus software). Google Distributed Cloud menggunakan Kubernetes Audit Logging, yang menyimpan kumpulan data kronologis terkait panggilan yang dilakukan ke server Kubernetes API cluster. Log audit berguna untuk menyelidiki permintaan API yang mencurigakan dan untuk mengumpulkan statistik. Untuk mengetahui informasi tentang logging audit untuk GKE On-Prem API, lihat Logging audit Cloud API.

Tentang Cloud Audit Logs

Log audit ditulis ke Cloud Audit Logs di project Google Cloud Anda. Menulis ke Cloud Audit Logs memiliki beberapa manfaat dibandingkan menulis ke disk atau merekam log dalam sistem logging lokal:

  • Log audit untuk semua cluster dapat dipusatkan.
  • Entri log yang ditulis ke Cloud Audit Logs tidak dapat diubah.
  • Entri Cloud Audit Logs disimpan selama 400 hari.
  • Fitur Cloud Audit Logs disertakan dalam harga Google Distributed Cloud.
  • Anda dapat mengonfigurasi Google Distributed Cloud untuk menulis log ke disk atau ke Cloud Audit Logs.

Logging audit berbasis disk

Secara default, log audit ditulis ke disk persisten sehingga mulai ulang dan upgrade VM tidak menyebabkan log hilang.

  • Jika cluster lanjutan tidak diaktifkan:

    Google Distributed Cloud menyimpan hingga 12 GB entri log audit.

  • Jika cluster lanjutan diaktifkan

    Google Distributed Cloud menyimpan hingga 1 GB entri log audit.

Cloud Audit Logs

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

Project pencatatan audit Anda harus sama dengan project host fleet Anda.

Untuk melakukan buffering dan menulis entri log ke Cloud Audit Logs, Google Distributed Cloud men-deploy Pod audit-proxy ke cluster admin. Komponen ini juga tersedia sebagai container file bantuan di cluster pengguna.

Batasan

Cloud Audit Logs memiliki batasan berikut:

  • Pencatatan aktivitas akses data (permintaan get, list, watch) tidak didukung.
  • Memodifikasi 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 buffer disk 10 GB. Jika buffer tersebut penuh, entri terlama akan dihapus.
  • Satu project dapat mendukung hingga sekitar 1.000 akun layanan untuk digunakan dengan Cloud Audit Logs. Beberapa cluster dapat menggunakan akun layanan yang sama.

Aktifkan Anthos Audit API

Aktifkan Anthos Audit API di project logging audit Anda.

Aktifkan Anthos Audit API

Buat akun layanan untuk Cloud Audit Logs

Anda sudah memiliki satu atau beberapa akun layanan yang Anda buat untuk digunakan dengan Google Distributed Cloud. 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 di workstation admin di lokasi yang sama dengan kunci akun layanan Anda yang lain.

PERINGATAN Sebelum menghapus akun layanan ini, pastikan untuk menggantinya dengan akun layanan baru dalam konfigurasi cluster terlebih dahulu. Prosesnya mirip dengan Mengaktifkan Cloud Audit Logs untuk cluster pengguna yang sudah ada. Jika Anda lupa melakukannya, ikuti panduan untuk membersihkan.

Membuat 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. Dalam file konfigurasi cluster admin, isi bagian cloudAuditLogging.

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

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

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

Contoh:

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

Lanjutkan pembuatan cluster seperti biasa.

Membuat cluster pengguna dengan Cloud Audit Logs diaktifkan

  1. Lihat Membuat cluster pengguna.

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

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

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

  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 Google Cloud project tempat cluster pengguna terdaftar.

Jika cluster pengguna yang ada tidak terdaftar, daftarkan dengan mengikuti langkah-langkah berikut sebelum Anda 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 didaftarkan, ikuti langkah-langkah berikut untuk mengaktifkan Cloud Audit Logs:

  1. Isi bagian cloudAuditLogging di file konfigurasi cluster pengguna. Lihat Membuat cluster pengguna dengan Cloud Audit Logs diaktifkan untuk mengetahui detail tentang setiap 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 control plane di bagian /var/log/kube-audit/kube-apiserver-audit.log. Log audit untuk cluster pengguna ada di PersistentVolumeClaim yang bernama kube-audit-kube-apiserver-0. Anda dapat mengakses data ini dalam Pods Anda sendiri melalui entri volumes:

Tambahkan entri ini untuk admin cluster:

    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 Anda di node cluster admin yang sesuai (dan hanya node ini), Anda harus menambahkan bagian nodeSelector dan tolerations ke spesifikasi Pod Anda, 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}'

Nama file setiap log audit memiliki stempel waktu yang menunjukkan kapan file tersebut dirotasi. File berisi log audit hingga waktu dan tanggal tersebut.

Mengakses Cloud Audit Logs

Konsol

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

    Buka Logs Explorer

    Jika halaman Legacy Logs Viewer terbuka, pilih Upgrade ke Logs Explorer baru dari menu drop-down Upgrade.

  2. Klik di kolom Kueri untuk memasukkan kueri.

  3. Masukkan kueri berikut ke kolom Query:

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    

    Ganti PROJECT_ID dengan project ID Anda.

  4. Klik Run query untuk menampilkan semua log audit dari cluster yang dikonfigurasi untuk login ke project ini.

gcloud

  1. Cantumkan dua entri log pertama di 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
  1. Ganti PROJECT_ID dengan project ID Anda.

Output menampilkan 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

Kebijakan audit Kubernetes menentukan aturan untuk peristiwa mana yang dicatat sebagai entri log dan menentukan data apa yang harus disertakan dalam entri log. Perilaku Cloud Audit Logs ditentukan oleh kebijakan logging audit Kubernetes yang dikonfigurasi secara statis. Mengubah kebijakan ini untuk mengubah perilaku Cloud Audit Logs tidak didukung.