۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه کار با Azure Key Vault در NET Core

Azure Key Vault مکانی امن و مطمئن برای ذخیره نشانه‌ها، کلیدها، گذرواژه‌ها، گواهی‌ها و سایر داده‌های حساس مورد استفاده در برنامه‌های NET Core شما است. در اینجا نحوه کار با آن در سی شارپ آمده است.

Azure Key Vault مکانی امن و مطمئن برای ذخیره نشانه‌ها، کلیدها، گذرواژه‌ها، گواهی‌ها و سایر داده‌های حساس مورد استفاده در برنامه‌های NET Core شما است. در اینجا نحوه کار با آن در سی شارپ آمده است.

هنگام ساختن برنامه‌های NET Core، اغلب از «اسرار» مختلفی مانند شناسه‌های مشتری، نشانه‌های دسترسی، رمزهای عبور، گواهی‌ها، کلیدهای رمزگذاری و کلیدهای API استفاده می‌کنیم. به طور طبیعی، ما به یک روش امن برای ذخیره، مدیریت و کنترل دسترسی به این داده های حساس نیاز داریم. Azure Key Vault راه حلی کاربردی و مبتنی بر ابر برای این کار ارائه می دهد.

در این مقاله، نحوه کار با Azure Key Vault در سی شارپ را بررسی خواهیم کرد. برای دنبال کردن کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا بارگیری کنید.

یک پروژه برنامه کاربردی کنسول در ویژوال استودیو ایجاد کنید

ابتدا، اجازه دهید یک پروژه برنامه کاربردی کنسول NET Core در ویژوال استودیو ایجاد کنیم. با فرض اینکه Visual Studio 2022 در سیستم شما نصب شده است، مراحل ذکر شده در زیر را برای ایجاد یک پروژه برنامه کاربردی کنسول NET Core جدید دنبال کنید.

  1. Visual Studio IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “Console App (.NET Core)” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
  6. بعدی را کلیک کنید.
  7. در پنجره «اطلاعات اضافی» که در ادامه نشان داده شده است، «NET 7.0 (Standard Term Support)» را به عنوان نسخه چارچوبی که می خواهید استفاده کنید انتخاب کنید.
  8. روی ایجاد کلیک کنید.
چرا منبع باز در عصر ابر ضروری است

ما از این پروژه برنامه کاربردی کنسول NET 7 برای کار با Azure Key Vault در بخش‌های بعدی این مقاله استفاده خواهیم کرد.

Azure Key Vault چیست؟

Azure Key Vault یک راه حل ذخیره سازی ایمن مبتنی بر ابر است که از اسرار برنامه شما یا سایر داده های حساس مربوط به برنامه شما محافظت می کند. چنین اسرار ممکن است نشانه‌ها، کلیدها، شناسه‌ها، رمزهای عبور، گواهی‌ها و غیره باشند. Azure Key Vault یک فروشگاه امن، امن و متمرکز برای اسرار همراه با کنترل‌های دسترسی قوی فراهم می‌کند که نیازی به توسعه‌دهندگان برای مدیریت مستقیم داده‌های حساس در برنامه‌هایشان را از بین می‌برد.

در بخش‌های بعدی، یک Key Vault ایجاد می‌کنیم، تعدادی راز ایجاد می‌کنیم و سپس این رازها را به صورت برنامه‌نویسی می‌خوانیم و حذف می‌کنیم.

یک خزانه کلید در Azure ایجاد کنید

برای ایجاد خزانه کلید در Azure، مراحل ذکر شده در زیر را دنبال کنید.

  1. از منوی Azure Portal یا صفحه اصلی، “ایجاد منبع” را انتخاب کنید.
  2. Key Vault را از لیست منابع نمایش داده شده انتخاب کنید.
  3. روی ایجاد کلیک کنید.
  4. در صفحه “ایجاد یک انبار کلید”، اشتراک، نام گروه منبع، منطقه و ردیف قیمت را مشخص کنید و سایر گزینه ها را به مقادیر پیش فرض خود بسپارید.
  5. روی “بازبینی + ایجاد” کلیک کنید
  6. جزئیات وارد شده را بررسی کنید و سپس روی ایجاد کلیک کنید.

یک مخفی برنامه در خزانه کلید Azure خود ایجاد کنید

در مرحله بعد، باید یک راز به نمونه مخزن کلید ایجاد شده در بخش قبل اضافه کنید. برای انجام این کار، مراحل ذکر شده در زیر را دنبال کنید.

  1. Secrets را از صفحه پیکربندی Key Vault انتخاب کنید.
  2. بر روی Generate/Import کلیک کنید تا یک راز به صندوق کلید اضافه شود.
  3. دستی (پیش‌فرض) را از منوی کشویی «گزینه‌های آپلود» انتخاب کنید.
  4. نام و مقدار راز را مشخص کنید.
  5. به صورت اختیاری نوع محتوا، تاریخ فعال‌سازی و تاریخ انقضا را مشخص کنید.
  6. روی ایجاد کلیک کنید.
چگونه با GraphQL شروع کنیم

نقش‌ها را برای دسترسی به صندوق کلید خود اضافه کنید

