التخطي إلى المحتوى الرئيسي

Authorization of Kubernetes

K8s-authz هو وسيط تفويض Kubernetes (k8s) مبني على Casbin يستخدم RBAC (Role-Based Access Control) و ABAC (Attribute-Based Access Control) لتطبيق السياسات. يتكامل هذا الوسيط مع ويب هوك التحقق من صحة K8s للتحقق من السياسات المحددة بواسطة Casbin لكل طلب يتم إجراؤه على موارد K8s. يتم تسجيل وحدات التحكم في القبول المخصصة مع Kubernetes باستخدام ValidatingAdmissionWebhook لأداء التحقق من صحة الطلبات التي يتم توجيهها بواسطة خادم API وتقديم استجابة تشير إلى ما إذا كان يجب السماح بالطلب أو رفضه.

لتحديد متى يتم إرسال الطلبات الواردة إلى وحدة التحكم في القبول، تم تنفيذ ويب هوك للتحقق من الصحة. يقوم هذا الويب هوك بتوجيه الطلبات لأي نوع من موارد K8s أو الفرعية ويؤدي التحقق من السياسة. يُسمح للمستخدمين بأداء العمليات على هذه الموارد فقط إذا تم تفويضهم من قبل مُنفذ Casbin. يتحقق المُنفذ من أدوار المستخدم كما هو محدد في السياسات. عقدة K8s هي هدف النشر لهذا الوسيط.

المتطلبات

قبل المتابعة، تأكد من أن لديك ما يلي:

  • عقدة Kubernetes تعمل. يمكنك إعداد عقدة محلية باستخدام Docker أو إعداد نظام بيئي كامل لـ Kubernetes على الخادم الخاص بك. للحصول على تعليمات مفصلة، راجع هذا الدليل لإعداد عقدة Kubernetes محلية على Windows أو هذا الدليل لإعداد عقدة على Linux.
  • واجهة سطر الأوامر Kubectl. يمكن العثور على تعليمات لتثبيت Kubectl على Windows هنا، ولـ Linux هنا.
  • OpenSSL

الاستخدام

اتبع هذه الخطوات لاستخدام K8s-authz:

  1. قم بإنشاء شهادات ومفاتيح لكل مستخدم باستخدام OpenSSL. قم بتشغيل السكربت أدناه:

    ./gen_cert.sh
  2. قم ببناء صورة Docker من Dockerfile يدويًا بتشغيل الأمر التالي. تذكر تغيير إصدار البناء في الأمر وفي ملف النشر file وفقًا لذلك.

    docker build -t casbin/k8s_authz:0.1 .
  3. حدد سياسات Casbin في ملفات model.conf و policy.csv. لمزيد من المعلومات حول كيفية عمل هذه السياسات، راجع التوثيق.

  4. قبل النشر، يمكنك تعديل المنافذ في ملف main.go، وكذلك في ملف تكوين ويب هوك التحقق من الصحة file، بناءً على متطلباتك الخاصة.

  5. قم بنشر وحدة التحكم في التحقق والويب هوك على عقدة Kubernetes بتشغيل الأمر التالي:

    kubectl apply -f deployment.yaml
  6. لخادم الإنتاج، يُنصح بإنشاء secret في Kubernetes لتأمين الشهادات:

    kubectl create secret generic casbin -n default \
    --from-file=key.pem=certs/casbin-key.pem \
    --from-file=cert.pem=certs/casbin-crt.pem
  7. بعد إكمال الخطوات المذكورة أعلاه، تحتاج إلى تحديث دليل الشهادات في main.go و المظاهر بدليل secret الذي تم إنشاؤه.

الآن، يجب أن يكون الخادم قيد التشغيل وجاهزًا للتحقق من صحة الطلبات المقدمة إلى موارد K8s وتطبيق السياسات وفقًا لذلك.