Kubernet'leri oluşturdunuz mu? Şimdi İzinleri Denetlemek için Bu 5 RBAC Aracını Deneyin

Yayınlanan: 2022-03-14

Kubernetes RBAC, bir Kubernetes kümesindeki kaynaklara ayrıntılı erişim sağlamak için kullanılan etkili bir rol tabanlı yetkilendirme yöntemidir.

Ancak doğru kullanılmadığı takdirde kolaylıkla uyum felaketine neden olabilir. Bu nedenle, Kubernetes'teki riskli izinleri denetlemek ve bulmak için RBAC araçlarına ihtiyacımız var.

Bu makalede, Kubernetes RBAC'nin ne olduğunu, riskli izinleri denetlemenin neden önemli olduğunu tartışacağız ve riskli izinleri denetlemede bize en iyi şekilde yardımcı olabilecek araçları keşfedeceğiz!

RBAC nedir?

Rol Tabanlı Erişim Kontrolü (RBAC), her erişim yetkisinin bir kullanıcıya atanan rollere dayandığı bir güvenlik mekanizmasıdır. Dolayısıyla bu sistemle, bir Kubernetes kümesinin kaynaklarına (ad alanları, bölmeler, işler) erişimi uygulamalar veya kullanıcılarla kısıtlamak mümkündür.

Kubernetes'te RBAC ilkeleri, bir sistem kullanıcısının (Kullanıcı veya Grup) ve hizmet hesaplarının (Hizmet Hesabı) erişim haklarını yönetmek için kullanılabilir.

Kubernetes'te kullanıcıları Webhook veya Düğüm Yetkilendirmesi aracılığıyla ABAC (Öznitelik tabanlı erişim denetimi) gibi yetkilendirmenin başka yolları da vardır, ancak kararlı sürümde mevcut olan en yaygın kullanılan ve yerel yetkilendirme mekanizması RBAC'dir.

Pratik olarak kaynaklarla tüm etkileşim API sunucusu aracılığıyla yapılır, bu da sonuçta her şeyin söz konusu sunucuya HTTP istekleri yapmakla sınırlı olduğu anlamına gelir (ana düğümün/lerin veya Kontrol Panelinin önemli bir bileşeni).

Kubernetes, küme kaynağı erişim izinlerini ayarlamak için birleştirilebilen RBAC ile ilgili dört nesneye sahiptir. Bunlar Role, ClusterRole, RoleBinding ve ClusterRoleBinding'dir. Tüm Kubernetes nesneleri gibi bu nesnelerle çalışmak için Kubernetes API'si kullanılmalıdır.

Kubernetes'teki Roller

Kubernetes'te Role ve ClusterRole olarak adlandırılan iki tür rol vardır. İkisi arasındaki en büyük fark, Rol'ün somut bir ad alanına ait olması, ClusterRole'un ise küme için genel olmasıdır. Bu nedenle, ClusterRole durumunda, kümeye ait olduğu için adı benzersiz olmalıdır. Rol durumunda, iki farklı ad alanı aynı ada sahip bir Role sahip olabilir.

Bahsedilmesi gereken bir diğer fark ise Role'un aynı namespace içindeki kaynaklara erişime izin vermesidir. diğerleri arasında.

Artık rol türlerini bildiğimize göre, bir sonraki şey bu rolleri kime atayabileceğimizi bilmek. Bu durumda, Kullanıcı Hesaplarımız, Hizmet Hesaplarımız ve Gruplarımız var. Kullanıcı hesapları, belirli bir kullanıcıya atanan hesaplardır, hizmet hesapları ise işlemler tarafından kullanılır. Örneğin, uygulamamızın kümedeki kaynaklara programlı olarak erişmesi gerektiğini hayal edin, bunun için bir hizmet hesabı kullanacağız.

Son olarak, bir rolü bir hesaba (kullanıcı veya hizmet) veya gruba bağlayan “tutkal” a ihtiyacımız var. Bunun için Kubernetes'te iki kaynak vardır: RoleBinding ve ClusterRoleBinding. RoleBinding aynı ad alanındaki bir role başvurabilirken, ClusterRoleBinding herhangi bir ad alanındaki herhangi bir Role başvurabilir ve genel olarak izinler atayabilir.

Not olarak, izinler yalnızca kaynaklara erişime izin verir, çünkü "varsayılan olarak her şey reddedilir" ve aynı kullanıcıya birkaç rol atamak mümkündür.

