Authorization of Kubernetes
K8s-authz, Casbin tabanlı bir Kubernetes (k8s) yetkilendirme ara yazılımıdır. Bu ara yazılım, politikaları uygulamak için RBAC (Rol Tabanlı Erişim Kontrolü) ve ABAC (Öznitelik Tabanlı Erişim Kontrolü) kullanır. Bu ara yazılım, K8s doğrulama kabul webhook'u ile entegre olarak, K8s kaynaklarına yapılan her istek için Casbin tarafından tanımlanan politikaları doğrular. Özel kabul kontrolörleri, ValidatingAdmissionWebhook
kullanılarak Kubernetes ile kaydedilir ve API sunucusu tarafından iletilen istek nesnelerinde doğrulamalar yaparak isteğin kabul edilip edilmeyeceğine dair bir yanıt sağlar.
Gelen isteklerin kabul kontrolörüne ne zaman gönderileceğini belirlemek için bir doğrulama webhook'u uygulanmıştır. Bu webhook, her tür K8s kaynağı veya alt kaynak için istekleri yönlendirir ve politika doğrulaması yapar. Kullanıcılar, yalnızca Casbin zorlayıcısı tarafından yetkilendirilmişlerse bu kaynaklarda işlem yapabilir. Zorlayıcı, kullanıcının politikalarda tanımlandığı şekilde rollerini kontrol eder. Bu ara yazılım için dağıtım hedefi K8s kümesidir.
Gereksinimler
Devam etmeden önce, aşağıdakilere sahip olduğunuzdan emin olun:
- Çalışan bir Kubernetes kümesi. Docker kullanarak yerel bir küme kurabilir veya sunucunuzda tam bir Kubernetes ekosistemi kurabilirsiniz. Ayrıntılı talimatlar için, Windows üzerinde yerel bir Kubernetes kümesi kurmak için bu rehber'e ve Linux üzerinde bir küme kurmak için bu rehber'e başvurabilirsiniz.
- Kubectl CLI. Windows için Kubectl'i yükleme talimatları burada bulunabilir ve Linux için burada.
- OpenSSL
Kullanım
K8s-authz'i kullanmak için şu adımları izleyin:
Her kullanıcı için OpenSSL kullanarak sertifika ve anahtarlar oluşturun. Aşağıdaki betiği çalıştırın:
./gen_cert.sh
Dockerfile dosyasından Docker imajını manuel olarak aşağıdaki komutu çalıştırarak oluşturun. Komutta ve dağıtım dosyasında yapı sürümünü uygun şekilde değiştirmeyi unutmayın.
docker build -t casbin/k8s_authz:0.1 .
Casbin politikalarını model.conf ve policy.csv dosyalarında tanımlayın. Bu politikaların nasıl çalıştığı hakkında daha fazla bilgi için belgelere başvurun.
Dağıtımdan önce, main.go dosyasındaki ve doğrulama webhook yapılandırma dosyasındaki portları, özel gereksinimlerinize göre değiştirebilirsiniz.
Doğrulama kontrolörünü ve webhook'u Kubernetes kümesine aşağıdaki komutu çalıştırarak dağıtın:
kubectl apply -f deployment.yaml
Bir üretim sunucusu için, sertifikaları güvence altına almak üzere bir Kubernetes
secret
oluşturmanız önerilir.kubectl create secret generic casbin -n default \
--from-file=key.pem=certs/casbin-key.pem \
--from-file=cert.pem=certs/casbin-crt.pemYukarıdaki adımları tamamladıktan sonra, sertifika dizinini main.go ve manifests dosyalarında oluşturulan
secret
dizini ile güncellemeniz gerekiyor.
Şimdi, sunucu çalışır durumda olmalı ve K8s kaynaklarına yapılan istekleri doğrulamaya ve ilgili politikaları uygulamaya hazır olmalı.