استخدام قبول أمان Pod في خدمة Azure Kubernetes (AKS)
يستخدم Pod Security Admission (PSA) التسميات لفرض نهج Pod Security Standards على الحجيرات التي تعمل في مساحة الاسم. في AKS، يتم تمكين Pod Security Admission بشكل افتراضي. لمزيد من المعلومات حول قبول أمان Pod ومعايير أمان Pod، راجع فرض معايير أمان Pod باستخدام تسميات مساحة الاسم ومعايير أمان Pod.
Pod Security Admission هو حل نهج مضمن لعمليات تنفيذ نظام مجموعة واحد. إذا كنت ترغب في استخدام نهج على مستوى المؤسسة، نوصي باستخدام نهج Azure.
قبل البدء
- اشتراك Azure. إذا لم يكن لديك اشتراك Azure، يمكنك إنشاء حساب مجاني.
- Azure CLI مُثبت.
- نظام مجموعة AKS موجود يعمل بالإصدار 1.23 من Kubernetes أو أعلى.
تمكين قبول أمان Pod لمساحة اسم في مجموعتك
تمكين PSA لمساحة اسم واحدة
قم بتمكين PSA لمساحة اسم واحدة في نظام المجموعة باستخدام
kubectl label
الأمر وتعيين التسميةpod-security.kubernetes.io/enforce
بقيمة النهج التي تريد فرضها. يمكنrestricted
المثال التالي النهج لمساحة اسم NAMESPACE .kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=restricted
تمكين PSA لجميع مساحات الأسماء
قم بتمكين PSA لكافة مساحات الأسماء في نظام المجموعة باستخدام
kubectl label
الأمر وتعيين التسميةpod-security.kubernetes.io/warn
بقيمة النهج التي تريد فرضها. يتيح المثال التالي النهج لكافةbaseline
مساحات الأسماء في نظام المجموعة الخاص بك. ينشئ هذا النهج تحذيرا يواجه المستخدم إذا تم نشر أي pods إلى مساحة اسم لا تفي بنهج الأساس .kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=baseline
فرض نهج قبول أمان Pod مع التوزيع
إنشاء مساحة
kubectl create namespace
اسم باستخدام الأمر .kubectl create namespace test-restricted kubectl create namespace test-privileged
تمكين نهج PSA لكل مساحة اسم، واحد مع
restricted
النهج والآخر مع النهجbaseline
، باستخدامkubectl label
الأمر .kubectl label --overwrite ns test-restricted pod-security.kubernetes.io/enforce=restricted pod-security.kubernetes.io/warn=restricted kubectl label --overwrite ns test-privileged pod-security.kubernetes.io/enforce=privileged pod-security.kubernetes.io/warn=privileged
يقوم هذا بتكوين
test-restricted
مساحات الأسماء وtest-privileged
لحظر تشغيل الحجيرات وإنشاء تحذير مواجه للمستخدم إذا كانت أي pods لا تفي بمحاولة تشغيل النهج المكونة.حاول نشر pods إلى
test-restricted
مساحة الاسم باستخدامkubectl apply
الأمر . ينتج عن هذا الأمر خطأ لأنهtest-restricted
تم تكوين مساحة الاسم لحظر الحجيرات التي لا تفي بالنهجrestricted
.kubectl apply --namespace test-restricted -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
يظهر إخراج المثال التالي تحذيرا يفيد بأن الحجيرات تنتهك النهج المكون:
... Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "azure-vote-back" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "azure-vote-back" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "azure-vote-back" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "azure-vote-back" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") deployment.apps/azure-vote-back created service/azure-vote-back created Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "azure-vote-front" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "azure-vote-front" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "azure-vote-front" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "azure-vote-front" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") deployment.apps/azure-vote-front created service/azure-vote-front created
تأكد من عدم وجود pods قيد التشغيل في
test-restricted
مساحة الاسم باستخدامkubectl get pods
الأمر .kubectl get pods --namespace test-restricted
يظهر إخراج المثال التالي أي جرابات قيد التشغيل في
test-restricted
مساحة الاسم:No resources found in test-restricted namespace.
حاول نشر pods إلى
test-privileged
مساحة الاسم باستخدامkubectl apply
الأمر . هذه المرة، يجب نشر pods بنجاح لأنهtest-privileged
تم تكوين مساحة الاسم للسماح بوحدات الجراب التي تنتهك النهجprivileged
.kubectl apply --namespace test-privileged -f https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/azure-vote-all-in-one-redis.yaml
يظهر إخراج المثال التالي وحدات الجراب التي تم نشرها بنجاح:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/azure-vote-front created service/azure-vote-front created
تأكد من أن لديك pods قيد التشغيل في
test-privileged
مساحة الاسم باستخدامkubectl get pods
الأمر .kubectl get pods --namespace test-privileged
يظهر إخراج المثال التالي جرابين قيد التشغيل في
test-privileged
مساحة الاسم:NAME READY STATUS RESTARTS AGE azure-vote-back-6fcdc5cbd5-svbdf 1/1 Running 0 2m29s azure-vote-front-5f4b8d498-tqzwv 1/1 Running 0 2m28s
قم بإزالة
test-restricted
مساحات الأسماء وtest-privileged
باستخدامkubectl delete
الأمر .kubectl delete namespace test-restricted test-privileged
الخطوات التالية
في هذه المقالة، تعلمت كيفية تمكين Pod Security Admission من نظام مجموعة AKS. لمزيد من المعلومات حول قبول أمان Pod، راجع فرض معايير أمان Pod باستخدام تسميات مساحة الاسم. لمزيد من المعلومات حول معايير أمان Pod المستخدمة من قبل قبول أمان Pod، راجع معايير أمان Pod.
Azure Kubernetes Service