البرنامج التعليمي: استخدام مراجع Key Vault في تطبيق Java Spring

في هذا البرنامج التعليمي، ستتعلم كيفية استخدام خدمة تكوين تطبيق Azure مع Azure Key Vault. تكوين التطبيق وKey Vault هما خدمات تكميلية تستخدم جنبًا إلى جنب في معظم عمليات النشر للتطبيقات.

يساعدك تكوين التطبيق على استخدام الخدمات معًا من خلال إنشاء مفاتيح تشير إلى قيم المراجع المخزنة في Key Vault. عندما ينشئ تكوين التطبيق مثل هذه المفاتيح، فإنه يخزن URI لقيم Key Vault بدلاً من القيم نفسها.

يستخدم تطبيقك موفر عميل تكوين التطبيق لاسترداد مراجع Key Vault، تمامًا كما يفعل مع أي مفاتيح أخرى مخزنة في تكوين التطبيق. في هذه الحالة، القيم المخزنة في تكوين التطبيق هي URI التي تشير إلى القيم الموجودة في Key Vault. وهي ليست قيمًا أو بيانات اعتماد لـ Key Vault. لأن موفر العميل يتعرف على المفاتيح كمراجع Key Vault، فإنه يستخدم Key Vault لاسترداد قيمه.

تطبيقك هو المسؤول عن المصادقة بشكل صحيح على كل من تكوين التطبيق وKey Vault. لا تتصل الخدمتان مباشرة.

يوضح لك هذا البرنامج التعليمي كيفية تنفيذ مراجع Key Vault في الكود الخاص بك. وهو يبني على تطبيق الويب الذي تم تقديمه في البدايات سريعة. قبل المتابعة، أكمل إنشاء تطبيق Java Spring مع تكوين التطبيق أولاً.

يمكنك استخدام أي محرر تعليمات برمجية للقيام بالخطوات الواردة في هذا البرنامج التعليمي. على سبيل المثال، Visual Studio Code هو محرر كود متعدد الأنظمة متاح لأنظمة تشغيل Windows وmacOS وLinux.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء مفتاح تكوين التطبيق الذي يشير إلى قيمة مخزنة في Key Vault.
  • الوصول إلى قيمة هذا المفتاح من تطبيق Java Spring.

المتطلبات الأساسية

أنشئ مخزنًا

  1. حدّد خيار إنشاء مورد في الزاوية العلوية اليسرى من مدخل Microsoft Azure:

    Screenshot shows the Create a resource option in the Azure portal.

  2. في مربع البحث، أدخِل Key Vault.

  3. من قائمة النتائج، حدد المخازن الرئيسية على اليسار.

  4. في المخازن الرئيسية، حدد إضافة.

  5. على اليمين في إنشاء مخزن رئيسي، قم بتوفير المعلومات التالية:

    • حدد اشتراك لاختيار اشتراك.
    • ضمن مجموعة الموارد، حددإنشاء جديد وأدخل اسم مجموعة الموارد.
    • في اسم المخزن الرئيسي، مطلوب اسم فريد. لهذا البرنامج التعليمي، أدخل Contoso-vault2.
    • في قائمة ⁧⁩المنطقة⁧⁩ المنسدلة، اختر موقعًا.
  6. اترك الخيارات الأخرى لإنشاء مخزن رئيسي بقيمها الافتراضية.

  7. حدد إنشاء.

في هذه المرحلة، حساب Azure الخاص بك هو الوحيد المخول بالوصول إلى هذا المخزن الجديد.

Screenshot shows your key vault.

إضافة سر إلى Key Vault

لإضافة سر إلى المخزن، تحتاج إلى اتخاذ بضعة خطوات إضافية فقط. في هذه الحالة، أضف رسالة يمكنك استخدامها لاختبار استرداد Key Vault. تسمى الرسالة رسالة، ويمكنك تخزين القيمة "مرحبًا من Key Vault" فيها.

  1. من صفحات خصائص Key Vault، حدد أسرار.
  2. حدد إنشاء/استيراد.
  3. في جزء Create a secret ، أدخل القيم التالية:
    • خيارات التحميل: أَدخِل يدويًا.
    • الاسم: أَدخِل رسالة.
    • القيمة: أَدخِل مرحبًا من Key Vault.
  4. اترك الخصائص الأخرى لإنشاء سر بقيمها الافتراضية.
  5. حدد إنشاء.

أضف مرجع Key Vault إلى تكوين التطبيق

  1. قم بتسجيل الدخول إلى بوابة Azure. حدد جميع الموارد، وحدد مثيل متجر تكوين التطبيق الذي أنشأته في بدء التشغيل.

  2. حدد Configuration Explorer.

  3. حدد + Create>Key vault reference، ثم حدد القيم التالية:

    • مفتاح: حدد /application/config.keyvaultmessage
    • Label: اترك هذه القيمة فارغة.
    • الاشتراكومجموعة المواردوKey Vault:أَدخِل القيم المطابقة للقيم الموجودة في Key Vault الذي أنشأته في القسم السابق.
    • سر: حدد الرسالة المسماة السرية التي قمت بإنشائها في القسم السابق.

