ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
أفضل طريقة للمصادقة على خدمات Azure هي باستخدام هوية مدارة، ولكن هناك بعض السيناريوهات التي لا يكون فيها ذلك خيارا. في هذه الحالات، يتم استخدام مفاتيح الوصول أو كلمات المرور. يجب تدوير مفاتيح الاختصار وكلمات المرور بشكل متكرر.
يوضح هذا البرنامج التعليمي كيفية أتمتة التدوير الدوري للبيانات السرية لقواعد البيانات والخدمات التي تستخدم مجموعتين من بيانات اعتماد المصادقة. للحصول على نظرة عامة شاملة على مفاهيم وفوائد التشغيل التلقائي عبر أنواع الأصول المختلفة، راجع فهم التشغيل التلقائي في Azure Key Vault.
على وجه التحديد، يوضح هذا البرنامج التعليمي كيفية تدوير مفاتيح حساب Azure Storage المخزنة في Azure Key Vault كأسرار. ستستخدم دالة تم تشغيلها بواسطة إعلام Azure Event Grid.
ملاحظة
بالنسبة لخدمات حساب التخزين، يوصى باستخدام معرف Microsoft Entra لتخويل الطلبات. لمزيد من المعلومات، راجع تخويل الوصول إلى الكائنات الثنائية كبيرة الحجم باستخدام معرف Microsoft Entra. هناك خدمات تتطلب سلاسل اتصال حساب التخزين مع مفاتيح الوصول. لهذا السيناريو، نوصي بهذا الحل.
إليك حل التدوير الموضح في هذا البرنامج التعليمي:
في هذا الحل، يخزن Azure Key Vault مفاتيح الوصول الفردية لحساب التخزين كإصدارات من نفس السر، بالتناوب بين المفتاح الأساسي والثانوي في الإصدارات اللاحقة. عند تخزين مفتاح وصول واحد في أحدث إصدار من السر، تتم إعادة إنشاء المفتاح البديل وإضافته إلى Key Vault كإصدار جديد من السر. يوفر الحل دورة الاستدارة بأكملها للتطبيق للتحديث إلى أحدث مفتاح تم تجديده.
- قبل ثلاثين يوما من تاريخ انتهاء صلاحية البيانات السرية، ينشر Key Vault حدث انتهاء الصلاحية القريب إلى Event Grid.
- تتحقق Event Grid من اشتراكات الحدث وتستخدم HTTP POST لاستدعاء نقطة نهاية تطبيق الوظائف المشتركة في الحدث.
- يحدد تطبيق الوظائف المفتاح البديل (وليس الأخير) ويستدعي حساب التخزين لإعادة إنشائه.
- يضيف تطبيق الدالة المفتاح الجديد الذي تم تجديده إلى Azure Key Vault كإصدار جديد من السر.
المتطلبات
- اشتراك Azure. أنشئ حسابًا مجانًا.
- Azure Cloud Shell. يستخدم هذا البرنامج التعليمي مدخل Cloud Shell مع PowerShell env
- Azure Key Vault.
- حسابا تخزين Azure.
ملاحظة
يبطل تدوير مفتاح حساب التخزين المشترك توقيع الوصول المشترك على مستوى الحساب (SAS) الذي تم إنشاؤه استنادا إلى هذا المفتاح. بعد تدوير مفتاح حساب التخزين، يجب إعادة إنشاء رموز SAS المميزة على مستوى الحساب لتجنب تعطيل التطبيقات.
يمكنك استخدام ارتباط النشر هذا إذا لم يكن لديك مخزن مفاتيح موجود وحسابات تخزين موجودة:
ضمن Resource group، اختر Create new. قم بتسمية دوران مخزن المجموعة ثم حدد موافق.
حدد "Review + create".
حدد إنشاء.
سيكون لديك الآن key vault واثنين من حسابات التخزين. يمكنك التحقق من هذا الإعداد في Azure CLI أو Azure PowerShell عن طريق تشغيل هذا الأمر:
- Azure CLI
- Azure PowerShell
az resource list -o table -g vaultrotation
ستبدو النتيجة مشابهة لهذا الإخراج:
Name ResourceGroup Location Type Status
----------------------- -------------------- ---------- --------------------------------- --------
vaultrotation-kv vaultrotation westus Microsoft.KeyVault/vaults
vaultrotationstorage vaultrotation westus Microsoft.Storage/storageAccounts
vaultrotationstorage2 vaultrotation westus Microsoft.Storage/storageAccounts
إنشاء وظيفة تدوير المفتاح ونشرها
بعد ذلك، ستقوم بإنشاء تطبيق وظائف بهوية مدارة من قبل النظام، بالإضافة إلى المكونات المطلوبة الأخرى. ستقوم أيضا بنشر وظيفة التدوير لمفاتيح حساب التخزين.
تتطلب وظيفة دوران تطبيق الدالة المكونات والتكوين التاليين:
- خطة Azure App Service
- حساب تخزين لإدارة مشغلات تطبيق الوظائف
- نهج وصول للوصول إلى الأسرار في Key Vault
- دور Storage Account Key Operator Service المعين لتطبيق الوظائف حتى يتمكن من الوصول إلى مفاتيح الوصول إلى حساب التخزين
- دالة تدوير المفتاح مع مشغل حدث ومشغل HTTP (تدوير عند الطلب)
- اشتراك حدث Event Grid لحدث SecretNearExpiry
حدد ارتباط توزيع قالب Azure:
في قائمة Resource group ، حدد vaultrotation.
في المربع Storage Account RG ، أدخل اسم مجموعة الموارد التي يوجد بها حساب التخزين الخاص بك. احتفظ بالقيمة الافتراضية [resourceGroup().name] إذا كان حساب التخزين الخاص بك موجودا بالفعل في نفس مجموعة الموارد حيث ستقوم بنشر دالة تدوير المفتاح.
في المربع اسم حساب التخزين ، أدخل اسم حساب التخزين الذي يحتوي على مفاتيح الوصول للتدوير. احتفظ بالقيمة الافتراضية [concat(resourceGroup().name, 'storage')] إذا كنت تستخدم حساب التخزين الذي تم إنشاؤه في المتطلبات الأساسية.
في المربع Key Vault RG ، أدخل اسم مجموعة الموارد التي يوجد بها مخزن المفاتيح الخاص بك. احتفظ بالقيمة الافتراضية [resourceGroup().name] إذا كان مخزن المفاتيح موجودا بالفعل في نفس مجموعة الموارد حيث ستقوم بنشر دالة تدوير المفتاح.
في المربع Key Vault Name ، أدخل اسم key vault. احتفظ بالقيمة الافتراضية [concat(resourceGroup().name, '-kv')] إذا كنت تستخدم مخزن المفاتيح الذي تم إنشاؤه في المتطلبات الأساسية.
في المربع نوع خطة خدمة التطبيقات ، حدد خطة الاستضافة. الخطة المتميزة مطلوبة فقط عندما يكون مخزن المفاتيح خلف جدار الحماية.
في المربع Function App Name ، أدخل اسم تطبيق الوظائف.
في المربع اسم السر ، أدخل اسم السر حيث ستقوم بتخزين مفاتيح الوصول.
في مربع Repo URL ، أدخل موقع GitHub للتعليمات البرمجية للدالة. في هذا البرنامج التعليمي، يمكنك استخدام https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git .
حدد "Review + create".
حدد إنشاء.
بعد إكمال الخطوات السابقة، سيكون لديك حساب تخزين ومزرعة خوادم وتطبيق وظائف وApplication Insights. عند اكتمال النشر، سترى هذه الصفحة:
ملاحظة
إذا واجهت فشلا، يمكنك تحديد إعادة النشر لإنهاء نشر المكونات.
يمكنك العثور على قوالب النشر والرمز لدالة التدوير في نماذج Azure.
إضافة مفاتيح الوصول إلى حساب التخزين إلى أسرار Key Vault
أولا، قم بتعيين نهج الوصول الخاص بك لمنح أذونات إدارة البيانات السرية لمدير المستخدم الخاص بك:
- Azure CLI
- Azure PowerShell
az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list
يمكنك الآن إنشاء سر جديد باستخدام مفتاح الوصول إلى حساب التخزين كقيمة له. ستحتاج أيضا إلى معرف مورد حساب التخزين وفترة الصلاحية السرية ومعرف المفتاح لإضافته إلى السر حتى تتمكن وظيفة التدوير من إعادة إنشاء المفتاح في حساب التخزين.
حدد معرف مورد حساب التخزين. يمكنك العثور على هذه القيمة في الخاصية id
.
- Azure CLI
- Azure PowerShell
az storage account show -n vaultrotationstorage
سرد مفاتيح الوصول إلى حساب التخزين حتى تتمكن من الحصول على قيم المفاتيح:
- Azure CLI
- Azure PowerShell
az storage account keys list -n vaultrotationstorage
أضف بيانات سرية إلى key vault مع فترة صلاحية لمدة 60 يوما، ومعرف مورد حساب التخزين، ولأغراض العرض التوضيحي لتشغيل التدوير، قم بتعيين تاريخ انتهاء الصلاحية على الفور إلى الغد. قم بتشغيل هذا الأمر، باستخدام القيم التي تم استردادها ل key1Value
و storageAccountResourceId
:
- Azure CLI
- Azure PowerShell
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey --vault-name vaultrotation-kv --value <key1Value> --tags "CredentialId=key1" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
سيؤدي هذا السر إلى تشغيل SecretNearExpiry
الحدث في غضون عدة دقائق. سيؤدي هذا الحدث بدوره إلى تشغيل الدالة لتدوير السر مع تعيين انتهاء الصلاحية إلى 60 يوما. في هذا التكوين، سيتم تشغيل حدث "SecretNearExpiry" كل 30 يوما (30 يوما قبل انتهاء الصلاحية) وستتناوب وظيفة التدوير بين key1 وkey2.
يمكنك التحقق من إعادة إنشاء مفاتيح الوصول عن طريق استرداد مفتاح حساب التخزين وسر Key Vault ومقارنتها.
استخدم هذا الأمر للحصول على المعلومات السرية:
- Azure CLI
- Azure PowerShell
az keyvault secret show --vault-name vaultrotation-kv --name storageKey
لاحظ أنه CredentialId
تم تحديثه إلى البديل keyName
ويتم value
إعادة إنشائه:
استرداد مفاتيح الوصول لمقارنة القيم:
- Azure CLI
- Azure PowerShell
az storage account keys list -n vaultrotationstorage
لاحظ أن value
المفتاح هو نفس السر في key vault:
استخدام دالة التدوير الموجودة لحسابات تخزين متعددة
يمكنك إعادة استخدام نفس تطبيق الوظائف لتدوير المفاتيح لحسابات تخزين متعددة.
لإضافة مفاتيح حساب التخزين إلى دالة موجودة للتناوب، تحتاج إلى:
- دور Storage Account Key Operator Service المعين لتطبيق الوظائف حتى يتمكن من الوصول إلى مفاتيح الوصول إلى حساب التخزين.
- اشتراك حدث Event Grid لحدث SecretNearExpiry .
حدد ارتباط توزيع قالب Azure:
في قائمة Resource group ، حدد vaultrotation.
في المربع Storage Account RG ، أدخل اسم مجموعة الموارد التي يوجد بها حساب التخزين الخاص بك. احتفظ بالقيمة الافتراضية [resourceGroup().name] إذا كان حساب التخزين الخاص بك موجودا بالفعل في نفس مجموعة الموارد حيث ستقوم بنشر دالة تدوير المفتاح.
في المربع اسم حساب التخزين ، أدخل اسم حساب التخزين الذي يحتوي على مفاتيح الوصول للتدوير.
في المربع Key Vault RG ، أدخل اسم مجموعة الموارد التي يوجد بها مخزن المفاتيح الخاص بك. احتفظ بالقيمة الافتراضية [resourceGroup().name] إذا كان مخزن المفاتيح موجودا بالفعل في نفس مجموعة الموارد حيث ستقوم بنشر دالة تدوير المفتاح.
في المربع Key Vault Name ، أدخل اسم key vault.
في المربع Function App Name ، أدخل اسم تطبيق الوظائف.
في المربع اسم السر ، أدخل اسم السر حيث ستقوم بتخزين مفاتيح الوصول.
حدد "Review + create".
حدد إنشاء.
إضافة مفتاح الوصول إلى حساب التخزين إلى أسرار Key Vault
حدد معرف مورد حساب التخزين. يمكنك العثور على هذه القيمة في الخاصية id
.
- Azure CLI
- Azure PowerShell
az storage account show -n vaultrotationstorage2
سرد مفاتيح الوصول إلى حساب التخزين حتى تتمكن من الحصول على قيمة key2:
- Azure CLI
- Azure PowerShell
az storage account keys list -n vaultrotationstorage2
أضف بيانات سرية إلى key vault مع فترة صلاحية لمدة 60 يوما، ومعرف مورد حساب التخزين، ولأغراض العرض التوضيحي لتشغيل التدوير، قم بتعيين تاريخ انتهاء الصلاحية على الفور إلى الغد. قم بتشغيل هذا الأمر، باستخدام القيم التي تم استردادها ل key2Value
و storageAccountResourceId
:
- Azure CLI
- Azure PowerShell
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey2 --vault-name vaultrotation-kv --value <key2Value> --tags "CredentialId=key2" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
استخدم هذا الأمر للحصول على المعلومات السرية:
- Azure CLI
- Azure PowerShell
az keyvault secret show --vault-name vaultrotation-kv --name storageKey2
لاحظ أنه CredentialId
تم تحديثه إلى البديل keyName
ويتم value
إعادة إنشائه:
استرداد مفاتيح الوصول لمقارنة القيم:
- Azure CLI
- Azure PowerShell
az storage account keys list -n vaultrotationstorage
لاحظ أن value
المفتاح هو نفس السر في key vault:
تعطيل التدوير للبيانات السرية
يمكنك تعطيل تدوير البيانات السرية ببساطة عن طريق حذف اشتراك Event Grid لهذا السر. استخدم الأمر Azure PowerShell Remove-AzEventGridSubscription cmdlet أو حدث Azure CLI az event grid--subscription delete .
وظائف تدوير Key Vault لمجموعتين من بيانات الاعتماد
قالب دوال التدوير لمجموعتين من بيانات الاعتماد والعديد من الوظائف الجاهزة للاستخدام:
- قالب المشروع
- ذاكرة التخزين المؤقت ل Redis
- حساب التخزين
- Azure Cosmos DB
ملاحظة
يتم إنشاء دالات التدوير هذه من قبل عضو في المجتمع وليس من قبل Microsoft. وظائف المجتمع غير مدعومة ضمن أي برنامج أو خدمة دعم Microsoft، ويتم توفيرها AS IS دون ضمان من أي نوع.