All Products
Search
Document Center

Alibaba Cloud Service Mesh:Kontrol cakupan injeksi sidecar OPA

Last Updated:Apr 25, 2026

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 default dan develop. Untuk informasi selengkapnya, lihat Kelola namespace dan kuota.

  • Anda telah menerapkan aplikasi Nginx di namespace default dan aplikasi sleep di namespace develop. Untuk informasi selengkapnya, lihat Buat Deployment tanpa status.

    Contoh Nginx dan sleep

    1. Gunakan konten berikut untuk membuat file nginx.yaml dan sleep.yaml.

      nginx.yaml

      apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
              sidecarset-injected: "true"
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
      spec:
        ports:
          - name: http
            port: 80
            protocol: TCP
            targetPort: 80
        selector:
          app: nginx
        type: ClusterIP

      sleep.yaml

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: sleep
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: sleep
        labels:
          app: sleep
          service: sleep
      spec:
        ports:
        - port: 80
          name: http
        selector:
          app: sleep
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sleep
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: sleep
        template:
          metadata:
            labels:
              app: sleep
          spec:
            terminationGracePeriodSeconds: 0
            serviceAccountName: sleep
            containers:
            - name: sleep
              image: curlimages/curl
              command: ["/bin/sleep", "infinity"]
              imagePullPolicy: IfNotPresent
              volumeMounts:
              - mountPath: /etc/sleep/tls
                name: secret-volume
            volumes:
            - name: secret-volume
              secret:
                secretName: sleep-secret
                optional: true
      ---
    2. Jalankan perintah berikut untuk menerapkan aplikasi Nginx di namespace default dan aplikasi sleep di namespace develop:

      kubectl apply -f nginx.yaml -n default
      kubectl apply -f sleep.yaml -n develop

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.

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Mesh Security Center > OPA Policy.

  3. 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.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Namespaces and Quotas.

  3. Pada halaman Namespaces, klik Edit di kolom Actions untuk namespace default.

  4. 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.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Pods.

  3. Pada halaman Pods, atur Namespace menjadi default. Di kolom Actions untuk Pod aplikasi Nginx, klik More > Delete. 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.

  4. Ulangi langkah-langkah sebelumnya untuk merestart Pod aplikasi sleep di namespace develop.

Langkah 4: Verifikasi kontrol cakupan

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Pods.

  3. 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.注入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.sleep

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