Ana içeriğe atla

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:

  1. Her kullanıcı için OpenSSL kullanarak sertifika ve anahtarlar oluşturun. Aşağıdaki betiği çalıştırın:

    ./gen_cert.sh
  2. 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 .
  3. 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.

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

  5. 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
  6. 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.pem
  7. Yukarı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ı.