البرنامج التعليمي: استخدام 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 باستخدام الأمر التالي:

az login

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

تستخدم هذا التشغيل السريع مخزن بيانات سرية لـ Azure تم إنشاؤه مسبقاً. يمكنك إنشاء مخزن بيانات سرية باتباع الخطوات الواردة في بداية سريعة إلى Azure CLI أو بداية سريعة إلى Azure PowerShell أو بداية سريعة إلى مدخل Microsoft Azure.

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

هام

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

az group create --name "myResourceGroup" -l "EastUS"

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

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

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

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

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

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

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

Windows Linux
Azure CLI Azure CLI
بوويرشيل بوويرشيل
مدخل Microsoft Azure مدخل Microsoft Azure

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

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

az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>

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

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

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

تعيين أذونات الهوية التي تم إنشاؤها مسبقاً إلى مخزن المفاتيح الخاص بك مع الأمر az keyvault set-policy:

az keyvault set-policy --name '<your-unique-key-vault-name>' --object-id <VMSystemAssignedIdentity> --secret-permissions  get list set delete

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

لتسجيل الدخول إلى الجهاز الافتراضي، اتبع الإرشادات الواردة في الاتصال بالجهاز الافتراضي 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.");

        }
    }

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

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

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