Environment Variable
Environment Variable Kavramı
Ortam değişkenleri, hassas bilgileri (şifreler, API anahtarları, sertifikalar) veya yapılandırma değerlerini güvenli bir şekilde saklamak için kullanılır. Apinizer'da ortam değişkenleri proje seviyesinde tanımlanır ve iki tipte olabilir:
- Global (Tüm Ortamlar): Tüm ortamlarda aynı değeri kullanır
- Environment-Specific (Ortam Özelinde): Her ortam için farklı değerler tanımlanabilir
Hassas bilgiler şifrelenmiş olarak saklanabilir
Ortam veya proje seviyesinde tanımlanabilir
Şifrelenmiş değişkenler güvenli bir şekilde saklanır
Birden fazla API Proxy veya Task Flow'da kullanılabilir
Environment Variable Çözümleme Akışı
Aşağıdaki diyagram, environment variable'ların runtime'da nasıl çözümlendiğini ve environment'a göre değerlerin nasıl alındığını gösterir:
Değer Görünürlüğü: Secret ve Secret Olmayan
Ortam değişkeni değerlerinin tamamı veritabanında şifreli (AES-GCM) saklanır. Secret işareti
şifrelemeyi değil, değerin geri okunup okunamayacağını belirler.
Yapılandırma değerleri için kullanılır
URL'ler, port numaraları, flag'ler gibi değerler. Şifreli saklanır; ekranda maskeli gösterilir, göz ikonuyla açılabilir ve kopyalanabilir. Okuma API'lerinde ve dışa aktarma paketinde düz metin olarak yer alır.
Geri okunmaması gereken bilgiler için kullanılır
Şifreler, API anahtarları, token'lar. Kaydedildikten sonra hiçbir zaman görüntülenemez: ekranda
gösterilmez, API yanıtlarında null döner ve dışa aktarma paketine düz metin olarak girmez.
Önemli: Secret bir değer geri okunamaz. Değeri değiştirmek isterseniz yenisini yazmanız gerekir.
Secret Olarak İşaretlenmesi Gerekenler
- Şifreler: Veritabanı şifreleri, API anahtarları
- Sertifikalar: SSL/TLS sertifikaları
- Token'lar: OAuth token'ları, JWT secret'ları
- Diğer Hassas Bilgiler: Hiç kimsenin geri okumaması gereken tüm değerler
Secret İşaretlenmesi Gerekmeyenler
- URL'ler: Backend API URL'leri
- Port Numaraları: Port değerleri
- Flag'ler: Boolean değerler
- Diğer Yapılandırmalar: Genel yapılandırma değerleri
Environment Variable Tipleri
Bir ortam değişkeni oluşturulurken Tip alanında iki seçenekten biri seçilir:
Tek bir Global Değer girilir
Bu değer, değişkenin kullanıldığı her ortamda aynıdır. Örneğin tüm ortamlarda aynı olan bir sabit ya da ortak bir ayar.
Her ortam için ayrı bir değer girilir (Ortam Değerleri)
Gateway, çalıştığı ortamın adıyla eşleşen değeri kullanır. Örneğin ortam bazlı backend URL'leri, API anahtarları veya veritabanı bağlantı bilgileri.
Değerin Belirlenmesi
Gateway, ${variableName} ifadesini değişkenin adına göre çözümler:
- Global değişkenlerde tek bir değer vardır ve tüm ortamlarda bu değer kullanılır.
- Environment-Specific (ortama özel) değişkenlerde, gateway'in çalıştığı ortamın adıyla eşleşen değer kullanılır.
- Değişken bulunamazsa ya da ortama özel değişkende aktif ortam için değer tanımlı değilse, ifade boş string (
"") ile değiştirilir ve gateway uyarı log'u yazar.
Ortam değişkeni adları tüm projelerde ve yönetim seviyesinde benzersizdir. Başka bir projede veya yönetim seviyesinde zaten var olan bir adla yeni değişken kaydedilemez.
Çalışma Mantığı
Ortam değişkenleri proje seviyesinde tanımlanır
- Global: Tüm ortamlarda aynı değer
- Environment-Specific: Her ortam için farklı değer
Yapılandırma alanlarında ${variableName} formatında kullanılır
- Backend adresi:
${BACKEND_URL} - Veritabanı:
jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME} - API anahtarı:
${API_KEY}
API Proxy çalışırken otomatik çözümlenir
- Değişken ifadeleri tespit edilir
- Ortam değeri alınır
- Secret'lar decrypt edilir
- Gerçek değerle değiştirilir
Örnek Senaryo
Yapılandırma:
- Development:
BACKEND_URL = dev-api.example.com - Production:
BACKEND_URL = api.example.com - Yapılandırmada:
${BACKEND_URL}
Runtime Sonuçları:
- Development ortamında:
dev-api.example.com - Production ortamında:
api.example.com
Environment Variable Kullanım Formatı
Ortam değişkenleri, yapılandırma alanlarında özel bir format kullanılarak referans edilir.
Format Yapısı
| Format | Açıklama | Örnek |
|---|---|---|
${variableName} | Temel kullanım formatı | ${BACKEND_URL} |
text${variableName} | Metin ile birleştirme | https://${API_HOST} |
${variableName}text | Metin ile birleştirme | ${API_PORT}/api |
text${variable1}text${variable2} | Birden fazla değişken | jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME} |
Format Kuralları
${ ile başlamalıdır
} ile bitmelidir
Ortada değişken adı yer alır (boşluk olmadan)
Değişken adı büyük/küçük harf duyarlıdır
Environment Variable Kullanım Yerleri
Ortam değişkenleri Apinizer platformunda çeşitli yapılandırma alanlarında kullanılabilir. Environment Variable Seçim Dialog'u sadece belirli alanlarda mevcuttur.
Upstream Routing adresleri
Konum: API Proxy > Upstream/Routing Tab > Define Address(es)
Backend API adreslerinde ortam bazlı yönlendirme için kullanılır.
Veritabanı bağlantı yapılandırması
Konum: Administration > Connection Management > Database Connection Pool
JDBC URL, Username, Password alanlarında ortam bazlı yönetim.
LDAP bağlantı yapılandırması
Konum: Administration > Connection Management > LDAP Connection Pool
LDAP URL, Bind DN, Bind Password alanlarında ortam bazlı yönetim.
API Proxy - Routing Detayları
| Özellik | Açıklama |
|---|---|
| Konum | API Proxy > Upstream/Routing Tab > Define Address(es) |
| Alan | Backend API adresi input alanı |
| Kullanım | Backend API adreslerinde ortam bazlı yönlendirme |
| Erişim | Adres input alanının sağındaki liste ikonu butonuna tıklanarak |
Kullanım Senaryosu: Farklı ortamlarda farklı backend adresleri kullanmak için
Database Connection Detayları
| Özellik | Açıklama |
|---|---|
| Konum | Administration > Connection Management > Connection Pool Def DB |
| Alanlar | JDBC URL, Username, Password |
| Kullanım | Veritabanı bağlantı bilgilerinde ortam bazlı yönetim |
| Dialog Erişimi | Her alanın sağındaki liste ikonu butonuna tıklanarak |
| Secret Kullanımı | Password alanı mutlaka secret olarak işaretlenmelidir |
Kullanım Senaryosu: Farklı ortamlarda farklı veritabanı bağlantı bilgileri kullanmak için
LDAP Connection Detayları
| Özellik | Açıklama |
|---|---|
| Konum | Administration > Connection Management > Connection Pool Def LDAP |
| Alanlar | LDAP URL, Bind DN, Bind Password |
| Kullanım | LDAP bağlantı bilgilerinde ortam bazlı yönetim |
| Dialog Erişimi | Her alanın sağındaki liste ikonu butonuna tıklanarak |
| Secret Kullanımı | Bind Password mutlaka secret olarak işaretlenmelidir |
Kullanım Senaryosu: Farklı ortamlarda farklı LDAP bağlantı bilgileri kullanmak için
Kullanım Senaryoları ve Örnekler
Backend API Adresi Yönetimi
Problem: Farklı ortamlarda farklı backend API adresleri kullanılıyor.
Çözüm:
Ortam Değişkeni Oluşturma:
- Key Name:
BACKEND_API_URL - Type: Environment-Specific
- Development:
https://dev-api.example.com - Test:
https://test-api.example.com - Production:
https://api.example.com
Routing'de Kullanım:
- Address:
${BACKEND_API_URL}
Sonuç:
- Development ortamında istekler
https://dev-api.example.comadresine gider - Test ortamında istekler
https://test-api.example.comadresine gider - Production ortamında istekler
https://api.example.comadresine gider
Veritabanı Bağlantı Yönetimi
Problem: Her ortamda farklı veritabanı kullanılıyor.
Çözüm:
Ortam Değişkenleri:
DB_HOST: Development=dev-db.example.com, Production=prod-db.example.comDB_PORT: Global=3306DB_NAME: Development=dev_db, Production=prod_dbDB_USER: Development=dev_user, Production=prod_userDB_PASSWORD: Development=dev_pass, Production=prod_pass(Secret)
Connector'da Kullanım:
- Connection String:
jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME} - Username:
${DB_USER} - Password:
${DB_PASSWORD}
Sonuç:
- Development:
jdbc:mysql://dev-db.example.com:3306/dev_db - Production:
jdbc:mysql://prod-db.example.com:3306/prod_db
API Anahtarı Yönetimi
Problem: Dış servisler için farklı API anahtarları kullanılıyor.
Çözüm:
Ortam Değişkeni:
- Key Name:
EXTERNAL_SERVICE_API_KEY - Type: Environment-Specific
- Development:
dev-key-abc123(Secret) - Production:
prod-key-xyz789(Secret)
Policy'de Kullanım:
- Header Name:
X-API-Key - Header Value:
${EXTERNAL_SERVICE_API_KEY}
Sonuç:
- Development:
X-API-Key: dev-key-abc123 - Production:
X-API-Key: prod-key-xyz789
Environment Variable Oluşturma
Ortam değişkeni oluşturma adımları:
Adım 1: Yeni Ortam Değişkeni Ekleme
- Ortam Değişkenleri sayfasına gidin
- Sağ üst köşedeki "Oluştur" (Create) butonuna tıklayın
- Ortam Değişkeni düzenleme penceresi açılır
Adım 2: Temel Bilgileri Girme
-
Key Name (Değişken Adı):
- Zorunlu alan
- Proje içinde benzersiz olmalıdır
- İsim kontrolü otomatik yapılır
- Geçerli isim: Yeşil onay işareti
- Mevcut isim: Kırmızı uyarı işareti
-
**Açıklama **:
- İsteğe bağlı alan
- Değişkenin ne için kullanıldığını açıklar
Adım 3: Tip Seçimi
-
Environment-Specific (Ortam Özelinde):
- Her ortam için farklı değer tanımlanabilir
- Yeni kayıt oluştururken seçilir
- Kayıt oluşturulduktan sonra değiştirilemez
-
Global (Tüm Ortamlar):
- Tüm ortamlarda aynı değer kullanılır
- Yeni kayıt oluştururken seçilir
- Kayıt oluşturulduktan sonra değiştirilemez
Önemli: Tip seçimi sadece yeni kayıt oluştururken yapılabilir. Mevcut kayıtların tipi değiştirilemez.
Adım 4: Değer Tanımlama
Environment-Specific Değişkenler İçin:
- Ortam Ekleme: "Ortam Ekle" butonuna tıklayarak yeni ortam ekleyin
- Ortam Seçimi: Her değer için bir ortam seçin
- Mevcut ortamlar listeden seçilir
- "Custom..." seçeneği ile özel ortam adı girilebilir
- Değer Girme: Her ortam için değer girin
- Secret Ayarlama: Hassas bilgiler için "Secret" checkbox'ını işaretleyin
- Secret değerler kaydedildikten sonra maskelenir (
***********) - Secret değerler şifrelenerek saklanır
- Güncelleme sırasında değer değiştirilmemişse mevcut değer korunur
- Secret değerler kaydedildikten sonra maskelenir (
Global Değişkenler İçin:
- Global Değer: Tek bir değer girin (tüm ortamlar için geçerli)
- Secret Ayarlama: Hassas bilgiler için "Secret" checkbox'ını işaretleyin
Adım 5: Kaydetme ve Deployment
- Form Kontrolü: Tüm zorunlu alanlar doldurulmalı ve isim geçerli olmalı
- "Kaydet ve Deploy" butonuna tıklayın
- Onay Dialog'u:
- Değişken adını tekrar girmeniz istenir (güvenlik için)
- Etkilenecek bileşenler listelenir:
- API Proxy Routing ayarları
- Policy Configuration ayarları
- Connector ayarları
- Diğer yapılandırma ayarları
- Deployment Sonucu:
- Tüm çalışan ortamlara (Environments) otomatik olarak deploy edilir
- Deployment sonuçları gösterilir
Önemli: Secret olarak işaretlenen değerler kaydedildikten sonra bir daha görüntülenemez.
Environment Variable Düzenleme
Düzenleme Modal'ının Açılması
Düzenleme modal'ı aşağıdaki yollarla açılabilir:
| Yöntem | Açıklama |
|---|---|
| Liste'den Tıklama | Ortam değişkeni adına tıklanır |
| Menü'den Seçim | Satır sonundaki menüden "Edit" seçilir |
Düzenleme Modal'ındaki Farklılıklar
| Özellik | Yeni Kayıt | Düzenleme |
|---|---|---|
| Modal Başlığı | "Add Environment Variable" | "Edit Environment Variable" |
| Type Seçimi | Aktif (değiştirilebilir) | Pasif (değiştirilemez) |
| Secret Değerler | Normal görünür | Maskelenmiş görünür (***********) |
| Secret Checkbox | Aktif | Kaydedilmiş secret'lar için pasif |
Best Practices
Güvenlik
- Hassas bilgileri mutlaka şifrelenmiş olarak saklayın
- Şifreler, API anahtarları, sertifikalar için encrypted kullanın
- Düzenli olarak şifreleri değiştirin
Organizasyon
- Değişken isimlerini tutarlı bir şekilde adlandırın
- Ortam ve proje seviyesi değişkenleri doğru şekilde ayırın
- Dokümantasyon olu şturun
Yönetim
- Kullanılmayan değişkenleri temizleyin
- Değişken kullanımını düzenli olarak gözden geçirin
- Versiyon kontrolü yapın