Azure Functions'ta Environment Variable ve Secret Yönetimi

Azure Functions'ta API anahtarları, veritabanı şifreleri ve diğer hassas veriler doğrudan koda yazılırsa güvenlik riski oluşur. Bu bilgileri environment variable ve Azure Key Vault üzerinden yönetmek gerekir.

Local.settings.json ile Geliştirme Ortamı

Lokal geliştirmede `local.settings.json` dosyasında değişkenleri tanımlarsın. Bu dosya git'e eklenmez.

1{
2"IsEncrypted": false,
3"Values": {
4"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=...",
5"FUNCTIONS_WORKER_RUNTIME": "python",
6"API_KEY": "your-api-key-here",
7"DB_CONNECTION": "Server=localhost;...",
8"ENVIRONMENT": "development"
9}
10}

Python fonksiyonunda bu değişkenleri `os.environ` ile oku:

1import azure.functions as func
2import os
3
4def main(req: func.HttpRequest) -> func.HttpResponse:
5api_key = os.environ.get("API_KEY")
6db_conn = os.environ.get("DB_CONNECTION")
7
8if not api_key:
9return func.HttpResponse("API_KEY not found", status_code=500)
10
11return func.HttpResponse(f"Connected with key: {api_key[:5]}...")

Azure Key Vault Entegrasyonu

Üretim ortamında Key Vault kullan. Önce bir Key Vault oluştur, sonra Function App'e erişim izni ver. Function App'in Managed Identity'sini Key Vault'ta Secret Reader olarak ayarla.

Fonksiyon kodunda Key Vault'tan gizli bilgi çek:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

[cod]
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
vault_url = "https://your-vault.vault.azure.net/"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=vault_url, credential=credential)

try:
api_key = client.get_secret("api-key").value
db_pass = client.get_secret("db-password").value
return func.HttpResponse(f"Secrets retrieved successfully")
except Exception as e:
return func.HttpResponse(f"Error: {str(e)}", status_code=500)
[/kod]

Azure Portal üzerinden Uygulama Ayarları

Function App > Configuration > Application settings bölümünde değişkenleri ekle. Bu değerler otomatik olarak `os.environ`'dan erişilebilir. Gizli bilgiler için Key Vault reference kullan: `@Microsoft.KeyVault(SecretUri=https://vault.vault.azure.net/secrets/secret-name/)`

Sık Yapılan Hatalar

- `local.settings.json`'u git'e ekleme; `.gitignore`'a ekle.
- Key Vault anahtarı yanlış yazılırsa `DefaultAzureCredential` başarısız olur; Managed Identity izinlerini kontrol et.
- Üretim ortamında hardcoded değerleri silmeyi unutma.

Bu yöntemle hassas veriler koddan ayrı tutulur, erişim kontrol edilir ve audit trail oluşturulur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz