مدير سياسة Gatekeeper هو واجهة مستخدم بسيطة للقراءة فقط لعرض حالة سياسات حارس البوابة في مجموعة Kubernetes.
يمكن أن تكون مجموعة kubernetes الهدف هي نفسها حيث تعمل GPM أو بعض المجموعات (مجموعات) أخرى عن بعد باستخدام ملف kubeconfig . يمكنك أيضًا تشغيل GPM محليًا في جهاز عميل والاتصال بمجموعة عن بعد.
يمكن لـ GPM عرض جميع قوالب القيد المحددة باستخدام رمز Rego الخاص بهم ، وجميع CRDs Configuration Gatekeeper ، وجميع القيود مع وضعها الحالي ، والانتهاكات ، وإجراءات إنفاذ ، وتطابق التعريفات ، إلخ.
يمكنك رؤية بعض لقطات الشاشة أدناه.
ستحتاج إلى تشغيل حارس بوابة OPA في المجموعة الخاصة بك وعلى الأقل بعض قوالب القيود والقيود المحددة للاستفادة من هذه الأداة.
ℹ يمكنك بسهولة نشر حارس البوابة على المجموعة الخاصة بك باستخدام وحدة Kubernetes OPA (مفتوحة المصدر أيضًا).
لنشر مدير سياسة حارس البوابة على الكتلة الخاصة بك ، قم بتطبيق ملف kustomization المقدم تشغيل الأمر التالي:
kubectl apply -k . بشكل افتراضي ، سيؤدي ذلك إلى إنشاء عملية نشر وخدمة على حد سواء مع gatekeper-policy-manager في مساحة اسم gatekeeper-system . ندعوك لإلقاء نظرة على ملف kustomization.yaml للقيام بمزيد من التكوين.
يمكن تشغيل التطبيق كجنة في مجموعة Kubernetes أو محليًا مع ملف
kubeconfig. سيبذل قصارى جهده لتكوين التكوين الصحيح.
بمجرد نشر التطبيق ، إذا لم تكن قد قمت بإعداد دخول ، فيمكنك الوصول إلى الويب باستخدام المنفذ:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80ثم الوصول إليه مع متصفحك على: http://127.0.0.1:8080
من الممكن أيضًا نشر GPM باستخدام مخطط Helm المقدم.
قم أولاً بإنشاء ملف قيم ، على سبيل المثال my-values.yaml ، مع قيمك المخصص للإصدار. راجع README's Chart و DEFAULT DATION.YAML لمزيد من المعلومات.
ثم ، تنفذ:
helm repo add gpm https://sighupio.github.io/gatekeeper-policy-manager
helm upgrade --install --namespace gatekeeper-system --set image.tag=v1.0.13 --values my-values.yaml gatekeeper-policy-manager gpm/gatekeeper-policy-managerلا تنس أن تحل محل
my-values.yamlyaml بالمسار إلى ملف القيم الخاص بك.
يمكن أيضًا تشغيل GPM محليًا باستخدام Docker و kubeconfig ، على افتراض أن ملف kubeconfig الذي تريد استخدامه يقع في ~/.kube/config سيكون الأمر لتشغيل GPM محليًا:
docker run -v ~ /.kube/config:/home/gpm/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v1.0.13ثم الوصول إليه مع متصفحك على: http://127.0.0.1:8080
يمكنك أيضًا تشغيل تطبيق Flask مباشرة ، راجع قسم التطوير لمزيد من المعلومات.
GPM هو تطبيق عديمي الجنسية ، ولكن يمكن تكوينه باستخدام متغيرات البيئة. التكوينات المحتملة هي:
| اسم متغير البيئة | وصف | تقصير |
|---|---|---|
GPM_SECRET_KEY | المفتاح السري المستخدم لتوليد الرموز. تغيير هذه القيمة في الإنتاج . | g8k1p3rp0l1c7m4n4g3r |
KUBECONFIG | المسار إلى ملف kubeconfig ، إذا تم توفيره أثناء التشغيل داخل مجموعة ، سيتم استخدام ملف التكوين هذا بدلاً من واجهة برمجة تطبيقات الكتلة. | |
GPM_LOG_LEVEL | مستوى السجل (انظر مستندات تسجيل بيثون للمستويات المتاحة) | INFO |
GPM_AUTH_ENABLED | تمكين المصادقة الخيارات الحالية: "مجهول" ، "OIDC" | مجهول |
GPM_PREFERRED_URL_SCHEME | مخطط URL ليتم استخدامه أثناء توليد الروابط. | http |
GPM_OIDC_REDIRECT_DOMAIN | المجال الذي يتم فيه تشغيل GPM. هذا هو المكان الذي سيتم فيه إعادة توجيه العميل بعد المصادقة | |
GPM_OIDC_CLIENT_ID | معرف العميل المستخدم للمصادقة مقابل مزود OIDC | |
GPM_OIDC_CLIENT_SECRET | سر العميل المستخدم للمصادقة مقابل مزود OIDC (اختياري) | |
GPM_OIDC_ISSUER | اسم مضيف OIDC Issuer (مطلوب إذا تم تمكين Auth OIDC) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | نقطة نهاية ترخيص OIDC (اختياري ، يعد إعداد هذه المعلمة اكتشاف بقية تكوين المزود ، واضبط جميع القيم الأخرى أيضًا إذا تم تعيين هذه الحالة) | |
GPM_OIDC_JWKS_URI | OIDC jwks uri (اختياري ، يعطل هذا المعلمة اكتشاف بقية تكوين المزود ، واضبط جميع القيم الأخرى أيضًا إذا وضعت هذه الحالة) | |
GPM_OIDC_TOKEN_ENDPOINT | OIDC Token Endpoint (اختياري ، يعد إعداد هذه المعلمة اكتشاف بقية تكوين الموفر ، واضبط جميع القيم الأخرى أيضًا إذا كان إعداد هذه الحالة) | |
GPM_OIDC_INTROSPECTION_ENDPOINT | نقطة نهاية OIDC التأمل (اختياري ، فإن إعداد هذه المعلمة يعطل اكتشاف بقية تكوين المزود ، واضبط جميع القيم الأخرى أيضًا في حالة تعيين هذه واحدة) | |
GPM_OIDC_USERINFO_ENDPOINT | OIDC userinfo endpoint (اختياري ، تعيين هذه المعلمة يعطل اكتشاف بقية تكوين المزود ، قم بتعيين جميع القيم الأخرى أيضًا إذا وضعت هذه الحالة) | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC End Session Endpoint (اختياري ، يعد إعداد هذه المعلمة اكتشاف بقية تكوين المزود ، واضبط جميع القيم الأخرى أيضًا إذا تم تعيين هذه الحالة) |
️ يرجى ملاحظة أن مصادقة OIDC في حالة تجريبية. تم اختباره للعمل مع KeyCloak كموفر.تم توفير متغيرات البيئة هذه بالفعل وجاهزة للضبط في ملف
manifests/enable-oidc.yaml.
نظرًا لأن v1.0.13 GPM لديه دعم أساسي متعدد الكواكب عند استخدام kubeconfig مع أكثر من سياق واحد. سيسمح لك GPM باختيار السياق مباشرة من واجهة المستخدم.
إذا كنت ترغب في تشغيل GPM في مجموعة ولكن بدعم متعدد الكواكب ، فسيكون الأمر سهلاً مثل تثبيت ملف kubeconfig في جراب (S) من GPM مع تكوين الوصول إلى الكتلة وتعيين متغير البيئة KUBECONFIG مع المسار إلى ملف kubeconfig المثبت. أو يمكنك ببساطة تثبيته في /home/gpm/.kube/config و GPM سيكتشفونه تلقائيًا.
يرجى تذكر أن المستخدم للمجموعات يجب أن يكون له الأذونات الصحيحة. يمكنك استخدام ملف
manifests/rabc.yamlكمرجع.لاحظ أيضًا أن المجموعة التي يتم تشغيل GPM يجب أن تكون قادرة على الوصول إلى المجموعات الأخرى.
عندما تقوم بتشغيل GPM محليًا ، فأنت تستخدم بالفعل ملف kubeconfig للاتصال بالمجموعات ، الآن يجب أن ترى جميع سياقاتك المحددة ويمكنك التبديل بينها بسهولة من واجهة المستخدم.
إذا كنت ترغب في استخدام kubeconfig مع مصادقة IAM ، فستحتاج إلى تخصيص صورة حاوية GPM لأن مصادقة IAM تستخدم ثنائيات AWS الخارجية التي لم يتم تضمينها افتراضيًا في الصورة.
يمكنك تخصيص صورة الحاوية باستخدام Dockerfile مثل ما يلي:
FROM curlimages/curl:7.81.0 as downloader
RUN curl https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.5.5/aws-iam-authenticator_0.5.5_linux_amd64 --output /tmp/aws-iam-authenticator
RUN chmod +x /tmp/aws-iam-authenticator
FROM quay.io/sighup/gatekeeper-policy-manager:v1.0.13
COPY --from=downloader --chown=root:root /tmp/aws-iam-authenticator /usr/local/bin/ قد تحتاج إلى إضافة أيضًا aws CLI ، يمكنك استخدام نفس النهج كما كان من قبل.
تأكد من أن kubeconfig لديه مجموعة apiVersion كـ client.authentication.k8s.io/v1beta1
يمكنك قراءة المزيد في هذه القضية.








