المصادقة مقابل موارد Azure باستخدام ملقمات Azure Arc الممكنة

يمكن للتطبيقات أو العمليات التي تعمل مباشرة على خوادم ممكنة ل Azure Arc استخدام الهويات المدارة للوصول إلى موارد Azure الأخرى التي تدعم المصادقة المستندة إلى معرف Microsoft Entra. يمكن للتطبيق الحصول على رمز مميز للوصول يمثل هويته، والذي تم تعيينه من قبل النظام للخوادم التي تدعم Azure Arc، واستخدامه كرمز مميز "حامل" لمصادقة نفسه على خدمة أخرى.

راجع وثائق نظرة عامة على الهوية المدارة للحصول على وصف مفصل للهويات المدارة، وفهم التمييز بين الهويات المعينة من قبل النظام والهويات المعينة من قبل المستخدم.

في هذه المقالة، نعرض لك كيف يمكن للخادم استخدام هوية مدارة معينة من قبل النظام للوصول إلى Azure Key Vault. يعمل Key Vault كتمهيد، يجعل من الممكن لتطبيق العميل الخاص بك استخدام سر للوصول إلى الموارد غير المؤمنة بواسطة معرف Microsoft Entra. على سبيل المثال، يمكن تخزين شهادات TLS/SSL المستخدمة من قبل خوادم IIS على الويب في Azure Key Vault، ونشر الشهادات بأمان إلى خوادم Windows أو Linux خارج Azure.

نظرة عامة على الأمان

أثناء إعداد الخادم الخاص بك إلى خوادم Azure Arc الممكنة، يتم تنفيذ العديد من الإجراءات للتكوين باستخدام هوية مدارة، على غرار ما يتم تنفيذه لجهاز Azure الظاهري:

  • يتلقى Azure Resource Manager طلبا لتمكين الهوية المدارة المعينة من قبل النظام على خادم Azure Arc الممكن.

  • يقوم Azure Resource Manager بإنشاء كيان خدمة في معرف Microsoft Entra لهوية الخادم. يتم إنشاء كيان الخدمة في مستأجر Microsoft Entra الموثوق به من قبل الاشتراك.

  • يقوم Azure Resource Manager بتكوين الهوية على الخادم عن طريق تحديث نقطة نهاية هوية خدمة بيانات تعريف مثيل Azure (IMDS) لنظام التشغيل Windows أو Linux باستخدام معرف العميل الأساسي للخدمة والشهادة. نقطة النهاية هي نقطة نهاية REST يمكن الوصول إليها فقط من داخل الخادم باستخدام عنوان IP معروف وغير قابل للتوجيه. توفر هذه الخدمة مجموعة فرعية من معلومات بيانات التعريف حول الخادم الذي يدعم Azure Arc للمساعدة في إدارته وتكوينه.

سيتم تكوين بيئة خادم ممكن للهوية المدارة مع المتغيرات التالية على خادم Windows Azure Arc الممكن:

  • IMDS_ENDPOINT: عنوان http://localhost:40342 IP لنقطة نهاية IMDS للخوادم التي تدعم Azure Arc.

  • IDENTITY_ENDPOINT: نقطة نهاية المضيف المحلي المقابلة للهوية http://localhost:40342/metadata/identity/oauth2/tokenالمدارة للخدمة .

يمكن للتعليمات البرمجية التي تعمل على الخادم طلب رمز مميز من نقطة نهاية خدمة بيانات تعريف مثيل Azure، يمكن الوصول إليها فقط من داخل الخادم.

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

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

  • فهم الهويات المُدارة.

  • في Windows، يجب أن تكون عضوا في مجموعة مسؤول istrators المحلية أو مجموعة تطبيقات ملحق العامل المختلط.

  • على Linux، يجب أن تكون عضوا في مجموعة himds .

  • خادم متصل ومسجل مع خوادم Azure Arc الممكنة.

  • أنت عضو في مجموعة المالك في الاشتراك أو مجموعة الموارد، من أجل تنفيذ خطوات إنشاء الموارد وإدارة الأدوار المطلوبة.

  • Azure Key Vault لتخزين بيانات الاعتماد واستردادها، وتعيين الوصول إلى هوية Azure Arc إلى KeyVault.

الحصول على رمز مميز للوصول باستخدام REST API

طريقة الحصول على هوية مدارة معينة من قبل النظام واستخدامها للمصادقة مع موارد Azure مشابهة لكيفية تنفيذها باستخدام جهاز Azure الظاهري.

بالنسبة لخادم Windows الذي يدعم Azure Arc، باستخدام PowerShell، يمكنك استدعاء طلب الويب للحصول على الرمز المميز من المضيف المحلي في المنفذ المحدد. حدد الطلب باستخدام عنوان IP أو المتغير البيئي IDENTITY_ENDPOINT.

$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
    Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
    $wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
    if ($wwwAuthHeader -match "Basic realm=.+")
    {
        $secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
    }
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
    $token = (ConvertFrom-Json -InputObject $response.Content).access_token
    Write-Host "Access token: " $token
}

الاستجابة التالية هي مثال يتم إرجاعه:

A successful retrieval of the access token using PowerShell.

بالنسبة لخادم Linux الذي يدعم Azure Arc، باستخدام Bash، يمكنك استدعاء طلب الويب للحصول على الرمز المميز من المضيف المحلي في المنفذ المحدد. حدد الطلب التالي باستخدام عنوان IP أو المتغير البيئي IDENTITY_ENDPOINT. لإكمال هذه الخطوة، تحتاج إلى عميل SSH.

CHALLENGE_TOKEN_PATH=$(curl -s -D - -H Metadata:true "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com" | grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
CHALLENGE_TOKEN=$(cat $CHALLENGE_TOKEN_PATH)
if [ $? -ne 0 ]; then
    echo "Could not retrieve challenge token, double check that this command is run with root privileges."
else
    curl -s -H Metadata:true -H "Authorization: Basic $CHALLENGE_TOKEN" "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com"
fi

الاستجابة التالية هي مثال يتم إرجاعه:

A successful retrieval of the access token using Bash.

تتضمن الاستجابة رمز الوصول الذي تحتاجه للوصول إلى أي مورد في Azure. لإكمال التكوين للمصادقة على Azure Key Vault، راجع Access Key Vault مع Windows أو Access Key Vault مع Linux.

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