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

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

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

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

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

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

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

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

  • يقوم 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، يجب أن تكون عضوا في مجموعة المسؤولين المحليين أو مجموعة تطبيقات ملحق العامل المختلط.

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

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

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

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

الحصول على رمز وصول مميز باستخدام واجهة برمجة تطبيقات REST

تشبه طريقة الحصول على هوية مدارة معينة من قبل النظام واستخدامها للمصادقة باستخدام موارد 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.

ChallengeTokenPath=$(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:]")
ChallengeToken=$(cat $ChallengeTokenPath)
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 $ChallengeToken" "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، راجع الوصول Key Vault مع Windows أو الوصول Key Vault معLinux.

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