إدارة الأسرار والشهادات باستخدام Azure Key Vault
14/08/2024
تهدف هذه المقالة الفنية والتعليمية إلى توجيه محللي الأمان ومسؤولي تكنولوجيا المعلومات ومهندسي الأنظمة لاستخدام Azure Key Vault لإدارة الأسرار (مثل كلمات المرور ومفاتيح API وسلاسل الاتصال) والشهادات (SSL/TLS) بشكل آمن. Azure Key Vault هي خدمة سحابية توفر حلاً مركزيًا وآمنًا لتخزين هذه العناصر المهمة والوصول إليها، مما يلغي الحاجة إلى تضمينها مباشرة في التعليمات البرمجية أو ملفات التكوين، وهي ممارسة أمنية سيئة [1].
مقدمة
في تطوير وتشغيل التطبيقات الحديثة، تمثل إدارة الأسرار والشهادات تحديًا مستمرًا. تعد بيانات اعتماد قاعدة البيانات، ومفاتيح واجهة برمجة التطبيقات (API) لخدمة الطرف الثالث، ومفاتيح التشفير، وشهادات SSL/TLS أصولًا حساسة، إذا تم اختراقها، فقد تؤدي إلى انتهاكات خطيرة للبيانات. إن تخزينها بشكل غير آمن، كما هو الحال في ملفات نصية عادية، أو متغيرات البيئة، أو مباشرة في التعليمات البرمجية المصدر، يشكل خطرًا كبيرًا. تم تصميم Azure Key Vault لحل هذه المشكلات من خلال توفير مستودع آمن قائم على الأجهزة (HSM) لحماية هذه الأصول، والتحكم بإحكام في الوصول وتبسيط إدارة دورة الحياة [2].
سيغطي هذا الدليل الإرشادي إنشاء Azure Key Vault، وإضافة الأسرار والشهادات واستردادها، وتكوين سياسات الوصول، والتكامل مع خدمات Azure الأخرى مثل Azure App Service. سيتم توفير إرشادات خطوة بخطوة، مثل أوامر Azure CLI، وطرق التحقق من الصحة حتى يتمكن القارئ من تنفيذ إدارة آمنة للأسرار والشهادات، وتعزيز الوضع الأمني لتطبيقاته والبنية التحتية السحابية.
ما سبب أهمية Azure Key Vault؟
- التخزين الآمن: يحمي الأسرار ومفاتيح التشفير باستخدام وحدات أمان الأجهزة (HSMs) المعتمدة من المستوى 2 FIPS 140-2.
- التحكم المركزي في الوصول: يتيح لك إدارة أذونات الوصول إلى الأسرار والشهادات على مستوى دقيق باستخدام التحكم في الوصول المستند إلى دور Azure (RBAC) أو سياسات الوصول إلى Key Vault.
- إدارة دورة الحياة: تسهل عملية تدوير الأسرار والشهادات وانتهاء الصلاحية التلقائي وإخطار الأحداث.
- تقليل المخاطر: يلغي الحاجة إلى تخزين بيانات الاعتماد في التعليمات البرمجية أو ملفات التكوين، مما يقلل من مخاطر التسرب.
- المراقبة والتدقيق: تسجل جميع العمليات التي يتم إجراؤها في Key Vault، مما يوفر مسارات تدقيق لتحقيقات الامتثال والأمن.
- التكامل المبسط: يتكامل بسهولة مع خدمات Azure الأخرى، مثل Azure App Service وAzure Functions وAzure Virtual Machines وAzure DevOps.
المتطلبات الأساسية
لاستخدام Azure Key Vault، ستحتاج إلى العناصر التالية:
- اشتراك Azure النشط: اشتراك Azure لإنشاء الموارد وإدارتها.
- الوصول الإداري: حساب بدور "المالك" أو "المساهم" في اشتراك Azure، أو دور مخصص له أذونات لإنشاء Key Vaults وإدارتها.
- Azure CLI أو Azure PowerShell: أدوات سطر الأوامر المثبتة والمكونة للتفاعل مع Azure.
- اختياري: Visual Studio Code: لاختبار التطوير والتكامل.
خطوة بخطوة: إدارة الأسرار والشهادات باستخدام Azure Key Vault
لنقم بإنشاء Key Vault، وإضافة سر وشهادة، وتكوين الوصول.
1. إنشاء Azure Key Vault
لنقم بإنشاء Key Vault باستخدام Azure CLI. يمكنك أيضًا استخدام بوابة Azure.
- افتح جهازك الطرفي أو PowerShell وقم بتسجيل الدخول إلى Azure:
باش تسجيل الدخول من الألف إلى الياء -
قم بإنشاء مجموعة موارد (إذا لم يكن لديك واحدة بالفعل):
باش إنشاء مجموعة من الألف إلى الياء --اسم RG-KeyVault-Artigos --موقع eastus -
قم بإنشاء Azure Key Vault. اختر اسمًا فريدًا عالميًا لـ Key Vault الخاص بك.
باش إنشاء az keyvault --اسم kv-artigos-seguranca-01 --resource-group RG-KeyVault-Artigos --location eastus --enabled-for-template-deployment صحيح--enabled-for-template-deployment true: يسمح باستخدام Key Vault لنشر القوالب، وهو مفيد للأتمتة.
2. إضافة سر إلى Key Vault
دعونا نضيف كلمة مرور قاعدة البيانات باعتبارها سراال.
-
أضف سرًا يسمى "DatabasePassword" مع قيمة مثال:
باش مجموعة سرية az keyvault --vault-name kv-artigos-seguranca-01 --name DatabasePassword --value "S3cur3P@ssw0rd!" -
استرجاع السر للتأكد من تخزينه بشكل صحيح:
باش عرض سري من az keyvault --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv
3. إضافة شهادة إلى Key Vault
دعونا نضيف شهادة موقعة ذاتيا لأغراض العرض التوضيحي. في الإنتاج، يمكنك استخدام شهادات من مرجع مصدق موثوق به.
-
قم بإنشاء شهادة موقعة ذاتيًا في Key Vault:
باش إنشاء شهادة az keyvault --vault-name kv-artigos-seguranca-01 --name MyWebAppCert --policy "$(سياسة الحصول على شهادة az keyvault)" -
التحقق من تفاصيل الشهادة:
باش عرض شهادة az keyvault --vault-name kv-artigos-seguranca-01 --name MyWebAppCert
4. تكوين سياسات الوصول
للسماح للتطبيقات أو المستخدمين بالوصول إلى الأسرار والشهادات، تحتاج إلى تكوين سياسات الوصول. دعونا نستخدم التحكم في الوصول المستند إلى الأدوار في Azure (RBAC).
- احصل على "معرف الكائن" للتطبيق أو المستخدم الذي سيحتاج إلى الوصول. بالنسبة لتطبيق (رئيس الخدمة)، يمكنك الحصول عليه بعد تسجيله في Azure AD. بالنسبة للمستخدم، استخدم
az ad user show --id <user-principal-name> --query id -o tsv. - قم بتعيين دور لـ Key Vault الخاص بك. على سبيل المثال، للسماح لأحد التطبيقات بقراءة الأسرار:
باش # مثال: قم بتعيين دور "مستخدم أسرار Vault الرئيسية" لمدير الخدمة إنشاء تعيين دور من الألف إلى الياء - دور "مستخدم أسرار مفتاح Vault" - معرف الكائن <تطبيق الكائن/معرف المستخدم> -النطاق /الاشتراكات/<معرف الاشتراك الخاص بك>/resourceGroups/RG-KeyVault-Artigos/providers/Microsoft.KeyVault/vaults/kv-artigos-seguranca-01- نصيحة: بالنسبة للشهادات، يمكنك استخدام وظيفة
Key Vault Certified User.
- نصيحة: بالنسبة للشهادات، يمكنك استخدام وظيفة
5. التكامل مع خدمة تطبيق Azure (مثال)
دعونا نوضح كيف يمكن لأحد التطبيقات أن يستهلك سرًا من Key Vault.
- قم بإنشاء خدمة تطبيق Azure (إذا لم يكن لديك واحدة بالفعل):
باش إنشاء خطة خدمة التطبيقات من الألف إلى الياء --اسم AppServicePlan-Artigos --resource-group RG-KeyVault-Artigos --sku B1 --is-linux إنشاء تطبيق ويب من الألف إلى الياء - مجموعة الموارد RG-KeyVault-Artigos - خطة AppServicePlan-Artigos - اسم webapp-artigos-seguranca-01 -
تمكين الهوية المُدارة لخدمة التطبيق. يسمح هذا لخدمة التطبيقات بالمصادقة على Azure Key Vault دون بيانات اعتماد صريحة.
باش تعيين هوية تطبيق الويب من الألف إلى الياء - مجموعة الموارد RG-KeyVault-Artigos - اسم webapp-artigos-seguranca-01 -
امنح خدمة التطبيقات إذن الهوية المُدارة للوصول إلى السر في Key Vault. استخدم "principalId" الذي تم الحصول عليه في الخطوة السابقة.
باش az keyvault set-policy --name kv-artigos-seguranca-01 --object-id <principalManaged IdentityId> --قائمة الحصول على الأذونات السرية- نصيحة: لاستخدام RBAC، قم بتعيين دور
Key Vault Secrets UserإلىprincipalIdللهوية المُدارة.
- نصيحة: لاستخدام RBAC، قم بتعيين دور
-
قم بتكوين مرجع سري في خدمة التطبيقات. يسمح هذا للتطبيق بالوصول إلى السر كمتغير بيئة.
باش مجموعة إعدادات تطبيقات تكوين تطبيق الويب --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 --settings DatabasePassword = "@Microsoft.KeyVault (SecretUri=https://kv-artigos-seguranca-01.vault.azure.net/secrets/DatabasePassword/)" -
الآن، يمكن لتطبيقك (على سبيل المثال ASP.NET Core وNode.js) قراءة سر "DatabasePassword" كمتغير بيئة عادي، وستتولى Azure App Service استعادته من Key Vault بطريقة آمنة.
التحقق والاختبار
يتضمن التحقق من صحة إدارة السر والشهادات التحقق من أن الوصول مُنح فقط للكيانات المعتمدة وأنه يمكن استرجاع الأسرار بشكل صحيح.
1. اختبار الوصول إلى الأسرار عبر Azure CLI
-
حاول الوصول إلى السر باستخدام حساب ليس لديه أذونات:
باش تسجيل الدخول من الألف إلى الياء # تسجيل الدخول باستخدام حساب بدون أذونات عرض سري من az keyvault --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv- النتيجة المتوقعة: يجب أن يفشل الأمر مع ظهور خطأ "AuthorizationFailed".
-
حاول الوصول إلى السر باستخدام حساب لديه أذونات (مثل الحساب الذي أنشأ Key Vault أو الهوية المُدارة لخدمة التطبيقات إذا كنت تقوم بالاختبار من داخل التطبيق).
باش تسجيل الدخول من الألف إلى الياء # تسجيل الدخول باستخدام حساب لديه أذونات عرض سري من az keyvault --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv- النتيجة المتوقعة: يجب أن يقوم الأمر بإرجاع القيمة السرية.
2. اختبار الوصول إلى الشهادة
- التأكد من إمكانية إدراج الشهادة واسترجاعها من قبل جهة معتمدة.
باش قائمة شهادات az keyvault --vault-name kv-artigos-seguranca-01 عرض شهادة az keyvault --vault-name kv-artigos-seguranca-01 --name MyWebAppCert- النتيجة المتوقعة: يجب أن تعرض الأوامر تفاصيل الشهادة.
3. التحقق من سجلات تدقيق Key Vault
يتم تسجيل جميع العمليات في Key Vault ويمكن تدقيقها.
- في بوابة Azure، انتقل إلى Key Vault (
kv-articles-seguranca-01). - في جزء التنقل الأيمن، حدد سجلات الأنشطة.
- سيظهر لك سجل بجميع العمليات التي تم إجراؤها، بما في ذلك إنشاء الأسرار والشهادات ومحاولات الوصول.
نصائح أمنية وأفضل الممارسات
- مبدأ الامتياز الأقل: منح الأذونات الضرورية فقط (الحصول على، إدراج، تعيين، حذف) للأسرار والشهادات. تجنب منح الأذونات المفرطة.
- التناوب المنتظم للأسرار: تنفيذ عملية لتناوب الأسرار والشهادات بانتظام لتقليل مخاطر التسوية.
- الهويات المُدارة: استخدم الهويات المُدارة لموارد Azure (الهويات المُدارة) كلما أمكن ذلك للمصادقة على Key Vault، مما يلغي الحاجة إلى إدارة بيانات الاعتماد في التعليمات البرمجية الخاصة بك.
- سياسات الوصول التفصيلية: استخدم سياسات الوصول Key Vault أو Azure RBAC للتحكم في من يمكنه الوصول إلى ماذا. تفضل RBAC للتحكم بشكل أفضل.
- المراقبة والتنبيهات: قم بتكوين التنبيهات الخاصة بالأنشطة المشبوهة في Key Vault، مثل محاولات الوصول الفاشلة أو عمليات الحذف السرية.
- حماية الحذف والتطهير الناعم: قم بتمكين حماية الحذف والتطهير الناعم في Key Vault لمنع الفقدان العرضي أو الضار للأسرار والشهادات.
- النسخ الاحتياطي المنتظم: على الرغم من توفر Key Vault بشكل كبير، فكر في عمل نسخة احتياطية من أسرارك وشهاداتك، خاصة في سيناريوهات التعافي من الكوارث.
- انتهاء الصلاحية للأسرار: قم بتعيين تواريخ انتهاء الصلاحية للأسرار والشهادات لفرض التناوب وتجنب استخدام بيانات الاعتماد القديمة.
استكشاف الأخطاء وإصلاحها الشائعة
- خطأ في التفويض (403 محظور): تحقق من سياسات الوصول إلى Key Vault أو تعيينات دور RBAC للكيان الذي يحاول الوصول. تأكد من استخدام "معرف الكائن" أو "المعرف الرئيسي" الصحيح.
- لم يتم العثور على السر/الشهادة: تحقق من اسم السر/الشهادة واسم Key Vault. تأكد من وجود السر/الشهادة وأنه لم يتم حذفها أو انتهاء صلاحيتها.
- مشكلات تتعلق بالهويات المُدارة: تحقق من تمكين الهوية المُدارة لمورد Azure ومن منح الأذونات الصحيحة في Key Vault.
- زمن الوصول في عملية الاسترداد السري: في بعض الحالات، قد يكون هناك وقت استجابة بسيط في عملية استرداد الأسرار. تأكد من أن تطبيقك يتعامل مع هذا بشكل غير متزامن.
- أخطاء الاتصال: تحقق من إعدادات الشبكة الخاصة بالتطبيق أو الجهاز الظاهري. تأكد من عدم وجود جدران حماية أو مجموعات أمان للشبكة تمنع الوصول إلى Key Vault.
الخلاصة
تعد Azure Key Vault خدمة مهمة لأي مؤسسة تتطلع إلى حماية أصولها الرقمية الأكثر حساسية في السحابة. من خلال مركزية إدارة الأسرار والشهادات في مستودع آمن ومتوفر للغاية، فإنه يبسط الامتثال ويقلل من مخاطر اختراق البيانات ويحسن الوضع الأمني العام لديك. يتيح التنفيذ الفعال لـ Azure Key Vault، إلى جانب أفضل ممارسات الأمان والأتمتة، للمطورين والمشغلين التركيز على الابتكار، مع العلم أن بيانات الاعتماد والمفاتيح الخاصة بهم محمية. باستخدام هذا الدليل العملي، سيتمكن متخصصو الأمان من استخدام Azure Key Vault لإدارة الأسرار والشهادات بشكل آمن وفعال، مما يضمن سلامة وسرية تطبيقاتهم وبياناتهم في Azure.
المراجع:
[1] تعلم مايكروسوفت. ما هو Azure Key Vault؟. متوفر على: https://learn.microsoft.com/pt-br/azure/key-vault/general/overview [2] مايكروسوفت تعلم. أفضل الممارسات لإدارة الأسرار في Azure Key Vault. متوفر على: https://learn.microsoft.com/pt-br/azure/key-vault/secrets/secrets-best-practices [3] مايكروسوفت تعلم. حول شهادات Azure Key Vault. متوفر على: https://learn.microsoft.com/pt-br/azure/key-vault/certificates/about-certificates