RBAC'ı kullanmak için tek ön koşul, kümemizde “ –authorization-mode=RBAC ” seçeneği kullanılarak etkinleştirilmesidir. Bunu şu komutu kullanarak kontrol edebiliriz:

 kubectl api-versions

Riskli RBAC izinleri nelerdir ve nasıl düzeltilir?

Kapsül kaynaklarına yetkisiz erişime izin veren veya izin verebilecek herhangi bir izin, riskli izin olarak kabul edilir. Örneğin, bir kullanıcının düzenleme izni varsa, kendi Rolünü düzenleyebilir ve başka türlü erişmelerine izin verilmeyen kaynaklara erişebilir. Bu bir uyum sorununa neden olabilir. Benzer şekilde, eski izinler işaretlenmeden bırakılırsa, bazı kullanıcılar artık ihtiyaç duymadıkları kaynaklara erişebilir.

Çok sayıda Rolünüz olduğunda bu tür riskli izni manuel olarak bulmak zor ve zaman alıcıdır. Bu işlemi gerçekleştirmek için, riskli izinleri bulmak için Kümenizin tamamını taramanıza yardımcı olan bir dizi RBAC izin denetim aracı vardır. RBAC'ın etkinliğinin, düzenli izin denetimi gerektiren güncel bir RBAC politikasına bağlı olduğunu anlamak da önemlidir.

Aşağıda, farklı dillere ve kullanıcı arayüzlerine dayalı olarak izinleri denetlemek için en iyi RBAC araçlarından bazıları verilmiştir.

KubiScan

KubiScan, bir Kubernetes kümesindeki riskli izinleri taramak için Python tabanlı bir RBAC aracıdır. Araç, Ana düğüm içinde yürütülmelidir ve ardından riskli izinlerin bir listesini vermek için doğrudan terminalden çalıştırılabilir. Kubiscan, riskli Roller, ClusterRoles, RoleBindings, ClusterBindings, Subjects, Pod'lar ve hatta Container bulmak için kullanılabilir.

Krane

Appvia'dan Krane, Ruby tabanlı bir Kubernetes RBAC statik analiz ve görselleştirme aracıdır. Hem yerel olarak bir CLI olarak hem de bir CI/CD işlem hattında çalıştırılabilir. Ayrıca, bir Kubernetes kapsayıcısında bağımsız bir hizmet olarak da çalışabilir. Krane, yönlü ağaç ve grafik ağ görünümleri aracılığıyla RBAC izinlerini analiz etme özelliği sunar. Ayrıca Slack entegrasyonu sayesinde riskli izinler için uyarı verir.

RBAC Aracı

InsightCloudSec tarafından sunulan RBAC Aracı, Go ile oluşturulmuş bağımsız bir izin denetleme aracıdır. Yalnızca riskli RBAC izinlerini taramanıza ve vurgulamanıza izin vermez, aynı zamanda Auditgen özelliği aracılığıyla izin denetiminden RBAC politikası oluşturmanıza da olanak tanır. RBAC aracı ayrıca RBAC görselleştirme özelliği sunar.

Adalet rüzgarları

Fairwinds Insight, bir dizi Kubernetes güvenlik ve uyumluluk özelliği sağlayan bağımsız bir araçtır. İlke uygulama özelliği, RBAC izinlerini denetlemenize ve bunları standart ve özelleştirilmiş ilkelere göre taramanıza olanak tanır. Fairwinds isteğe bağlı bir demo sunar.

İzin Yöneticisi

Permission Manager by Sighup, Javascript tabanlı bir Kubernetes izin yönetimi aracıdır. Bir Kubernetes kümesi içinde kullanıcı izinlerini yönetmenin kolay ve inisiyatif bir yolunu sunar. İzin Yöneticisi ayrıca, aracın temel RBAC izin denetimi yapmanızı sağlayan kurumsal bir sürümünü de sunar.

Çözüm

Kubernetes RBAC, bir Kubernetes kümesindeki kaynaklara erişimi yönetmenin etkili bir yoludur. Ancak düzgün uygulanmadığı takdirde güvenlik ve uyumluluk sorunlarına yol açabilir. Ancak bu, RBAC denetim araçları aracılığıyla izinleri sürekli olarak denetleyerek önlenebilir.

Kubernetes En İyi Uygulamaları da ilginizi çekebilir.