Mengonfigurasi kebijakan audit untuk layanan Anda
Tutorial ini hanya mendukung dalam cluster penerapan bidang kontrol.
Kebijakan audit memungkinkan Anda mengaudit akses data ke layanan Anda di dan Cloud Service Mesh. Mengaudit layanan akan membantu Anda menjawab pertanyaan "siapa melakukan apa, kapan, dan mungkin mengapa." Dengan kebijakan audit, Anda dapat menentukan kapan log audit dibuat dan isi log. Panduan ini menjelaskan cara menginstal Cloud Service Mesh sehingga Anda dapat menggunakan kebijakan audit.
Karena Anda melihat log audit di Cloud Logging Logs Explorer di konsol Google Cloud, audit kebijakan hanya didukung pada platform berikut:
- GKE di Google Cloud
- Google Distributed Cloud (khusus software) untuk VMware
- Google Distributed Cloud (khusus software) untuk bare metal
Kebijakan audit memperluas
AuthorizationPolicy
dengan menambahkan tindakan AUDIT
. Hanya berlaku dalam cakupan kebijakan targetnya
(yang dapat berupa beban kerja, namespace, atau seluruh mesh). Kebijakan tersebut
ORed
bersama-sama, yaitu, permintaan akan dicatat jika ada kebijakan yang menyatakan demikian. Jika tidak ada audit
kebijakan berlaku untuk beban kerja tertentu, tidak ada log audit yang dibuat untuk beban kerja tersebut.
Berikut ini 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 gateway masuk.
- Konten audit tidak dapat dikonfigurasi.
- Saat ini, log audit Cloud Service Mesh memiliki keandalan yang sama sebagai log akses normal. Misalnya, jika Pod workload dimulai ulang, beberapa log audit untuk beban kerja, jika tidak dipertahankan, dapat hilang.
Sebelum memulai
Ikuti langkah-langkah di artikel Menginstal alat dependen dan memvalidasi cluster menjadi:- Menginstal alat yang diperlukan
- Download
asmcli
- Memberikan izin admin cluster
- Memvalidasi project dan cluster
Menyiapkan konfigurasi gateway
Cloud Service Mesh memberi Anda opsi untuk men-deploy dan mengelola gateway sebagai bagian dari jaringan layanan. Gateway menjelaskan load balancer yang beroperasi di tepi yang menerima koneksi HTTP/TCP masuk atau keluar. Gateway adalah Envoy {i>proxy<i} yang memberi Anda kontrol mendetail atas lalu lintas yang masuk dan meninggalkan {i>mesh<i}.
asmcli
tidak menginstal istio-ingressgateway
. Sebaiknya Anda
men-deploy dan mengelola gateway dan bidang kontrol secara terpisah. Untuk selengkapnya
lihat Menginstal dan mengupgrade gateway.
Menyesuaikan penginstalan Cloud Service Mesh
Untuk menggunakan kebijakan audit, sesuaikan penginstalan Cloud Service Mesh:
Instal
Ikuti langkah-langkah di Instal Cloud 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 menetapkan file overlay lainnya yang perlu dan mengonfigurasi Cloud Service Mesh.
Selesaikan penginstalan Cloud Service Mesh untuk mengaktifkan proses otomatis injeksi proxy file bantuan pada workload Anda. Lihat Deploy dan deploy ulang workload.
Upgrade
Ikuti langkah-langkah di Upgrade Cloud 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 menetapkan file overlay lainnya yang perlu dan mengonfigurasi Cloud Service Mesh.
Selesaikan penginstalan Cloud Service Mesh untuk mengaktifkan proses otomatis injeksi proxy file bantuan 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.
Men-deploy Aplikasi contoh Bookinfo ke namespace default.
Dapatkan alamat IP eksternal gateway masuk, dan kirim permintaan ke aplikasi contoh untuk menghasilkan traffic.
Di konsol Google Cloud, buka menu navigasi
dan pilih Logging > Logs Explorer:Pilih project Google Cloud.
Karena Anda belum men-deploy kebijakan audit, tidak akan ada audit log. Perhatikan bahwa log audit berbeda dengan log akses. Kepada lihat log akses
stackdriver
, masukkan kueri berikut ke kolom builder, lalu klik Run query:logName="projects/PROJECT_ID/logs/server-accesslog-stackdriver"
Untuk 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 Anda men-deploy kebijakan audit, Anda dapat mengirim beberapa permintaan dan kemudian memeriksa log audit di Logs Explorer.
Masukkan perintah berikut untuk mendapatkan kredensial autentikasi untuk berinteraksi dengan cluster tersebut. 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 tersebut menampilkan log yang mirip dengan berikut ini:
Terapkan kebijakan berikut untuk mengaudit permintaan ke
bookinfo-ratings
layanan. Kebijakan audit bersifat kumulatif. Setelah menerapkan hal berikut kebijakan, Anda akan melihat log audit untuk permintaan ke ProductPage dan Rating.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 baru harus diterapkan terlebih dahulu sebelum dapat diterapkan.
Kirim 10 permintaan atau lebih ke Bookinfo untuk memastikan Anda mencapai rating layanan IT, lalu periksa log audit di Logs Explorer. Log audit terlihat mirip dengan contoh berikut ini:
Terapkan kebijakan berikut untuk mengaudit semua layanan secara default namespace.
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 lagi ke Bookinfo, lalu periksa log audit {i>Log Explorer<i}. Log audit kini mencatat semua permintaan di log:
Jika Anda ingin membatasi kebijakan audit kembali 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 adalah beberapa hal-hal yang dapat Anda periksa:
Pastikan ada traffic untuk jangka waktu yang ditentukan di Logs Explorer. Jika Anda menguji dengan Bookinfo, Anda bisa 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 Log Penjelajah untuk memverifikasi apakah permintaan Anda telah diterima aplikasi:logName="projects/PROJECT_ID/logs/server-accesslog-stackdriver"
Untuk memastikan bahwa Stackdriver dikonfigurasi dan log audit diaktifkan, buang konfigurasi status
istiod
saat ini. Di penelusuranconfig_dump
untukenable_audit_log
dan kebijakan audit Anda nama.istioctl dashboard envoy POD_NAME.NAMESPACE
Untuk memastikan permintaan Anda sesuai dengan aturan kebijakan audit, Anda dapat memeriksa log debug {i>role-based access control<i} (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