مشاركة عبر


البرنامج التعليمي: استخدام Azure Key Vault مع جهاز افتراضي في .NET

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

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

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

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

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

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

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

بالنسبة Windows, Mac, and Linux:

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

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

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

قم بتسجيل الدخول إلى Azure باستخدام الأمر التالي:

  • Azure CLI
  • Azure PowerShell
az login

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

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

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

هام

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

  • Azure CLI
  • Azure PowerShell
az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

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

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

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

  • Azure CLI
  • Azure PowerShell
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"

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

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

بالنسبة لنظام التشغيل Linux
Azure CLI Azure CLI
بوويرشيل بوويرشيل
مدخل Azure مدخل Azure

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

إنشاء هوية معينة من قبل النظام للجهاز الافتراضي مع المثال التالي:

  • Azure CLI
  • Azure PowerShell
az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>

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

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

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

  • Azure CLI
  • Azure PowerShell

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

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

استبدل <upn>، <subscription-id>، <resource-group-name> و <your-unique-keyvault-name> بقيمك الفعلية. سيكون UPN الخاص بك عادة بتنسيق عنوان بريد إلكتروني (على سبيل المثال، username@domain.com).

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

لتسجيل الدخول إلى الجهاز الافتراضي، اتبع الإرشادات الواردة في الاتصال بالجهاز الافتراضي Azure Windows وتسجيل الدخول إليه أو الاتصال بجهاز Azure Linux الافتراضي وتسجيل الدخول إليه .

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

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

تثبيت .NET Core

لتثبيت .NET Core، انتقل إلى صفحة تنزيلات .NET.

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

افتح موجه الأوامر.

يمكنك طباعة "Hello World" إلى وحدة التحكم عن طريق تشغيل الأوامر التالية:

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

تثبيت الحزمة

من نافذة وحدة التحكم، قم بتثبيت مكتبة عميل أسرار Azure Key Vault لصالح .NET:

dotnet add package Azure.Security.KeyVault.Secrets

لهذه البداية السريعة، ستحتاج إلى تثبيت حزمة الهوية التالية للمصادقة على Azure Key Vault:

dotnet add package Azure.Identity

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

افتح ملف Program.cs، ثم قم بإضافة الحزم التالية:

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

أضف هذه السطور، مع تحديث URI لتعكس vaultUri خزنة المفاتيح. الرمز أدناه يستخدم "DefaultAzureCredential()' للمصادقة على مخزن المفاتيح، والذي يستخدم الرمز المميز من هوية التطبيق المُدارة للمصادقة. يستخدم الكود أيضاً تراجعات أسية لإعادة المحاولة في حال تعطيل Key Vault.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<your-key-vault-name>";
            var kvUri = "https://<your-key-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.");

        }
    }

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

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

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