مصادقة تطبيقات Azure Spring مع Azure Key Vault في إجراءات GitHub

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على: ✔️ Java ✔️ C#‎

تنطبق هذه المقالة على: ✔️ Basic/Standard ✔️ Enterprise

توضح هذه المقالة كيفية استخدام Key Vault لتطبيقات Azure Spring باستخدام إجراءات GitHub.

Key Vault هو مكان آمن لتخزين المفاتيح. يحتاج مستخدمو المؤسسة إلى تخزين بيانات الاعتماد لبيئات CI/CD في النطاق الذي يتحكمون فيه. يجب أن يقتصر مفتاح الحصول على بيانات الاعتماد في مخزن المفاتيح على نطاق المورد. لديه حق الوصول إلى نطاق مخزن المفاتيح فقط، وليس نطاق Azure بأكمله. إنه مثل المفتاح الذي يمكن أن يفتح صندوقاً قوياً فقط وليس مفتاحاً رئيسياً يمكنه فتح جميع الأبواب في المبنى. إنها طريقة للحصول على مفتاح بمفتاح آخر، وهو أمر مفيد في سير عمل CICD.

إنشاء بيانات اعتماد

لإنشاء مفتاح للوصول إلى مخزن المفاتيح، نفّذ الأمر أدناه على الكمبيوتر المحلي:

az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth

يحد النطاق المحدد بواسطة المعلمة --scopes من وصول المفتاح إلى المورد. يمكنه الوصول إلى الصندوق القوي فقط.

مع النتائج:

{
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    "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/"
}

ثم احفظ النتائج إلى البيانات السرية GitHub كما هو موضح في إعداد مستودع GitHub والمصادقة باستخدام Azure.

إضافة نُهج الوصول لبيانات الاعتماد

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

انتقل إلى لوحة معلومات Key Vault في مدخل Microsoft Azure، وحدد قائمة Access control، ثم افتح علامة التبويب Role assignments. حدد Apps لـ Type وThis resource لـ scope. يجب أن تشاهد بيانات الاعتماد التي قمت بإنشائها في الخطوة السابقة:

لقطة شاشة لمدخل Azure تعرض صفحة التحكم في الوصول مع تمييز علامة التبويب Role assignments.

انسخ اسم بيانات الاعتماد، على سبيل المثال azure-cli-2020-01-19-04-39-02. افتح قائمة Access policies، ثم حدد الارتباط إضافة نهج الوصول. حدد Secret Management لـ Template، ثم حدد Principal. الصق اسم بيانات الاعتماد في مربع الإدخال Principal/Select:

لقطة شاشة لمدخل Azure تعرض صفحة Add access policy مع فتح الجزء Principal.

حدد الزر Add في مربع الحوار Add access policy، ثم حدد Save.

إنشاء بيانات اعتماد Azure كاملة النطاق

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

az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth

مرة أخرى، تكون النتائج:

{
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    "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/"
}

انسخ سلسلة JSON بأكملها. ارجع إلى لوحة معلومات Key Vault. افتح قائمة Secrets، ثم حدد الزر Generate/Import. أدخل اسم البيانات السرية، مثل AZURE-CREDENTIALS-FOR-SPRING. الصق سلسلة بيانات اعتماد JSON إلى مربع إدخال Value. قد تلاحظ أن مربع إدخال القيمة عبارة عن حقل نصي من سطر واحد، بدلاً من مساحة نص متعددة الأسطر. يمكنك لصق سلسلة JSON الكاملة هناك.

لقطة شاشة لمدخل Azure تعرض صفحة إنشاء بيانات سرية.

دمج بيانات الاعتماد في إجراءات GitHub

تعيين بيانات الاعتماد المستخدمة عند تنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية CICD:

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}           # Strong box key you generated in the first step
    - uses: Azure/get-keyvault-secrets@v1.0
      with:
        keyvault: "<Your Key Vault Name>"
        secrets: "AZURE-CREDENTIALS-FOR-SPRING"           # Master key to open all doors in the building
      id: keyvaultaction
    - uses: azure/login@v1
      with:
        creds: ${{ steps.keyvaultaction.outputs.AZURE-CREDENTIALS-FOR-SPRING }}
    - name: Azure CLI script
      uses: azure/CLI@v1
      with:
        azcliversion: 2.0.75
        inlineScript: |
          az extension add --name spring             # Spring CLI commands from here
          az spring list

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