Kebijakan audit memungkinkan Anda mengaudit akses data ke layanan Anda di Anthos Service Mesh. Mengaudit layanan Anda membantu Anda menjawab pertanyaan "siapa yang melakukan apa, kapan, dan mungkin mengapa". Dengan kebijakan audit, Anda dapat menentukan kapan log audit dibuat dan konten log-nya. Panduan ini menjelaskan cara menginstal Anthos Service Mesh agar Anda dapat menggunakan kebijakan audit.
Karena Anda melihat log audit di Logs Explorer Cloud Logging di Google Cloud Console, kebijakan audit hanya didukung di platform berikut:
- GKE di Google Cloud
- GKE on VMware
- Google Distributed Cloud Virtual untuk Bare Metal
Kebijakan audit memperluas AuthorizationPolicy dengan menambahkan tindakan AUDIT
. Perubahan ini hanya berlaku dalam cakupan kebijakan targetnya (yang dapat berupa beban kerja, namespace, atau seluruh mesh). Kebijakan bersifat ORed
bersama-sama, yaitu, permintaan akan dicatat ke dalam log jika ada kebijakan yang menyatakan demikian. Jika tidak ada kebijakan audit yang berlaku untuk beban kerja tertentu, tidak ada log audit yang akan dibuat untuk beban kerja tersebut.
Berikut adalah contoh kebijakan audit untuk mengaudit semua akses TULIS ke jalur /user/profile/*
di myapi
:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
namespace: ns1
name: anyname
spec:
selector:
matchLabels:
app: myapi
action: AUDIT
rules:
- to:
- operation:
methods: ["POST", "UPDATE", "DELETE"]
paths: ["/user/profile/*"]
Batasan
- Tidak ada log audit di ingress-gateway.
- Konten audit tidak dapat dikonfigurasi.
- Saat ini, log audit Anthos Service Mesh memiliki properti keandalan yang sama seperti log akses normal. Misalnya, jika Pod beban kerja dimulai ulang, beberapa log audit untuk beban kerja, jika tidak dipertahankan, dapat hilang.
Sebelum memulai
Ikuti langkah-langkah di bagian Memulai untuk:- Instal alat yang diperlukan
- Download
asmcli
- Memberikan izin admin cluster
- Memvalidasi project dan cluster
Menyiapkan konfigurasi gateway
Anthos Service Mesh memberi Anda opsi untuk men-deploy dan mengelola gateway sebagai bagian dari mesh layanan. Gateway menjelaskan load balancer yang beroperasi di edge mesh yang menerima koneksi HTTP/TCP masuk atau keluar. Gateway adalah proxy Envoy yang memberi Anda kontrol terperinci atas traffic yang masuk dan keluar dari mesh.
Secara default, asmcli
tidak menginstal istio-ingressgateway
. Sebaiknya
deploy dan kelola bidang kontrol dan gateway secara terpisah.
Untuk mengetahui informasi selengkapnya, lihat
Menginstal dan mengupgrade gateway. Jika Anda perlu
menginstal istio-ingressgateway
default dengan bidang kontrol dalam cluster,
sertakan argumen --option legacy-default-ingressgateway
.
Menyesuaikan penginstalan Anthos Service Mesh
Untuk menggunakan kebijakan audit, sesuaikan penginstalan Anthos Service Mesh:
Penginstalan
Ikuti langkah-langkah di Menginstal Anthos Service Mesh. Saat Anda menjalankan
asmcli install
, sertakan opsi berikut:--option audit-authorizationpolicy
Contoh:
./asmcli install \ --project_id PROJECT_ID \ --cluster_name CLUSTER_NAME \ --cluster_location CLUSTER_LOCATION \ --ca mesh_ca \ --output_dir DIR_PATH \ --enable_all \ --option audit-authorizationpolicy
Pastikan untuk menentukan file overlay lain yang Anda perlukan untuk mengonfigurasi Anthos Service Mesh.
Selesaikan penginstalan Anthos Service Mesh untuk mengaktifkan injeksi proxy sidecar otomatis pada workload Anda. Lihat Men-deploy dan men-deploy ulang beban kerja.
Upgrade
Ikuti langkah-langkah di Mengupgrade Anthos Service Mesh. Saat Anda menjalankan
asmcli install
, sertakan opsi berikut:--option audit-authorizationpolicy
Contoh:
./asmcli install \ --project_id PROJECT_ID \ --cluster_name CLUSTER_NAME \ --cluster_location CLUSTER_LOCATION \ --ca mesh_ca \ --output_dir DIR_PATH \ --enable_all \ --option audit-authorizationpolicy
Pastikan untuk menentukan file overlay lain yang Anda perlukan untuk mengonfigurasi Anthos Service Mesh.
Selesaikan penginstalan Anthos Service Mesh untuk mengaktifkan injeksi proxy sidecar otomatis pada workload Anda. Untuk mengetahui detailnya, lihat Beralih ke bidang kontrol baru
Menggunakan logging audit
Bagian ini menggunakan contoh Bookinfo untuk menunjukkan cara menggunakan logging audit.
Deploy aplikasi contoh Bookinfo ke namespace default.
Dapatkan alamat IP eksternal gateway masuk, dan kirim permintaan ke aplikasi contoh untuk menghasilkan beberapa traffic.
Di Konsol Google Cloud, buka menu navigasi
dan pilih Logging > Logs Explorer:Pilih project Google Cloud.
Karena Anda belum men-deploy kebijakan audit, log audit belum akan tersedia. Perhatikan bahwa log audit berbeda dengan log akses. Untuk melihat log akses
stackdriver
, masukkan kueri berikut di kolom Builder kueri, lalu klik Jalankan kueri:logName="projects/PROJECT_ID/logs/server-accesslog-stackdriver"
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Logs Explorer, lihat Ringkasan Logs Explorer.
Mengonfigurasi kebijakan audit dan memeriksa log audit
Bagian ini menyediakan beberapa opsi untuk mengaudit aplikasi Bookinfo. Setelah men-deploy kebijakan audit, Anda dapat mengirim beberapa permintaan, lalu memeriksa log audit di Logs Explorer.
Masukkan perintah berikut guna mendapatkan kredensial autentikasi agar dapat berinteraksi dengan cluster. Perintah ini juga menetapkan konteks saat ini untuk
kubectl
ke cluster.gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION
Terapkan kebijakan audit berikut untuk mengaudit permintaan
GET
ke jalur/productpage
:kubectl apply -f - << EOF apiVersion: "security.istio.io/v1beta1" kind: "AuthorizationPolicy" metadata: name: "audit-productpage" namespace: default spec: action: AUDIT rules: - to: - operation: methods: ["GET"] paths: ["/productpage"] EOF
Kirim beberapa permintaan ke Bookinfo.
Di Logs Explorer, masukkan kueri berikut di kolom Query builder, lalu klik Run query:
logName="projects/PROJECT_ID/logs/server-istio-audit-log"
Kueri menampilkan log yang mirip dengan yang berikut ini:
Terapkan kebijakan berikut untuk permintaan audit ke layanan
bookinfo-ratings
. Kebijakan audit bersifat tambahan. Setelah menerapkan kebijakan berikut, Anda akan melihat log audit untuk permintaan ke ProductPage dan Ratings.kubectl apply -f - << EOF apiVersion: "security.istio.io/v1beta1" kind: "AuthorizationPolicy" metadata: name: "audit-ratings" namespace: default spec: action: AUDIT rules: - from: - source: principals: ["cluster.local/ns/default/sa/bookinfo-ratings"] to: - operation: methods: ["GET"] EOF
Kebijakan audit yang baru harus diterapkan terlebih dahulu sebelum diterapkan.
Kirim 10 permintaan atau lebih ke Bookinfo untuk memastikan Anda menekan layanan rating, lalu periksa log audit di Logs Explorer. Log audit terlihat mirip dengan berikut ini:
Terapkan kebijakan berikut untuk mengaudit semua layanan di namespace default.
kubectl apply -f - << EOF apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: namespace: default name: "audit-all" spec: action: AUDIT rules: - {} EOF
Kirim beberapa permintaan lainnya ke Bookinfo, lalu periksa log audit di Logs Explorer. Log audit kini mencatat semua permintaan:
Jika ingin membatasi kembali kebijakan audit hanya ke ProductPage dan Rating, Anda dapat menghapus kebijakan
audit-all
:kubectl delete authorizationpolicy audit-all -n default
Pemecahan masalah
Jika Anda tidak melihat log audit apa pun setelah mengaktifkan kebijakan audit, berikut beberapa hal yang dapat Anda periksa:
Pastikan ada traffic selama jangka waktu yang ditentukan di Logs Explorer. Jika menguji dengan Bookinfo, Anda dapat mengirim permintaan dengan menjalankan perintah berikut beberapa kali:
curl -s http://EXTERNAL_IP/productpage | grep Bookstore
Periksa apakah ada
AuthorizationPolicy
di gateway masuk yang memblokir permintaan ke layanan yang diaudit.Periksa log akses
stackdriver
dengan filter berikut di Logs Explorer untuk memverifikasi apakah permintaan Anda telah mencapai aplikasi:logName="projects/PROJECT_ID/logs/server-accesslog-stackdriver"
Untuk memastikan Stackdriver dikonfigurasi dan log audit diaktifkan, hapus konfigurasi status
istiod
saat ini. Dalamconfig_dump
, telusurienable_audit_log
dan nama kebijakan audit Anda.istioctl dashboard envoy POD_NAME.NAMESPACE
Untuk memastikan permintaan Anda cocok dengan aturan kebijakan audit, Anda dapat memeriksa log debug kontrol akses berbasis peran (RBAC). Aktifkan logging debug RBAC dengan perintah berikut:
kubectl exec POD_NAME -n NAMESPACE -c istio-proxy -- pilot-agent request POST 'logging?rbac=debug'
Kirim beberapa permintaan, lalu periksa log untuk Pod dengan perintah
kubectl logs
:kubectl logs POD_NAME -n NAMESPACE -c istio-proxy