Configuration Management (Yapılandırma Yönetimi)¶
Uygulama yapılandırması, bir yazılımın farklı ortamlarda (geliştirme, test, üretim) doğru şekilde çalışmasını sağlamak için kritik öneme sahiptir. Yanlış yapılandırma yönetimi, güvenlik açıklarına veya uygulama hatalarına yol açabilir.
1. Sabit Kodlanmış (Hardcoded) Değerler Kullanımı¶
❌ Yanlış Kullanım: Yapılandırmaları doğrudan kod içinde tanımlamak.
public class DatabaseConfig
{
public string ConnectionString => "Server=localhost;Database=MyApp;User=admin;Password=password;";
}
✅ İdeal Kullanım: appsettings.json
veya çevresel değişkenler kullanarak yapılandırmaları dışsallaştırın.
appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=MyApp;User=admin;Password=password;"
}
}
Kullanım:
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
2. Çevresel Yapılandırmaların Yetersiz Yönetimi¶
❌ Yanlış Kullanım: Tüm ortamlar için aynı yapılandırmayı kullanmak.
{
"Environment": "Production",
"Logging": {
"LogLevel": "Information"
}
}
✅ İdeal Kullanım: Ortam bazlı yapılandırmaları ayrı dosyalarla yönetin.
appsettings.Development.json:
{
"Environment": "Development",
"Logging": {
"LogLevel": "Debug"
}
}
appsettings.Production.json:
{
"Environment": "Production",
"Logging": {
"LogLevel": "Error"
}
}
3. Gizli Bilgilerin Açığa Çıkarılması¶
❌ Yanlış Kullanım: API anahtarları veya şifreleri açık şekilde saklamak.
{
"APIKey": "12345-secret-key"
}
✅ İdeal Kullanım: Gizli bilgileri çevresel değişkenlerde veya güvenli bir yapılandırma hizmetinde saklayın.
Kullanım:
var apiKey = Environment.GetEnvironmentVariable("MY_APP_API_KEY");
4. Yapılandırma Değişikliklerini Yeniden Dağıtım Gerektirmek¶
❌ Yanlış Kullanım: Yapılandırma değişiklikleri için uygulamanın yeniden başlatılması.
public class Config
{
public string SomeSetting { get; set; } = "DefaultValue";
}
✅ İdeal Kullanım: Dinamik yapılandırma yüklemeleri yapın.
Örnek: Azure App Configuration veya diğer dinamik yapılandırma araçlarını kullanın.
builder.Configuration.AddAzureAppConfiguration("ConnectionString");
5. Gereksiz Karmaşıklık Yaratmak¶
❌ Yanlış Kullanım: Gereksiz yapılandırma anahtarları ve karmaşıklık.
{
"AppSettings": {
"Feature1": {
"Enabled": true,
"MaxItems": 10,
"Timeout": 5000
},
"Feature2": {
"Enabled": false,
"MaxItems": 5,
"Timeout": 2000
}
}
}
✅ İdeal Kullanım: Sade ve okunabilir yapılandırmalar oluşturun.
{
"Features": [
{
"Name": "Feature1",
"Enabled": true,
"MaxItems": 10,
"Timeout": 5000
},
{
"Name": "Feature2",
"Enabled": false,
"MaxItems": 5,
"Timeout": 2000
}
]
}
6. Ortam Değişkenlerinin Yanlış Kullanımı¶
❌ Yanlış Kullanım: Ortam değişkenlerini doğrudan ve düzensiz bir şekilde okumak.
var setting = Environment.GetEnvironmentVariable("MY_APP_SETTING");
✅ İdeal Kullanım: Ortam değişkenlerini yapılandırma ile birleştirin.
builder.Configuration.AddEnvironmentVariables();
var setting = builder.Configuration["MY_APP_SETTING"];