إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يوفر مزود Azure Key Vault لبرنامج تشغيل واجهة تخزين حاوية Secrets Store (CSI) بدمج مخزن مفتاح Azure كمخزن سري مع عنقود Azure Kubernetes Service (AKS) عبر وحدة تخزين CSI.
الميزات
- تحميل البيانات السرية والمفاتيح والشهادات إلى جراب باستخدام وحدة تخزين CSI.
- يدعم وحدات التخزين المضمنة ل CSI.
- يدعم تحميل عدة أسرار تخزين الكائنات كحجم واحد.
- يدعم قابلية نقل البودات مع تعريف
SecretProviderClassالموارد المخصص (CRD). - يدعم حاويات Windows.
- تتم المزامنة مع أسرار Kubernetes.
- يدعم التشغيل التلقائي للمحتويات المثبتة وأسرار Kubernetes المتزامنة.
القيود
- الحاوية التي تستخدم أو
ConfigMapSecretكحاملsubPathحجم لا تتلقى تحديثات تلقائية عند تدوير السر، وهذا حد من قيود كوبيرنيتس. لكي تسري التغييرات، يحتاج التطبيق إلى إعادة تحميل الملف الذي تم تغييره إما عن طريق مراقبة التغييرات في نظام الملفات أو عن طريق إعادة تشغيل الجراب. لمزيد من المعلومات، راجع قيود Secrets Store CSI Driver المعروفة. - تقوم الإضافة بإنشاء هوية مدارة تسمى
azurekeyvaultsecretsprovider-xxxxxفي مجموعة موارد العقدة (MC_) وتعيينها تلقائيا إلى مجموعة مقياس الآلة الافتراضية. يمكنك استخدام هذه الهوية المدارة أو الهوية المدارة الخاصة بك للوصول إلى مخزن المفاتيح. لا يتم دعم منع إنشاء الهوية.
المتطلبات الأساسية
- في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
- تحقق من أن إصدار Azure CLI الخاص بك هو 2.30.0 أو أحدث. إذا كان إصداراً سابقاً، فثبّت أحدث إصدار.
الشبكة
- عند استخدام عناقيد معزولة في الشبكة، التوصية هي إعداد نقطة نهاية خاصة للوصول إلى Azure Key Vault.
- إذا كان نظام المجموعة يحتوي على نوع
userDefinedRoutingصادر ويستخدم جهاز جدار حماية يمكنه التحكم في نسبة استخدام الشبكة الصادرة استنادا إلى أسماء المجالات، مثل Azure Firewall، فتأكد من السماح بقواعد الشبكة الصادرة المطلوبة وFQDNs. - إذا كنت تقيد الدخول إلى نظام المجموعة، فتأكد من فتح المنفذين 9808 و8095.
الأدوار
- تستخدم هذه المقالة دور مسؤول أسرار خزنة المفاتيح لمنح حسابك إذنا لإنشاء سر في خزنة المفاتيح.
- في المقالة لتوفير الوصول إلى خزنة مفاتيح Azure، تحتاج الهوية المستخدمة مع
SecretProviderClassمستخدم شهادة خزنة المفاتيح للوصولkeyإلى أنواع الكائناتcertificateومستخدم أسرار خزنة المفاتيح للوصولsecretإلى نوع الكائن.
إنشاء أو تحديث عنقود AKS
إنشاء عنقود AKS مع مزود Azure Key Vault لدعم برنامج تشغيل CSI في Secrets Store.
أنشئ متغيرات تستخدم في الأوامر لإنشاء عنقود AKS وخزنة المفاتيح.
export RANDOM_STRING=$(printf '%05d%05d' "$RANDOM" "$RANDOM") export KEYVAULT_NAME=myKeyVault${RANDOM_STRING} export RESOURCE_GROUP=myResourceGroup export CLUSTER_NAME=myAKSCluster export LOCATION=eastus2يجب أن تكون أسماء خزنة مفاتيح Azure فريدة عالميا، أبجدية رقمية تشمل الشرطات، وتحتوي على 3-24 حرفا. اسم خزنة المفاتيح يربط قيمة المتغير
KEYVAULT_NAMEmyKeyVaultبسلسلةRANDOM_STRINGالمتغيرات المكونة من 10 أحرف.إنشاء مجموعة موارد Azure باستخدام
az group createالأمر .az group create --name $RESOURCE_GROUP --location $LOCATIONإنشاء نظام مجموعة AKS مع موفر Azure Key Vault لإمكانية Secrets Store CSI Driver باستخدام
az aks createالأمر مع المعلمة--enable-addons azure-keyvault-secrets-provider.ينشئ هذا
--enable-addonsالمعامل هوية مدارة معينة من قبل المستخدم تسمىazurekeyvaultsecretsprovider-xxxxيمكنك استخدامها للمصادقة على خزنة مفاتيحك. يتم تخزين الهوية المدارة في مجموعة موارد العقد (MC_) ويتم تعيينها تلقائيا لمجموعة مقياس الآلة الافتراضية. يمكنك استخدام هذه الهوية المدارة أو الهوية المدارة الخاصة بك للوصول إلى مخزن المفاتيح. لا يتم دعم منع إنشاء الهوية.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --enable-addons azure-keyvault-secrets-provider \ --generate-ssh-keysنصيحة
إذا كنت تريد استخدام معرف Microsoft Entra Workload ID، يجب أن
az aks createيتضمن الأمر ال و--enable-oidc-issuer--enable-workload-identityالمعلمات.
تحقق من الهوية المدارة
استخدم الخطوات التالية للتحقق من إنشاء الهوية المدارة وتعيينها لمجموعة مقياس الآلة الافتراضية في العنقود.
تحقق من إنشاء الهوية المدارة وتعيينها للعنقود باستخدام
az aks showالأمر.az aks show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --query addonProfiles{ "azureKeyvaultSecretsProvider": { "config": { "enableSecretRotation": "false", "rotationPollInterval": "2m" }, "enabled": true, "identity": { "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "resourceId": "/subscriptions/<subscriptionID>/resourcegroups/MC_myResourceGroup_myAKSCluster_eastus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/azurekeyvaultsecretsprovider-myakscluster" } } }تظهر الخاصية
resourceIdمجموعة الموارد واسمazurekeyvaultsecretsprovider-myaksclusterالهوية .تحقق من أن الهوية المدارة معينة لمجموعة مقياس الآلة الافتراضية في مجموعة موارد العقدة.
NODE_RG=$(az aks show \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --query nodeResourceGroup --output tsv) VMSS_NAME=$(az vmss list \ --resource-group $NODE_RG \ --query [].name --output tsv) az vmss show --name $VMSS_NAME --resource-group $NODE_RG --query '[id, identity]'يظهر الناتج معرف الموارد لمجموعات
Microsoft.Compute/virtualMachineScaleSetsمقياس الآلات الافتراضية والخاصيةuserAssignedIdentitiesالتي تحتوي على معرف مورد يؤكدazurekeyvaultsecretsprovider-myaksclusterأن الهوية مخصصة لمجموعة مقياس الآلة الافتراضية.
تحقق من موفر Azure Key Vault لتثبيت Secrets Store CSI Driver
احصل على بيانات اعتماد نظام مجموعة AKS باستخدام
az aks get-credentialsالأمر .az aks get-credentials \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUPتحقق من انتهاء التثبيت باستخدام
kubectl get podsالأمر، الذي يسرد جميع الكبسولات مع التسمياتsecrets-store-csi-driverوsecrets-store-provider-azure/وعلامات فيkube-systemمساحة الأسماء.kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)' -o wideتتضمن العلامة
o wideالعقدة التي يعمل عليها كل وحدة في المخرج.يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:
NAME READY STATUS RESTARTS AGE NODE aks-secrets-store-csi-driver-4vpkj 3/3 Running 2 4m25s aks-nodepool1-12345678-vmss000002 aks-secrets-store-csi-driver-ctjq6 3/3 Running 2 4m21s aks-nodepool1-12345678-vmss000001 aks-secrets-store-csi-driver-tlvlq 3/3 Running 2 4m24s aks-nodepool1-12345678-vmss000000 aks-secrets-store-provider-azure-5p4nb 1/1 Running 0 4m21s aks-nodepool1-12345678-vmss000000 aks-secrets-store-provider-azure-6pqmv 1/1 Running 0 4m24s aks-nodepool1-12345678-vmss000001 aks-secrets-store-provider-azure-f5qlm 1/1 Running 0 4m25s aks-nodepool1-12345678-vmss000002
قم بإنشاء أو استخدام Azure Key Vault الموجود
إنشاء أو تحديث مخزن مفاتيح مع تمكين التحكم في الوصول استنادا إلى الدور Azure (Azure RBAC) باستخدام az keyvault create الأمر أو az keyvault update الأمر مع العلامة --enable-rbac-authorization .
Azure RBAC مفعل افتراضيا عند إنشاء خزنة مفاتيح جديدة حتى لو لم تتضمن المعاملة --enable-rbac-authorization . المعامل ضروري عند تحديث خزنة مفاتيح موجودة تم تعطيل Azure RBAC.
لمزيد من المعلومات حول نماذج أذونات خزنة المفاتيح وAzure RBAC، راجع توفير الوصول إلى مفاتيح خزنة المفاتيح والشهادات والأسرار مع تحكم وصول قائم على أدوار Azure
تمكين تفويض Azure RBAC لخزنة مفاتيح جديدة أو تحديث خزنة مفاتيح موجودة.
شغل الأمر
az keyvault createلإنشاء خزنة مفاتيح جديدة مع تفعيل Azure RBAC.az keyvault create \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --enable-rbac-authorizationشغل الأمر
az keyvault showللتحقق من أن خزنة المفاتيح مفعلة في Azure RBAC.az keyvault show \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.enableRbacAuthorizationيجب أن يكون
trueالناتج هو .أضف تعيين دور لحساب المستخدم الخاص بك إلى نطاق خزنة المفاتيح باستخدام
az role assignment createالأمر حتى تتمكن من إضافة سر خزنة المفاتيح في الخطوة التالية.تمت إضافة دور ضابط أسرار خزنة المفاتيح مع معرف
b86a8fe4-44ce-4948-aee5-eccb2c155cd7فريد ويمكنك استخدام الاسم أو المعرف الفريد. استخدام معرف الدور الفريد هو ممارسة مثلى لمنع حدوث مشاكل إذا تغير اسم الدور.KEYVAULT_ID=$(az keyvault show \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --query id -o tsv) MYID=$(az ad signed-in-user show --query id --output tsv) az role assignment create \ --assignee-object-id $MYID \ --role "b86a8fe4-44ce-4948-aee5-eccb2c155cd7" \ --scope $KEYVAULT_ID \ --assignee-principal-type Userقد يستغرق الأمر عدة دقائق حتى يبدأ تفعيل تعيين الدور. يمكنك التحقق من إنشاء تعيين الدور باستخدام الأمر التالي:
az role assignment list \ --assignee-object-id $MYID \ --scope $KEYVAULT_ID \ --query '[].{Role:roleDefinitionName, Scope:scope}' \ --output tableأنشئ سريا نصيا مسماة
ExampleSecretفي خزنة المفاتيح باستخدام الأمرaz keyvault secret set.يمكن لمخزن المفاتيح تخزين المفاتيح والأسرار والشهادات. يستخدم المعامل
valueالمتغيرRANDOM_STRINGلإنشاء قيمة فريدة للسر.az keyvault secret set \ --vault-name $KEYVAULT_NAME \ --name ExampleSecret \ --value MyAKSExampleSecret${RANDOM_STRING}تحقق من إضافة السر إلى خزنة المفاتيح باستخدام
az keyvault secret showالأمر.az keyvault secret show --vault-name $KEYVAULT_NAME --name ExampleSecret
تنظيف الموارد
إذا كنت ذاهبا إلى المقالة التالية وتحتاج إلى هذه الموارد، تجاهل الخطوات التالية. وإلا، إذا انتهيت ولم تكن تخطط للمتابعة إلى المقال التالي، يجب عليك حذف الموارد التي تم إنشاؤها في هذا المقال لتجنب التكاليف غير الضرورية.
قم بإزالة بيانات اعتماد العنقود من ملف .kube/config المحلي.
KUBE_CONTEXT=$(kubectl config current-context) kubectl config delete-context $KUBE_CONTEXTاحذف مجموعة الموارد وجميع الموارد داخلها، بما في ذلك الموارد في مجموعة موارد العقدة (
MC_) باستخدامaz group deleteالأمر.az group delete --name $RESOURCE_GROUP --yes --no-wait
الخطوات التالية
في هذه المقالة، تعلمت كيفية استخدام موفر Azure Key Vault لبرنامج تشغيل CSI مخزن الأسرار في نظام مجموعة AKS. تحتاج الآن إلى توفير هوية للوصول إلى Azure Key Vault. لمعرفة كيفية إجراء ذلك، تابع إلى المقالة التالية.