برای دسترسی به رازی که ایجاد کردیم، مراحل فهرست شده در زیر را دنبال کنید.

  1. “کنترل دسترسی (IAM)” را از صفحه Key Vault انتخاب کنید.
  2. روی «افزودن تخصیص نقش» کلیک کنید.
  3. نقشی را که می خواهید به آن اختصاص دهید از لیست نقش های نمایش داده شده انتخاب کنید.
  4. دسترسی را به «هویت مدیریت‌شده» یا «کاربر، گروه یا مدیر سرویس» اختصاص دهید.
  5. اعضایی را انتخاب کنید که نقش به آنها اختصاص داده شود.
  6. در صورت تمایل، شرح نقش را مشخص کنید.
  7. بعدی را کلیک کنید.
  8. روی “بازبینی + اختصاص” کلیک کنید.

داده‌ها را از خزانه کلید Azure بخوانید

در مرحله بعد یک نمونه از کلاس DefaultAzureCredential ایجاد می کنیم و آن را به عنوان آرگومان به کلاس SecretClient ارسال می کنیم. این یک کلاینت مخفی ایجاد می کند که می توانیم از آن برای اتصال و کار با Azure Key Vault استفاده کنیم. هنگام ایجاد یک نمونه از SecretClient، همچنین باید KeyVault URI را همانطور که در قطعه کد زیر نشان داده شده است، مشخص کنید.

var credentials = new DefaultAzureCredential();
azureKeyVaultSecretClient = new SecretClient(new
Uri(KeyVaultUri), credentials);

در اینجا فهرست کامل کد برای مرجع شما آمده است.

    class Program
    {
        const string KeyVaultName = "AzureKeyValueExample";
        const string KeyVaultUri = $ https://{KeyVaultName}.vault.azure.net";
        static SecretClient ? azureKeyVaultSecretClient;
        static void Main(string[] args)
        {
            var credentials = new DefaultAzureCredential();
            azureKeyVaultSecretClient = new SecretClient(new
            Uri(KeyVaultUri), credentials);
            Console.WriteLine("Displaying all secrets with their values:");
            var azureKeyVaultSecrets =
            azureKeyVaultSecretClient.GetPropertiesOfSecrets();
            foreach(var secret in azureKeyVaultSecrets)
            {
                var secretValue =
                azureKeyVaultSecretClient.GetSecret(secret.Name);
                Console.WriteLine($ "{secret.Name} |
                {secretValue.Value.Value} |
                {secretValue.Value.Properties.ContentType}");
            }
            Console.Read();
        }
    }

رازهای نمایش خزانه کلید لاجوردی 01

شکل ۱. هنگامی که برنامه فوق را در پنجره کنسول اجرا می کنید، اسرار شما و مقادیر آنها نمایش داده می شود.

فدرال‌رزروها به دنبال گواهی بر روی نرم‌افزار امن هستند

یک راز جدید در خزانه کلید Azure ایجاد کنید

می توانید از کد زیر برای ایجاد یک رمز جدید و اختصاص مقداری به آن در نمونه مخزن کلید خود استفاده کنید.

string secretName = "NewSecret";
string secretValue = "NewSecretValue";
await azureKeyVaultSecretClient.SetSecretAsync(secretName, secretValue);
var secret = azureKeyVaultSecretClient.GetSecret(secretName);
Console.WriteLine($ "{secretName} created with value {secretValue}");

می توانید راز جدید ایجاد شده در پورتال Azure را همانطور که در شکل ۲ در زیر نشان داده شده است مشاهده کنید.

رازهای نمایش خزانه کلید لاجوردی 02

شکل ۲. راز جدید ما در صفحه Key Vault پورتال Azure نمایش داده شده است.

یک راز را از مخزن کلید Azure حذف کنید

متد StartDeleteSecret از کلاس SecretClient یک راز را از Azure Key Vault حذف می کند. همانطور که در قطعه کد زیر نشان داده شده است، فقط باید نام رازی را که می خواهید حذف کنید به عنوان پارامتر به این روش ارسال کنید.

string secretNameForDelete = "NewSecret";
var deleteOperation = azureKeyVaultSecretClient.StartDeleteSecret(secretNameForDelete);
Console.WriteLine($"Deleting secret {secretNameForDelete} from Key Vault");
while (!deleteOperation.HasCompleted)
{
     Thread.Sleep(500);
     deleteOperation.UpdateStatus();
}
Console.WriteLine($"Secret {secretNameForDelete} deleted from Key Vault");
Console.Read();

اگر اکنون صفحه Key Vault را در پورتال Azure مرور کنید، خواهید دید که راز حذف شده است.

نتیجه گیری

وقتی برنامه را اجرا می کنید، ممکن است با Azure.Identity.CredentialUnavailableException مواجه شوید. برای حل این مشکل، از داخل Visual Studio IDE، روی Tools -> Options -> Azure Service Authentication کلیک کنید. مطمئن شوید که با استفاده از اطلاعات کاربری حساب Azure خود وارد سیستم شده اید.

با Azure Key Vault، می‌توانید کلیدها و اسرار را به‌طور مرکزی مدیریت کنید، امنیت برنامه‌ها و انطباق با صنعت را بهبود ببخشید، و مدیریت و حفاظت از داده‌های حساس را ساده کنید.