تتم كتابة GPM في Python باستخدام إطار Flask للواجهة الخلفية والتفاعل مع واجهة المستخدم المرنة وموضوع الغضب للواجهة الأمامية.
لتطوير GPM ، ستحتاج إلى إنشاء بيئة افتراضية Python 3 ، وتثبيت جميع التبعيات المحددة في requirements.txt المقدمة. txt ، وإنشاء الواجهة الأمامية React وأنت على ما يرام لبدء القرصنة.
يجب أن تنقلك الأوامر التالية وتشغيلها:
# Build frontend and copy over to static folder
$ pushd app/web-client
$ yarn install && yarn build
$ cp -r build/ * ../static-content/
$ popd
# Create a virtualenv
$ python3 -m venv env
# Activate it
$ source ./env/bin/activate
# Install all the dependencies
$ pip install -r app/requirements.txt
# Run the development server
$ FLASK_APP=app/app.py flask runيوصى بالوصول إلى مجموعة Kubernetes مع حارس بوابة OPA الذي تم نشره لتصحيح الطلب.
ستحتاج إلى مزود OIDC لاختبار مصادقة OIDC. يمكنك استخدام وحدة Fury-Kubernetes-keycloak.
فيما يلي قائمة أمنيات بالميزات التي نود إضافتها إلى GPM (لا يوجد ترتيب معين):
ConstraintTemplate حاليًا من فضلك ، أخبرنا إذا كنت تستخدم GPM وما هي الميزات التي ترغب في الحصول عليها من خلال إنشاء مشكلة هنا على Github ؟؟