Halaman ini menjelaskan cara mengamankan instance Google Kubernetes Engine (GKE) dengan Identity-Aware Proxy (IAP).
Ringkasan
IAP terintegrasi melalui Ingress untuk GKE. Integrasi ini memungkinkan Anda mengontrol akses tingkat resource untuk karyawan, bukan menggunakan VPN.
Di cluster GKE, traffic masuk ditangani oleh Load Balancing HTTP(S), komponen dari Cloud Load Balancing. Load balancer HTTP(S) biasanya dikonfigurasi oleh pengontrol Kubernetes Ingress. Pengontrol Ingress mendapatkan informasi konfigurasi dari objek Ingress Kubernetes yang dikaitkan dengan satu atau beberapa objek Layanan. Setiap objek Layanan menyimpan informasi pemilihan rute yang digunakan untuk mengarahkan permintaan masuk ke Pod dan port tertentu.
Mulai Kubernetes versi 1.10.5-gke.3, Anda dapat menambahkan konfigurasi untuk load balancer dengan mengaitkan Layanan dengan objek BackendConfig. BackendConfig adalah definisi resource kustom (CRD) yang ditentukan di repositori kubernetes/ingress-gce.
Pengontrol Ingress Kubernetes membaca informasi konfigurasi dari BackendConfig dan menyiapkan load balancer yang sesuai. BackendConfig menyimpan informasi konfigurasi yang khusus untuk Cloud Load Balancing, dan memungkinkan Anda menentukan konfigurasi terpisah untuk setiap layanan backend Load Balancing HTTP(S).
Sebelum memulai
Untuk mengaktifkan IAP untuk GKE, Anda memerlukan hal berikut:
- Project konsol Google Cloud dengan penagihan diaktifkan.
- Grup satu atau beberapa instance GKE, yang ditayangkan oleh load
balancer HTTPS. Load balancer akan dibuat secara otomatis saat Anda membuat objek Ingress di cluster GKE.
- Pelajari cara membuat Ingress untuk HTTPS.
- Nama domain yang terdaftar ke alamat load balancer Anda.
- Kode aplikasi untuk memverifikasi bahwa semua permintaan memiliki identitas.
- Pelajari cara mendapatkan identitas pengguna.
IAP menggunakan klien OAuth yang dikelola Google untuk mengautentikasi pengguna. Hanya pengguna dalam organisasi yang dapat mengakses aplikasi yang mengaktifkan IAP. Jika Anda ingin mengizinkan akses kepada pengguna di luar organisasi, lihat Mengaktifkan IAP untuk aplikasi eksternal.
Mengaktifkan IAP
Jika belum mengonfigurasi layar izin OAuth project, Anda akan diminta untuk melakukannya. Untuk mengonfigurasi layar izin OAuth, lihat Menyiapkan layar izin OAuth.
Jika menjalankan cluster GKE versi 1.24 atau yang lebih baru, Anda dapat mengonfigurasi IAP dan GKE menggunakan Kubernetes Gateway API. Untuk melakukannya, selesaikan
langkah-langkah berikut, lalu ikuti petunjuk di
Mengonfigurasi IAP.
Jangan konfigurasikan BackendConfig
.
Menyiapkan akses IAP
-
Buka
halaman Identity-Aware Proxy.
Buka halaman Identity-Aware Proxy - Pilih project yang ingin Anda amankan dengan IAP.
-
Pilih kotak centang di samping resource yang ingin Anda beri akses.
Jika Anda tidak melihat resource, pastikan resource tersebut dibuat dan pengontrol ingress Compute Engine BackendConfig disinkronkan.
Untuk memverifikasi bahwa layanan backend tersedia, jalankan perintah gcloud berikut:
gcloud compute backend-services list
- Di panel samping kanan, klik Tambahkan akun utama.
-
Di dialog Add principals yang muncul, masukkan alamat email grup atau individu yang harus memiliki peran IAP-secured Web App User untuk project tersebut.
Jenis akun utama berikut dapat memiliki peran ini:
- Akun Google: user@gmail.com
- Google Grup: admin@googlegroups.com
- Akun layanan: server@example.gserviceaccount.com
- Domain Google Workspace: example.com
Pastikan untuk menambahkan Akun Google yang aksesnya Anda miliki.
- Pilih Cloud IAP > IAP-Secured Web App User dari daftar drop-down Roles.
- Klik Simpan.
Mengonfigurasi BackendConfig
Anda dapat mengonfigurasi BackendConfig untuk IAP dengan menambahkan blok iap
.
Menambahkan blok iap
ke BackendConfig
Untuk mengonfigurasi BackendConfig untuk IAP, Anda harus menentukan nilai enabled
. Pastikan
Anda memiliki izin compute.backendServices.update
dan tambahkan blok
iap
ke BackendConfig.
Untuk GKE versi 1.16.8-gke.3 dan yang lebih tinggi, gunakan versi API cloud.google.com/v1
.
Jika Anda menggunakan versi GKE sebelumnya, gunakan cloud.google.com/v1beta1
.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true
Mengaitkan port layanan dengan BackendConfig
Anda juga perlu mengaitkan port Layanan dengan BackendConfig untuk memicu pengaktifan IAP. Salah satu cara untuk membuat pengaitan ini adalah dengan menetapkan semua port untuk layanan secara default ke BackendConfig, yang dapat Anda lakukan dengan menambahkan anotasi berikut ke resource Layanan:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'
Memverifikasi BackendConfig
Untuk menguji konfigurasi, jalankan kubectl get event
. Jika Anda melihat pesan
"no BackendConfig for service port exists
", berarti Anda berhasil
mengaitkan port layanan dengan BackendConfig, tetapi resource BackendConfig
tidak ditemukan. Error ini dapat terjadi jika Anda belum membuat resource BackendConfig,
membuatnya di namespace yang salah, atau salah mengeja referensi dalam anotasi Service.
Menonaktifkan IAP
Untuk menonaktifkan IAP, Anda harus menetapkan enabled
ke
false
di BackendConfig. Jika Anda menghapus blok IAP
dari BackendConfig, setelan akan tetap ada. Misalnya, jika IAP
diaktifkan dan Anda menghapus pemblokiran, IAP akan tetap diaktifkan.
Langkah berikutnya
- Pelajari cara menyiapkan Cloud CDN di GKE.
- Pelajari cara mengonfigurasi Cloud Armor untuk GKE.
- Pelajari resource BackendConfig lebih lanjut.