Plugin Open Policy Agent (OPA) menerapkan kebijakan kontrol akses dengan menginjeksikan proxy sidecar OPA ke dalam aplikasi Anda. Jika Anda memerlukan otorisasi dan kontrol akses detail halus untuk aplikasi di namespace tertentu, Anda dapat mengaktifkan kontrol cakupan injeksi. Setelah fitur ini diaktifkan, proxy sidecar OPA hanya akan diinjeksikan ke dalam Pod di namespace yang diberi label opa-istio-injection=enabled, sehingga memungkinkan kontrol akses yang lebih terperinci.
Prasyarat
Anda telah menambahkan kluster ke instans ASM, dan versi instans tersebut adalah 1.12.4.19 atau yang lebih baru. Untuk informasi selengkapnya, lihat Tambahkan kluster ke instans ASM.
Anda telah membuat namespace
defaultdandevelop. Untuk informasi selengkapnya, lihat Kelola namespace dan kuota.Anda telah menerapkan aplikasi Nginx di namespace
defaultdan aplikasi sleep di namespacedevelop. Untuk informasi selengkapnya, lihat Buat Deployment tanpa status.
Langkah 1: Aktifkan OPA dan kontrol cakupan
Pada topik ini, setelah plugin OPA dan kontrol cakupan injeksi diaktifkan, label opa-istio-injection=enabled ditambahkan ke namespace default, sedangkan label opa-istio-injection=enabled tidak ditambahkan ke namespace develop. Anda kemudian dapat memverifikasi keberhasilan pengaturan cakupan injeksi proxy sidecar OPA dengan memeriksa apakah proxy sidecar OPA telah diinjeksikan ke aplikasi Nginx dan Sleep.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
Pada halaman OPA Policy, pilih Enable Open Policy Agent (OPA) Plugin dan Enable OPA Injection Scope Control. Lalu, klik Enable OPA dan klik OK pada kotak dialog Note.
Langkah 2: Beri label pada namespace
Langkah-langkah berikut menjelaskan cara menambahkan label opa-istio-injection=enabled ke namespace default di Konsol ACK. Sebagai alternatif, Anda dapat menghubungkan ke kluster menggunakan kubectl dan menjalankan perintah kubectl label namespace default opa-istio-injection=enabled --overwrite untuk menambahkan label tersebut. Untuk informasi selengkapnya tentang cara menghubungkan ke kluster, lihat Dapatkan KubeConfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Namespaces and Quotas.
Pada halaman Namespaces, klik Edit di kolom Actions untuk namespace default.
Pada kotak dialog Edit Namespace, atur nama label menjadi opa-istio-injection dan nilainya menjadi enabled, klik Add, lalu klik OK.
Langkah 3: Restart aplikasi
Restart aplikasi dengan menghapus Pod-nya untuk memicu injeksi otomatis proxy sidecar OPA.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Pada halaman Pods, atur Namespace menjadi default. Di kolom Actions untuk Pod aplikasi Nginx, klik . Pada kotak dialog Note, klik OK.
Jika aplikasi Anda memiliki beberapa Pod, hapus semuanya untuk melakukan restart. Restart berhasil jika status Pod berubah menjadi Running.
Ulangi langkah-langkah sebelumnya untuk merestart Pod aplikasi sleep di namespace
develop.
Langkah 4: Verifikasi kontrol cakupan
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Pada halaman Pods, periksa apakah aplikasi Nginx dan sleep diinjeksikan dengan proxy sidecar OPA.
Atur Namespace menjadi default dan klik nama aplikasi Nginx. Pada tab Containers, Anda akan melihat opa-istio, yang menunjukkan bahwa aplikasi Nginx telah diinjeksikan dengan proxy sidecar OPA.

Atur Namespace menjadi develop dan klik nama aplikasi sleep. Pada tab Containers, Anda tidak melihat opa-istio, yang menunjukkan bahwa aplikasi sleep tidak diinjeksikan dengan proxy sidecar OPA.

Hasil ini menunjukkan bahwa setelah Anda mengaktifkan kontrol cakupan injeksi, aplikasi di namespace yang diberi label
opa-istio-injection=enableddiinjeksikan dengan proxy sidecar OPA, sedangkan aplikasi di namespace tanpa labelopa-istio-injection=enabledtidak diinjeksikan. Hal ini mengonfirmasi bahwa kontrol cakupan injeksi berfungsi sesuai harapan.