Menyiapkan Keamanan Layanan di mesh layanan sidecar Envoy di GKE
Halaman ini menjelaskan cara menyiapkan fitur keamanan pada mesh layanan sidecar Envoy di GKE.
Prasyarat
Sebagai titik awal, panduan ini mengasumsikan bahwa Anda telah:
- Membuat cluster GKE dan mendaftarkannya ke fleet.
- Siapkan mesh layanan sidecar Envoy dengan Gateway API.
Menyiapkan kebijakan otorisasi pada sidecar di GKE
Bagian ini menunjukkan cara menyiapkan berbagai jenis kebijakan otorisasi pada sidecar Cloud Service Mesh di GKE.
Sebelum dapat membuat kebijakan otorisasi, Anda harus menginstal GCPAuthzPolicy CustomResourceDefinition (CRD):
curl https://github.com/GoogleCloudPlatform/gke-networking-recipes/blob/main/gateway-api/config/mesh/crd/experimental/gcpauthzpolicy.yaml \
| kubectl apply -f -
Kebijakan Otorisasi dapat menerapkan kontrol akses pada traffic yang memasuki sidecar Envoy. Kebijakan dapat diterapkan pada deployment Kubernetes. Deployment harus berada di namespace yang sama dengan Kebijakan Otorisasi.
Kebijakan otorisasi untuk menolak semua permintaan
Jika Anda memiliki beban kerja yang seharusnya hanya melakukan panggilan keluar, seperti
cron job, Anda dapat mengonfigurasi kebijakan otorisasi untuk menolak semua permintaan
HTTP yang masuk ke beban kerja. Contoh berikut menolak permintaan HTTP masuk ke
workload whereami
.
Lakukan langkah-langkah berikut untuk membuat dan menerapkan kebijakan otorisasi penolakan:
Buat kebijakan penolakan dengan membuat file bernama
deny-all-authz-policy.yaml
:cat >deny-all-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - paths: - type: Prefix value: "/" action: DENY EOF
Terapkan kebijakan:
kubectl apply -f deny-all-authz-policy.yaml
Kebijakan otorisasi untuk mengizinkan permintaan
Anda juga dapat mengonfigurasi kebijakan izin yang hanya mengizinkan permintaan yang cocok dengan
kriteria tertentu, sementara menolak permintaan lainnya. Contoh berikut mengonfigurasi
kebijakan otorisasi di whereami
yang hanya mengizinkan permintaan GET
yang memiliki header http x-user-role:admin
dalam permintaan.
Lakukan langkah-langkah berikut untuk membuat dan menerapkan kebijakan otorisasi izinkan, hapus kebijakan tolak yang dibuat sebelumnya sebelum menambahkan kebijakan ini untuk melihat hasilnya:
Buat kebijakan kustom dengan membuat file bernama
allow-authz-policy.yaml
:cat >allow-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - methods: ["GET"] when: "request.headers['x-user-role'] == 'admin' action: ALLOW EOF
Terapkan kebijakan:
kubectl apply -f allow-authz-policy.yaml
Kebijakan otorisasi untuk menolak permintaan berdasarkan aturan
Contoh berikut menolak permintaan HTTP GET
masuk ke
workload whereami
saat berada di jalur /admin
.
Lakukan langkah-langkah berikut untuk membuat dan menerapkan kebijakan otorisasi penolakan:
Buat kebijakan penolakan dengan membuat file bernama
deny-path-authz-policy.yaml
:cat >deny-path-authz-policy.yaml <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: myworkload-authz namespace: sidecar-example spec: targetRefs: - kind: Deployment name: whereami httpRules: - to: operations: - paths: - type: Prefix value: "/admin" methods: ["GET"] action: DENY EOF
Terapkan kebijakan:
kubectl apply -f deny-path-authz-policy.yaml