الاتصال بـ Key Vault

  1. في هذا البرنامج التعليمي، يمكنك استخدام خدمة رئيسية للمصادقة إلى Key Vault. لإنشاء هذه الخدمة الأساسية، استخدم الأمر Azure CLI az ad sp create-for-rbac:

    az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    تقوم هذه العملية بإرجاع سلسلة من أزواج المفاتيح/القيم:

    {
    "clientId": "7da18cae-779c-41fc-992e-0527854c6583",
    "clientSecret": "b421b443-1669-4cd7-b5b1-394d5c945002",
    "subscriptionId": "443e30da-feca-47c4-b68f-1636b75e16b3",
    "tenantId": "35ad10f1-7799-4766-9acf-f2d946161b77",
    "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
    "resourceManagerEndpointUrl": "https://management.azure.com/",
    "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
    "galleryEndpointUrl": "https://gallery.azure.com/",
    "managementEndpointUrl": "https://management.core.windows.net/"
    }
    
  2. قم بتشغيل الأمر التالي للسماح للخدمة الرئيسية بالوصول إلى المخزن الرئيسي الخاص بك:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. قم بتشغيل الأمر التالي للحصول على معرف الكائن الخاص بك، ثم أضفه إلى تكوين التطبيق.

    az ad sp show --id <clientId-of-your-service-principal>
    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
    
  4. إنشاء متغيرات البيئة AZURE_CLIENT_IDAZURE_CLIENT_SECRETوAZURE_TENANT_ID. استخدم القيم الخاصة بمدير الخدمة التي تم عرضها في الخطوات السابقة. في سطر الأوامر، قم بتشغيل الأوامر التالية ثم أعد تشغيل موجه الأمر للسماح للتغيير أن يكون حيز التنفيذ:

    setx AZURE_CLIENT_ID "clientId"
    setx AZURE_CLIENT_SECRET "clientSecret"
    setx AZURE_TENANT_ID "tenantId"
    

    إذا كنت تستخدم Windows PowerShell، فقم بإجراء الأمر التالي:

    $Env:AZURE_CLIENT_ID = "clientId"
    $Env:AZURE_CLIENT_SECRET = "clientSecret"
    $Env:AZURE_TENANT_ID = "tenantId"
    

    إذا كنت تستخدم macOS أو Linux، فقم بإجراء الأمر التالي:

    export AZURE_CLIENT_ID ='clientId'
    export AZURE_CLIENT_SECRET ='clientSecret'
    export AZURE_TENANT_ID ='tenantId'
    

إشعار

يتم استخدام بيانات اعتماد Key Vault تلك فقط داخل تطبيقك. يصادق التطبيق مباشرة مع Key Vault باستخدام بيانات الاعتماد هذه دون إشراك خدمة تكوين التطبيق. يوفر Key Vault المصادقة لكل من التطبيق وخدمة تكوين التطبيق الخاصين بك دون مشاركة المفاتيح أو تعريضها.

حَدِّث التعليمات البرمجية الخاصة بك لاستخدام مرجع Key Vault

  1. إنشاء متغير بيئة يسمى APP_CONFIGURATION_ENDPOINT. قم بتعيين قيمته إلى نقطة النهاية لمتجر تكوين التطبيقات الخاص بك. يمكنك العثور على نقطة النهاية على لوح مفاتيح الوصول في مدخل Microsoft Azure. أعد تشغيل موجه الأمر للسماح بالتغيير لأن يكون حيز التنفيذ.

  2. افتح ملف التكوين في مجلد الموارد . تحديث هذا الملف لاستخدام قيمة APP_CONFIGURATION_ENDPOINT. إزالة أية مراجع إلى سلسلة اتصال في هذا الملف.

spring:
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}

إشعار

يمكنك أيضا استخدام تكوينات Spring Cloud Azure العمومية للاتصال ب Key Vault.

  1. فتح MessageProperties.java. إضافة متغير جديد يسمى keyVaultMessage:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. افتح HelloController.java. تحديث أسلوب getMessage لتضمين الرسالة التي تم استردادها من Key Vault.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. قم ببناء تطبيق Spring Boot الخاص بك باستخدام Maven وتشغيله، على سبيل المثال:

    mvn clean package
    mvn spring-boot:run
    
  4. بعد تشغيل تطبيقك، استخدم curl لاختبار تطبيقك، على سبيل المثال:

    curl -X GET http://localhost:8080/
    

    تظهر الرسالة التي أدخلتها في مخزن تكوين التطبيقات. كما ترى الرسالة التي أدخلتها في Key Vault.

تنظيف الموارد

إذا كنت لا تريد مواصلة استخدام الموارد التي تم إنشاؤها في هذه المقالة، يوصى بحذف مجموعة الموارد التي أنشأتها هنا لتجنب الرسوم.

هام

حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وجميع الموارد المضمنة فيها نهائيًا. تأكد من عدم حذفك للموارد أو مجموعة المورد الخاطئة عن غير قصد. في حالة إنشاء الموارد لهذه المقالة داخل مجموعة موارد تشتمل على موارد أخرى تريد الاحتفاظ بها، احذف كل مورد على حدة من الجزء الخاص به بدلًا من حذف مجموعة الموارد.

  1. سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
  2. في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

الخطوات التالية

في هذا البرنامج التعليمي، أنشأت مفتاح تكوين التطبيق الذي يشير إلى قيمة مخزنة في Key Vault. للمزيد من الأسئلة، راجع الوثائق المرجعية حيث تتضمن كل التفاصيل حول كيفية عمل مكتبة Spring Cloud Azure App Configuration. لمعرفة كيفية استخدام علامات الميزة في تطبيق Java Spring الخاص بك، تابع البرنامج التعليمي التالي.