التشغيل السريع: مكتبة العميل السرية ل Azure Key Vault ل .NET
ابدأ مع مكتبة العميل للبيانات السرية Azure Key Vault لـ NET. إن Azure Key Vault عبارة عن خدمة سحابية توفر مخزناً آمناً للبيانات السرية. يمكنك تخزين المفاتيح وكلمات المرور والشهادات والأسرار الأخرى بأمان. يمكن إنشاء مخازن مفاتيح Azure وإدارتها من خلال مدخل Microsoft Azure. في هذا التشغيل السريع، يمكنك معرفة كيفية إنشاء الأسرار واستردادها وحذفها من خزانة مفتاح Azure باستخدام مكتبة عميل JavaScript
موارد مكتبة عميل Key Vault:
الوثائق المرجعية لواجهة برمجة التطبيقات | التعليمة البرمجية المصدر للمكتبة | الحزمة (NuGet)
لمزيد من المعلومات حول Key Vault والأسرار، راجع:
المتطلبات الأساسية
- اشتراك Azure - أنشئ اشتراكاً مجاناً
- .NET 6 SDK أو أحدث
- Azure CLI أو Azure PowerShell
- Key Vault - يمكنك إنشاء واحد باستخدام مدخل Azure أو Azure CLI أو Azure PowerShell
يستخدم هذا التشغيل سريع dotnet
وAzure CLI أو Azure PowerShell.
الإعداد
تستخدم هذه البداية السريعة مكتبة Azure Identity مع Azure CLI لمصادقة المستخدم إلى Azure Services. يمكن للمطورين أيضاً استخدام Visual Studio أو Visual Studio Code لمصادقة مكالماتهم، وللحصول على مزيد من المعلومات، راجع مصادقة العميل باستخدام مكتبة عميل Azure Identity.
تسجيل الدخول إلى Azure
تشغيل الأمر
az login
.az login
في حال كان CLI يمكن فتح المستعرض الافتراضي الخاص بك، فإنه سيتم القيام بذلك وتحميل صفحة تسجيل الدخول Azure.
بخلاف ذلك، افتح صفحة متصفح على https://aka.ms/devicelogin وأدخل رمز التفويض المعروض في جهازك.
قم بتسجيل الدخول باستخدام بيانات اعتماد حسابك في المتصفح.
امنح حق الوصول إلى خزنة المفاتيح الخاصة بك
للحصول على أذونات إلى مخزن المفاتيح الخاص بك من خلال التحكم في الوصول المستند إلى الدور (RBAC)، قم بتعيين دور إلى "اسم المستخدم الأساسي" (UPN) باستخدام الأمر Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets Officer" --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).
إنشاء تطبيق وحدة تحكم .NET جديد
في shell command، قم بتشغيل الأمر التالي لإنشاء مشروع باسم
key-vault-console-app
:dotnet new console --name key-vault-console-app
غيّر إلى دليل key-vault-console-app الذي تم إنشاؤه حديثاً، وقم بتشغيل الأمر التالي لإنشاء المشروع:
dotnet build
يجب ألا يحتوي إخراج البناء على تحذيرات أو أخطاء.
Build succeeded. 0 Warning(s) 0 Error(s)
قم بتثبيت الحِزَم
من command shell، قم بتثبيت مكتبة عميل مفتاح Azure Key Vault secret لـ .NET:
dotnet add package Azure.Security.KeyVault.Secrets
لهذا التشغيل السريع، ستحتاج أيضا إلى تثبيت مكتبة عميل Azure Identity:
dotnet add package Azure.Identity
تعيين متغيرات البيئة
يستخدم هذا التطبيق اسم key vault كمتغير بيئة يُسمى KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS أو Linux
export KEY_VAULT_NAME=<your-key-vault-name>
نموذج الكائن
تتيح لك مكتبة العميل للبيانات السرية Azure Key Vault الخاصة بـ .NET إدارة البيانات السرية. يوضح المقطع أمثلة التعليمات البرمجية كيفية إنشاء عميل وتعيين البيانات السرية واستردادها وحذفها.
أمثلة على التعليمات البرمجية
أضف توجيهات
أضف التوجيهات التالية إلى أعلى Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
مصادقة عميل وإنشاؤه
يجب التصريح بطلبات التطبيق إلى معظم خدمات Azure. استخدام فئة DefaultAzureCredential التي توفرها مكتبة عميل Azure Identity هو الأسلوب الموصى به لتنفيذ الاتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك. DefaultAzureCredential
يدعم أساليب مصادقة متعددة ويحدد الأسلوب الذي يجب استخدامه في وقت التشغيل. يمكن هذا النهج تطبيقك من استخدام أساليب مصادقة مختلفة في بيئات مختلفة (البيئة المحلية مقابل بيئة التشغيل) دون تنفيذ التعليمات البرمجية الخاصة بالبيئة.
في هذا التشغيل السريع، DefaultAzureCredential
يصادق على key vault باستخدام بيانات اعتماد مستخدم التطوير المحلي الذي سجل الدخول إلى Azure CLI. عند نشر التطبيق إلى Azure، يمكن لنفس DefaultAzureCredential
التعليمات البرمجية اكتشاف واستخدام هوية مدارة تلقائيا تم تعيينها إلى App Service أو Virtual Machine أو خدمات أخرى. لمزيد من المعلومات، راجع نظرة عامة على الهوية المُدارة.
في هذا المثال، يتم توسيع اسم مخزن المفاتيح الخاص بك إلى URI لمخزن المفاتيح، بالتنسيق https://<your-key-vault-name>.vault.azure.net
. لمزيد من المعلومات حول المصادقة إلى مخزن المفاتيح، راجع دليل المطور.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
حفظ سر
الآن بعد مصادقة تطبيق وحدة التحكم، أضف سرا إلى قبو المفاتيح. لهذه المهمة، استخدم الأسلوب SetSecretAsync.
تقبل المعلمة الأولى للأسلوب اسما للسر. في هذا النموذج، يخزن المتغير secretName
السلسلة "mySecret".
تقبل المعلمة الثانية للأسلوب قيمة للبيانات السرية. في هذا النموذج، السر هو الإدخال من قبل المستخدم عبر سطر الأوامر وتخزينه في المتغير secretValue
.
await client.SetSecretAsync(secretName, secretValue);
إشعار
إذا كان الاسم السري موجودا، فستنشئ التعليمات البرمجية إصدارا جديدا من هذا السر.
استرداد البيانات السرية
يمكنك الآن استرداد القيمة المحددة مسبقاً باستخدام getSecret method.
var secret = await client.GetSecretAsync(secretName);
يتم حفظ سرك الآن كـ secret.Value
.
حذف سر
وأخيراً، دعونا نقُم بحذف السر ومحوه من خزانة المفتاح الخاص بك باستخدام الأسلوبين التاليين StartDeleteSecretAsync وPurgeDeletedSecretAsync.
var operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();
await client.PurgeDeletedSecretAsync(secretName);
التعليمة البرمجية العينة
تعديل تطبيق وحدة تحكم .NET للتفاعل مع Key Vault عن طريق إكمال الخطوات التالية:
استبدل التعليمة البرمجية في Program.cs بالتعليمة البرمجية التالية:
using System; using System.Threading.Tasks; using Azure.Identity; using Azure.Security.KeyVault.Secrets; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string secretName = "mySecret"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write("Input the value of your secret > "); var secretValue = Console.ReadLine(); Console.Write($"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ..."); await client.SetSecretAsync(secretName, secretValue); Console.WriteLine(" done."); Console.WriteLine("Forgetting your secret."); secretValue = string.Empty; Console.WriteLine($"Your secret is '{secretValue}'."); Console.WriteLine($"Retrieving your secret from {keyVaultName}."); var secret = await client.GetSecretAsync(secretName); Console.WriteLine($"Your secret is '{secret.Value.Value}'."); Console.Write($"Deleting your secret from {keyVaultName} ..."); DeleteSecretOperation operation = await client.StartDeleteSecretAsync(secretName); // You only need to wait for completion if you want to purge or recover the secret. await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your secret from {keyVaultName} ..."); await client.PurgeDeletedSecretAsync(secretName); Console.WriteLine(" done."); } } }
الاختبار والتحقق
نفذ الأمر التالي لتشغيل التطبيق.
dotnet run
عند مطالبتك قم بإدخال قيمة سرية. على سبيل المثال، mySecretPassword.
يظهر تباين الإخراج التالي:
Input the value of your secret > mySecretPassword
Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <your-unique-keyvault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <your-unique-keyvault-name> ... done.
Purging your secret from <your-unique-keyvault-name> ... done.
الخطوات التالية
لمعرفة المزيد حول Key Vault وكيفية تكامله مع تطبيقاتك، راجع المقالات التالية: