ASP.NET Core-এ Secrets Management হলো এমন একটি পদ্ধতি, যার মাধ্যমে সংবেদনশীল ডেটা (যেমন API keys, ডেটাবেস কানেকশন স্ট্রিং) নিরাপদে সংরক্ষণ করা যায়। এটি কোডের মধ্যে সরাসরি সংবেদনশীল তথ্য রাখার পরিবর্তে আরও নিরাপদ পন্থা সরবরাহ করে।
ASP.NET Core-এ User Secrets হলো একটি টুল যা ডেভেলপমেন্ট পরিবেশে সংবেদনশীল ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। এটি ফাইল সিস্টেমে একটি সিক্রেট ফাইল তৈরি করে যেখানে এই ডেটা এনক্রিপ্টেড অবস্থায় রাখা হয়। এটি সাধারণত Development Environment-এ ব্যবহৃত হয় এবং প্রোডাকশন পরিবেশে এটি Azure Key Vault বা অন্যান্য নিরাপদ সমাধানের সাথে প্রতিস্থাপন করা হয়।
User Secrets ব্যবহার করতে হলে প্রজেক্টের SDK হতে হবে Microsoft.NET.Sdk.Web
। এছাড়া, .NET CLI
ইনস্টল থাকতে হবে।
প্রথমে প্রজেক্টের .csproj
ফাইলে নিচের অংশটি যোগ করুন (যদি না থাকে):
<PropertyGroup>
<UserSecretsId>your-project-unique-id</UserSecretsId>
</PropertyGroup>
UserSecretsId
হলো একটি ইউনিক আইডি, যা প্রজেক্টের সিক্রেট ফাইলকে সনাক্ত করতে ব্যবহৃত হয়।
টার্মিনালে প্রজেক্টের রুট ডিরেক্টরিতে গিয়ে নিচের কমান্ডটি চালান:
dotnet user-secrets init
এটি সিক্রেট স্টোর তৈরি করে এবং প্রজেক্টকে সেই স্টোরের সাথে সংযুক্ত করে।
সংবেদনশীল ডেটা যোগ করতে নিচের কমান্ডটি ব্যবহার করুন:
dotnet user-secrets set "ApiKey" "your-api-key"
এখানে "ApiKey"
হলো কী এবং "your-api-key"
হলো এর মান।
সিক্রেট ডেটা অ্যাক্সেস করতে Configuration API ব্যবহার করা হয়। উদাহরণস্বরূপ:
Startup.cs ফাইলে সিক্রেট ব্যবহার:
public class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
var apiKey = _configuration["ApiKey"]; // সিক্রেট ডেটা রিড করা
Console.WriteLine($"Your API Key is: {apiKey}");
}
}
User Secrets সাধারণত ব্যবহারকারীর প্রোফাইলে লোকালি সংরক্ষণ করা হয়:
%APPDATA%\Microsoft\UserSecrets\<UserSecretsId>
~/.microsoft/usersecrets/<UserSecretsId>
ধরা যাক, ডাটাবেস কানেকশন স্ট্রিং একটি সিক্রেট হিসেবে সংরক্ষণ করতে হবে।
সিক্রেট যোগ করুন:
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Server=myServer;Database=myDB;User=myUser;Password=myPassword;"
appsettings.json এ কানেকশন স্ট্রিং ব্যবহার:
{
"ConnectionStrings": {
"DefaultConnection": ""
}
}
Startup.cs ফাইলে ব্যবহার:
public class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
var connectionString = _configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(connectionString));
}
}
বৈশিষ্ট্য | User Secrets | Azure Key Vault |
---|---|---|
ব্যবহার ক্ষেত্র | শুধুমাত্র ডেভেলপমেন্ট পরিবেশে | প্রোডাকশন এবং নিরাপদ পরিবেশে |
সংরক্ষণের ধরন | লোকাল ফাইল সিস্টেম | ক্লাউড-ভিত্তিক স্টোরেজ |
এনক্রিপশন | লোকাল সিস্টেমে এনক্রিপ্টেড ফাইল | ক্লাউড দ্বারা সম্পূর্ণ এনক্রিপশন |
অ্যাক্সেস কন্ট্রোল | শুধু লোকাল মেশিনে অ্যাক্সেসযোগ্য | Azure RBAC ব্যবহার করে অ্যাক্সেস কন্ট্রোল |
দাম | বিনামূল্যে | Azure সাবস্ক্রিপশন প্রয়োজন |
Secrets Management এবং User Secrets ASP.NET Core এ ডেভেলপমেন্ট পরিবেশে সংবেদনশীল ডেটা সুরক্ষিত রাখতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি কোডবেস থেকে সংবেদনশীল ডেটা আলাদা রাখে এবং ডেভেলপারদের জন্য নিরাপদ সমাধান প্রদান করে। প্রোডাকশন পরিবেশে Azure Key Vault বা অন্য ক্লাউড-ভিত্তিক সমাধান ব্যবহার করা উচিৎ। User Secrets ব্যবহার করে ডেভেলপমেন্ট পর্যায়ে আপনার অ্যাপ্লিকেশনের সিকিউরিটি অনেকটাই নিশ্চিত করা যায়।
common.read_more