برای ارتباط با منابع محافظت شده و سایر سرویس ها، برنامه های ASP.NET Core معمولاً نیاز به استفاده از رشته های اتصال، رمزهای عبور یا سایر اعتبارنامه هایی دارند که حاوی اطلاعات حساس هستند. به این اطلاعات حساس راز می گویند. بهترین روش این است که اسرار را در کد منبع وارد نکنید و مطمئن شوید که اسرار در کنترل منبع ذخیره نمی شوند. در عوض، باید از مدل پیکربندی هسته ASP.NET برای خواندن اسرار از مکان های امن تر استفاده کنید.
شما باید اسرار دسترسی به منابع توسعه و مرحله بندی را از اسرار مورد استفاده برای دسترسی به منابع تولید جدا کنید، زیرا افراد مختلف نیاز به دسترسی به آن مجموعه های مختلف اسرار خواهند داشت. برای ذخیره اسرار مورد استفاده در طول توسعه، رویکردهای رایج ذخیره اسرار در متغیرهای محیطی یا با استفاده از ابزار ASP.NET Core Secret Manager است. برای ذخیره سازی ایمن تر در محیط های تولید، میکروسرویس ها می توانند اسرار را در Azure Key Vault ذخیره کنند.
ذخیره اسرار در متغیرهای محیطی
یکی از راههای حفظ اسرار از کد منبع این است که توسعهدهندگان رازهای مبتنی بر رشته را به عنوان متغیرهای محیطی در ماشینهای توسعه خود تنظیم کنند. هنگامی که از متغیرهای محیطی برای ذخیره اسرار با نامهای سلسله مراتبی استفاده میکنید، مانند آنهایی که در بخشهای پیکربندی تودرتو هستند، باید متغیرها را به گونهای نامگذاری کنید که سلسله مراتب کامل بخشهای آن را که با دونقطه (:) مشخص شده است، نامگذاری کنید.
برای مثال، تنظیم یک متغیر محیط Logging:LogLevel:Default به مقدار Debug معادل یک مقدار پیکربندی از فایل JSON زیر خواهد بود:
{
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}
برای دسترسی به این مقادیر از متغیرهای محیطی، برنامه فقط باید AddEnvironmentVariables را در ConfigurationBuilder خود هنگام ساخت یک شی IConfigurationRoot فراخوانی کند.
توجه داشته باشید
متغیرهای محیطی معمولاً به صورت متن ساده ذخیره می شوند، بنابراین اگر ماشین یا فرآیند با متغیرهای محیطی به خطر بیفتد، مقادیر متغیر محیطی قابل مشاهده خواهند بود.
اسرار را با ASP.NET Core Secret Manager ذخیره کنید
ابزار ASP.NET Core Secret Manager روش دیگری برای حفظ اسرار از کد منبع در طول توسعه ارائه می دهد. برای استفاده از ابزار Secret Manager، بسته Microsoft.Extensions.Configuration.SecretManager را در فایل پروژه خود نصب کنید. هنگامی که این وابستگی وجود داشت و بازیابی شد، دستور dotnet user-secrets میتواند برای تنظیم مقدار اسرار از خط فرمان استفاده شود. این اسرار در یک فایل JSON در فهرست مشخصات کاربر (جزئیات بر اساس سیستم عامل متفاوت است) و به دور از کد منبع ذخیره می شود.
اسرار تنظیم شده توسط ابزار Secret Manager توسط ویژگی UserSecretsId پروژه که از رازها استفاده می کند سازماندهی می شود. بنابراین، همانطور که در قطعه زیر نشان داده شده است، باید حتماً ویژگی UserSecretId را در فایل پروژه خود تنظیم کنید. مقدار پیش فرض یک GUID است که توسط ویژوال استودیو اختصاص داده شده است، اما رشته واقعی تا زمانی که در رایانه شما منحصر به فرد باشد مهم نیست.
<PropertyGroup>
<UserSecretsId>UniqueIdentifyingString</UserSecretsId>
</PropertyGroup>
استفاده از اسرار ذخیره شده با Secret Manager در یک برنامه با فراخوانی AddUserSecrets<T> در نمونه ConfigurationBuilder انجام می شود تا اسرار برنامه در پیکربندی آن گنجانده شود. پارامتر عمومی T باید نوعی از اسمبلی باشد که UserSecretId روی آن اعمال شده است. معمولاً استفاده از AddUserSecrets<Startup> خوب است.
هنگام استفاده از متد CreateDefaultBuilder در Program.cs، AddUserSecrets<Startup>() در گزینه های پیش فرض محیط توسعه گنجانده شده است.
- ۰۱/۱۱/۲۹