
مراجعة الوصول - إضافة kubectl لعرض مصفوفة الوصول لموارد خادم k8s
مراجعة الوصول - إضافة kubectl لعرض مصفوفة الوصول لموارد الخادم
هل تساءلت يومًا عن حقوق الوصول التي تملكها على مجموعة Kubernetes المقدمة؟
بالنسبة للموارد الفردية، يمكنك استخدام kubectl auth can-i list deployments، ولكن ربما تبحث عن نظرة عامة كاملة؟
هذا هو ما يوفره rakkess.
فهو يسرد حقوق الوصول للمستخدم الحالي وجميع موارد الخادم، على غرار kubectl auth can-i --list.
كما أنه مفيد لمعرفة من يمكنه التفاعل مع مورد خادم معين.
تحقق من الأمر الفرعي rakkess resource أدناه.

... على نطاق الكتلة
rakkess
... في مساحة اسم معينة
rakkess --namespace default
... مع أفعال
rakkess --verbs get,delete,watch,patch
... لمستخدم آخر
rakkess --as other-user
... لحساب خدمة آخر
rakkess --sa kube-system:namespace-controller
... والجمع مع معاملات kubectl الشائعة
KUBECONFIG=otherconfig rakkess --context other-context

... عالميًا في جميع مساحات الأسماء (ينظر فقط في ClusterRoleBindings)
rakkess resource configmaps
... في مساحة اسم معينة (ينظر في RoleBindings و ClusterRoleBindings)
rakkess resource configmaps -n default
... بترميز مختصر
rakkess r cm # نفس rakkess resource configmaps
.. بأفعال مخصصة
rakkess r cm --verbs get,delete,watch,patch
بعض الأدوار تنطبق فقط على الموارد ذات اسم محدد.
لمراجعة هذه التهيئات، قدم اسم المورد كوسيط إضافي.
على سبيل المثال، عرض حقوق الوصول لـ ConfigMap المسماة ingress-controller-leader-nginx في مساحة الاسم ingress-nginx (لاحظ الفرق الدقيق لـ nginx-ingress-serviceaccount عن المثال السابق):

نظرًا لأن rakkess resource يحتاج إلى الاستعلام عن Roles و ClusterRoles وربطها، فإنه عادةً ما يتطلب وصولًا إداريًا إلى المجموعة.
انظر أيضًا الاستخدام.
هناك عدة طرق لتثبيت rakkess. الطريقة الموصى بها هي عبر krew.
Krew هو مدير إضافات لـ kubectl. إذا لم تكن قد قمت بتثبيت krew بعد، احصل عليه من
https://github.com/kubernetes-sigs/krew.
ثم التثبيت بسيط كالتالي
kubectl krew install access-matrix
ستكون الإضافة متاحة كـ kubectl access-matrix، راجع doc/USAGE لمزيد من التفاصيل.
عند استخدام الملفات الثنائية للتثبيت، ألقِ نظرة أيضًا على doc/USAGE.
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-linux.tar.gz \
&& tar xf rakkess-amd64-linux.tar.gz rakkess-amd64-linux \
&& chmod +x rakkess-amd64-linux \
&& mv -i rakkess-amd64-linux $GOPATH/bin/rakkess
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-darwin.tar.gz \
&& tar xf rakkess-amd64-darwin.tar.gz rakkess-amd64-darwin \
&& chmod +x rakkess-amd64-darwin \
&& mv -i rakkess-amd64-darwin $GOPATH/bin/rakkess
https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-windows-amd64.zip
المتطلبات:
الترجمة:
export PLATFORMS=$(go env GOOS)
make all # سيتم وضع الملفات الثنائية في out/
المتطلبات:
الترجمة:
mkdir rakkess && chdir rakkess
curl -Lo Dockerfile https://raw.githubusercontent.com/corneliusweig/rakkess/master/Dockerfile
docker build . -t rakkess-builder
docker run --rm -v $PWD:/go/bin/ --env PLATFORMS=$(go env GOOS) rakkess
docker rmi rakkess-builder
سيتم وضع الملفات الثنائية في الدليل الحالي.
[1]: هذا الوضع مستوحى من kubectl-who-can
| ماذا يقول الآخرون عن rakkess؟ |
|---|
"حسنًا، هذا يبدو مفيدًا! rakkess، إضافة kubectl لعرض مصفوفة الوصول لجميع الموارد المتاحة." – @mhausenblas |
"هذا مفيد حقًا. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns تطبع مصفوفة الوصول لحساب خدمة في مساحة اسم." – @fakod |
| "القنبلة. أحبه." – @ralph_squillace |
| "هذا جعل يومي. حسنًا، ليس اليوم الفعلي لكنني بالتأكيد سأستخدمه كثيرًا." – @Soukron |