Halaman ini menunjukkan cara membuat kebijakan otorisasi di jaringan sekitar.
Prasyarat
Sebelum dapat menyelesaikan langkah-langkah dalam dokumen ini, Anda harus memenuhi kondisi berikut:
- Cluster GKE yang sedang berjalan dengan jaringan ambient Cloud Service Mesh diaktifkan.
- Namespace yang terdaftar dalam jaringan sekitar
(misalnya,
ambient-test) dengan contoh workload klien dan server yang di-deploy. - Mutual TLS (mTLS) diaktifkan
antara beban kerja klien dan server dengan menggunakan
GCPServerTLSPolicy(denganmtlsMode: Strict) danGCPClientTLSPolicy. Aturan berbasis identitasGCPAuthzPolicyyang cocok denganCLIENT_CERT_URI_SANmemerlukan mTLS aktif untuk mengekstraksi identitas SPIFFE klien.
Untuk penyiapan lingkungan yang mendetail, lihat Menyiapkan jaringan ambient GKE.
Kebijakan tolak secara default
Secara default, GKE Ambient Authorization Policy API mengizinkan semua
traffic kecuali jika dibatasi oleh kebijakan, yang sesuai dengan perilakuNetworkPolicy
Kubernetes standar.
Tindakan DENY_BY_DEFAULT memungkinkan Anda mengubah perilaku default ini. Jika diterapkan ke namespace, kebijakan ini akan memblokir semua traffic ke workload di namespace tersebut, kecuali jika diizinkan secara eksplisit oleh kebijakan ALLOW.
Halaman ini menunjukkan cara mengonfigurasi dan menggunakan DENY_BY_DEFAULT di
Cloud Service Mesh untuk menetapkan postur keamanan secara default bagi
beban kerja Anda.
Batasan
Sebelum menerapkan kebijakan DENY_BY_DEFAULT, perhatikan batasan berikut:
- Anda hanya dapat membuat satu kebijakan
DENY_BY_DEFAULTper namespace. - Kebijakan dengan tindakan
DENY_BY_DEFAULTtidak dapat memiliki aturan yang ditentukan. - Gunakan tindakan ini untuk menetapkan dasar
matchLabels: {}di seluruh namespace guna menargetkan semua Pod. Anda tidak dapat menggunakanDENY_BY_DEFAULTuntuk pembatasan per-Pod.
Menyiapkan kebijakan otorisasi tolak secara default
Untuk menetapkan dasar-dasar penolakan secara default di seluruh namespace dan mengizinkan akses secara selektif ke beban kerja tertentu, ikuti langkah-langkah berikut:
Buat dan terapkan
GCPAuthzPolicydengan tindakan yang ditetapkan keDENY_BY_DEFAULTke namespace Anda.cat <<EOF > deny-by-default-policy.yaml && kubectl apply -f deny-by-default-policy.yaml apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: deny-by-default-authz namespace: ambient-test spec: action: DENY_BY_DEFAULT enforcementLevel: L4 targetRefs: - group: "" kind: Pod selector: matchLabels: {} EOFOutputnya mirip dengan:
gcpauthzpolicy.networking.gke.io/deny-by-default-authz createdKebijakan ini memblokir semua traffic masuk (Timur-Barat dan ingress) ke beban kerja di namespace
ambient-testsecara default. Kebijakan ini tidak membatasi traffic keluar yang berasal dari workload di namespace.Untuk mengizinkan traffic secara selektif, buat dan terapkan kebijakan
ALLOW:cat <<EOF > allow-policy.yaml && kubectl apply -f allow-policy.yaml apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: allow-client-to-server namespace: ambient-test spec: action: ALLOW enforcementLevel: L4 targetRefs: - group: "" kind: Pod selector: matchLabels: app: server rules: - from: sources: - principals: - principalSelector: CLIENT_CERT_URI_SAN principal: type: Exact value: spiffe://PROJECT_ID.s3ns.svc.id.goog/ns/ambient-test/sa/client EOFGanti PROJECT_ID dengan project ID Anda.
Penerapan kebijakan dapat memerlukan waktu hingga tiga menit setelah pengontrol menerima. Tunggu tiga menit sebelum melanjutkan.
Uji konektivitas dari klien ke server. Permintaan ini akan berhasil karena cocok dengan kebijakan
ALLOW.kubectl exec -it deploy/client -n ambient-test -- /bin/curl -fsLS server.ambient-test.svc.cluster.localUji konektivitas dari server ke server itu sendiri (atau workload lain tanpa kebijakan izin eksplisit). Permintaan akan gagal karena kebijakan
DENY_BY_DEFAULT.kubectl exec -it deploy/server -n ambient-test -- /bin/curl -fsLS server.ambient-test.svc.cluster.localOutputnya mirip dengan:
curl: (52) Empty reply from server.
Logging
Jika permintaan ditolak oleh kebijakan otorisasi, log akses GKE Ambient Proxy akan berisi kolom berikut dalam payload JSON:
jsonPayload.error_details: Tetapkan ke- rbac_access_denied_matched_policy[none]
Anda dapat menggunakan Logs Explorer di konsol Cloud de Confiance untuk melihat entri log akses untuk koneksi yang ditolak. Lihat Verifikasi bahwa traffic diautentikasi dan diizinkan.
Kebijakan keamanan keluar
Untuk memeriksa dan mengontrol traffic keluar dari workload jaringan sekitar ke endpoint eksternal atau internet, Anda dapat merutekan traffic keluar melalui Secure Web Proxy (SWP).
Untuk mengetahui petunjuk tentang cara mengonfigurasi resource GCPBackend dan GCPEgressRouting,
lihat Merutekan traffic egress sekitar melalui Secure Web Proxy.