الشرح التعليمي: استخدام Azure Key Vault مع آلة افتراضية في .NET

يساعدك Azure Key Vault على حماية الأسرار مثل مفاتيح API وسلاسل اتصال قاعدة البيانات التي تحتاجها تطبيقاتك وخدماتك ومواردك.

في هذا الدرس، تقوم بتكوين تطبيق كونسول لقراءة المعلومات من Azure Key Vault. يستخدم التطبيق هوية الجهاز الافتراضي المدارة للمصادقة مع Key Vault.

يوضح لك البرنامج التعليمي كيفية:

  • قم بإنشاء مجموعة موارد.
  • إنشاء مخزن رئيسي.
  • إضافة سر إلى key vault.
  • استرجاع سر من Key Vault.
  • إنشاء آلة افتراضية Azure.
  • تمكين هوية مدارة للجهاز الافتراضي.
  • تعيين أذونات إلى هوية VM.

قبل أن تبدأ، اقرأ Key Vault المفاهيم الأساسية.

إذا لم يكن لديك اشتراك Azure، أنشئ حسابا مجاني.

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

لأنظمة Windows وMac وLinux:

إنشاء الموارد وتعيين الأذونات

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

تسجيل الدخول إلى Azure

Sign In to Azure with the Azure CLI or Azure PowerShell:

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell
az login

إنشاء مجموعة موارد ومخزن رئيسي

يستخدم هذا البدء السريع خزنة مفاتيح Azure مسبقا. يمكنك إنشاء مخزن مفاتيح باتباع الخطوات الواردة في هذه قوالب التشغيل السريع:

بدلا من ذلك، يمكنك تشغيل أوامر Azure CLI أو Azure PowerShell هذه.

هام

يجب أن يكون لكل مخزن رئيسي اسم فريد. استبدلها <vault-name> باسم خزنة المفاتيح في الأمثلة التالية.

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell
az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

ملء key vault الخاص بك ببيانات سرية

لنقم بإنشاء سر يسمى mySecret، بقيمة Success!. قد يكون السر كلمة مرور، أو سلسلة سلسلة الاتصال في SQL، أو أي معلومات أخرى تحتاجها للحفاظ على أمان وتوفرها لتطبيقك.

لإضافة سر إلى مخزن المفاتيح الذي أنشأته حديثاً، استخدم الأمر التالي:

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell
az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

إنشاء جهاز ظاهري

إنشاء جهاز افتراضي لنظام Windows أو Linux باستخدام إحدى الطرق التالية:

Windows Linux
واجهة سطر الأوامر Azure (Azure CLI) واجهة سطر الأوامر Azure (Azure CLI)
بوويرشيل بوويرشيل
مدخل Azure مدخل Azure

تعيين هوية لجهاز VM

إنشاء هوية مدارة معينة من النظام للآلة الافتراضية:

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell
az vm identity assign --name <vm-name> --resource-group <resource-group>

لاحظ الهوية المعينة من قبل النظام التي يتم عرضها في التعليمات البرمجية التالية. مخرج الأمر السابق سيكون:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

تعيين أذونات إلى هوية VM

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell

للحصول على صلاحيات لخزنة المفاتيح الخاصة بك عبر Role-Based Access Control (RBAC)، قم بتعيين دور إلى "اسم المستخدم الرئيسي" (UPN) باستخدام أمر Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

استبدل <upn>، <subscription-id>، ومع <vault-name> قيمك الفعلية. إذا استخدمت اسم مجموعة موارد مختلف، استبدل "myResourceGroup" أيضا. سيكون UPN الخاص بك عادة بتنسيق عنوان بريد إلكتروني (على سبيل المثال، username@domain.com).

تسجيل الدخول إلى الجهاز الافتراضي

لتسجيل الدخول إلى الجهاز الافتراضي، اتبع التعليمات في Connect وسجل الدخول إلى جهاز افتراضي Azure Windows أو Connect وتسجيل الدخول إلى آلة افتراضية Azure لينكس.

إعداد تطبيق وحدة التحكم

أنشئ تطبيق كونسول وثبت الحزم المطلوبة باستخدام dotnet الأمر.

تثبيت .NET

لتثبيت ملف .NET، اذهب إلى صفحة تحميلات .NET.

إنشاء وتشغيل نموذج تطبيق .NET

افتح موجه الأوامر وشغل:

dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run

التطبيق يطبع "مرحبًا بالعالم" على الجهاز.

قم بتثبيت الحِزَم

من نافذة الكونسول، قم بتثبيت مكتبة عملاء Azure Key Vault Secrets ومكتبة Azure Identity:

dotnet add package Azure.Security.KeyVault.Secrets
dotnet add package Azure.Identity

تحرير تطبيق وحدة التحكم

افتح Program.cs وأضف التوجيهات التالية using :

using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

استبدل الطريقة Main بالرمز التالي، مع تحديث <vault-name> اسم خزنة المفاتيح الخاص بك. يستخدم هذا الكود DefaultAzureCredential للمصادقة إلى Key Vault، الذي يستخدم رمزا من هوية الجهاز المنصب. كما أنه يضبط التراجع الأسي لإعادة المحاولة في حال تم تقييد Key Vault.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<vault-name>";
            var kvUri = "https://<vault-name>.vault.azure.net";
            SecretClientOptions options = new SecretClientOptions()
            {
                Retry =
                {
                    Delay= TimeSpan.FromSeconds(2),
                    MaxDelay = TimeSpan.FromSeconds(16),
                    MaxRetries = 5,
                    Mode = RetryMode.Exponential
                 }
            };

            var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }
    }

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

عندما لا تحتاجها، احذف الجهاز الافتراضي وخزنة المفتاح.

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