Open Policy Agent (OPA) eklentisi, uygulamalara bir OPA sidecar proxy enjekte ederek erişim kontrolü ilkelerini tanımlar. Belirli ad alanlarındaki uygulamalar için ayrıntılı yetkilendirme ve erişim kontrolü uygulamak üzere OPA enjeksiyon kapsamı kontrolünü etkinleştirin. Bu özellik, yalnızca opa-istio-injection=enabled etiketiyle işaretlenmiş ad alanlarında bulunan podlara bir OPA sidecar proxy enjekte ederek daha ayrıntılı erişim kontrolü sağlar.
Önkoşullar
v1.12.4.19 veya sonraki bir sürüme sahip bir ASM örneğine eklenmiş bir kümeniz olmalıdır. Daha fazla bilgi için bkz. Bir kümeyi ASM örneğine ekleme.
defaultvedevelopad alanlarını oluşturmuş olmalısınız. Daha fazla bilgi için bkz. Ad alanlarını ve kotaları yönetme.-
defaultad alanında bir Nginx uygulaması vedevelopad alanında bir Sleep uygulaması dağıtmış olmalısınız. Daha fazla bilgi için bkz. Durum bilgisi tutmayan iş yükü Dağıtımı oluşturma.
Adım 1: OPA'yı ve kapsam kontrolünü etkinleştirme
Bu konuda, OPA eklentisini ve enjeksiyon kapsamı kontrolünü etkinleştirdikten sonra default ad alanına opa-istio-injection=enabled etiketini eklersiniz ancak develop ad alanına opa-istio-injection=enabled etiketini eklemezsiniz. Ardından, enjeksiyon kapsamının başarıyla kontrol edilip edilmediğini doğrulamak amacıyla OPA sidecar proxy'nin Nginx ve Sleep uygulamalarına enjekte edilip edilmediğini kontrol edebilirsiniz.
ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde öğelerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde öğelerini seçin.
OPA Policy sayfasında Enable Open Policy Agent (OPA) Plugin ve Enable OPA Injection Scope Control seçeneklerini belirleyin. Enable OPA seçeneğini tıklayın ve ardından Note iletişim kutusunda OK seçeneğini tıklayın.
Adım 2: Ad alanına bir etiket ekleme
Bu konuda, ACK konsolunda varsayılan ad alanına opa-istio-injection=enabled etiketinin nasıl ekleneceği açıklanmaktadır. Alternatif olarak, kubectl aracını kullanarak kümeye bağlanabilir ve kubectl label namespace default opa-istio-injection=enabled --overwrite komutunu çalıştırabilirsiniz. Daha fazla bilgi için bkz. kubeconfig dosyası alma ve kubectl ile kümeye bağlanma.
ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.
Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde Namespaces and Quotas seçeneğini tıklayın.
Namespaces sayfasında default ad alanını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
Edit Namespace iletişim kutusunda etiket adını opa-istio-injection ve değerini enabled olarak ayarlayın. Add seçeneğini tıklayın ve ardından OK seçeneğini tıklayın.
Adım 3: Uygulamaları yeniden başlatma
Podlarını silerek uygulamaları yeniden başlatın. Yeniden başlatma işleminden sonra OPA sidecar proxy otomatik olarak enjekte edilir.
ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.
Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneklerini tıklayın.
-
Pods sayfasının üst kısmında Namespace seçeneğini default olarak ayarlayın. Nginx uygulama podu için Actions sütununda seçeneğini tıklayın. Note iletişim kutusunda OK seçeneğini tıklayın.
Bir uygulamanın birden çok pod'u varsa, uygulamayı yeniden başlatmak için tüm pod'ları silmeniz gerekir. Pod durumu Running olarak değiştiğinde yeniden başlatma tamamlanır.
Sleep uygulamasının
developad alanındaki pod'unu yeniden başlatmak için önceki adımları tekrarlayın.
Adım 4: Enjeksiyon kapsamını doğrulama
ACK konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters seçeneğini tıklayın.
Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneklerini tıklayın.
-
Pods sayfasında OPA sidecar proxy'nin Nginx ve Sleep uygulamalarına enjekte edilip edilmediğini kontrol edin.
Namespace seçeneğini default olarak ayarlayın ve Nginx uygulama podunun adını tıklayın. Containers sekmesinde opa-istio konteyneri görünür durumdadır; bu, OPA sidecar proxy'nin Nginx uygulamasına enjekte edildiğini gösterir.
Namespace seçeneğini develop olarak ayarlayın ve Sleep uygulamasının adını tıklayın. Containers sekmesinde opa-istio görüntülenmez. Yalnızca
istio-proxyvesleepkonteynerleri listelenir veopa-istiokonteyneri bulunmaz. Bu durum, OPA sidecar proxy'nin Sleep uygulamasına enjekte edilmediğini ve OPA enjeksiyon kapsamı kontrolünün etkili olduğunu gösterir.
Sonuçlar, OPA sidecar proxy'nin
opa-istio-injection=enabledetiketine sahip ad alanlarındaki uygulamalara enjekte edildiğini, ancak bulabeletiketine sahip olmayan ad alanlarındaki uygulamalara enjekte edilmediğini göstermektedir. Bu da OPA enjeksiyon kapsamını başarıyla kontrol ettiğinizi doğrular.