64 lines
1.3 KiB
Markdown
64 lines
1.3 KiB
Markdown
# ADR-003: Named API Keys Stratejisi
|
||
|
||
## Durum
|
||
|
||
Kabul edildi
|
||
|
||
## Bağlam
|
||
|
||
API güvenliği için authentication yöntemi belirlememiz gerekiyor. Birden fazla frontend olacak (Web, Mobile, Admin).
|
||
|
||
## Seçenekler
|
||
|
||
1. **Tek API Key**: Tüm frontend'ler aynı key'i kullanır
|
||
2. **Named API Keys**: Her frontend için ayrı key
|
||
3. **Database API Keys**: Key'ler DB'de tutulur, yönetim paneli ile
|
||
|
||
## Karar
|
||
|
||
**Named API Keys** (.env'de tanımlı) seçildi.
|
||
|
||
## Yapılandırma
|
||
|
||
```env
|
||
API_KEY_WEB=web-frontend-key-xxx
|
||
API_KEY_MOBILE=mobile-app-key-yyy
|
||
API_KEY_ADMIN=admin-key-zzz
|
||
```
|
||
|
||
## Gerekçe
|
||
|
||
### Tek Key Eksikleri
|
||
- Hangi frontend'in istek attığı belli değil
|
||
- Tek bir frontend engellenemez
|
||
- Audit trail yok
|
||
|
||
### Database Key Eksikleri
|
||
- Ekstra kompleksite
|
||
- Yönetim paneli gerektirir
|
||
- Başlangıç için overkill
|
||
|
||
### Named Keys Avantajları
|
||
1. **İzlenebilirlik**: Hangi frontend'in istek attığı bilinir
|
||
2. **Kontrol**: Tek bir frontend'in erişimi kapatılabilir
|
||
3. **Basitlik**: .env ile yönetim
|
||
4. **Güvenlik**: Her frontend için ayrı secret
|
||
|
||
## Sonuçlar
|
||
|
||
### Olumlu
|
||
- Frontend bazlı rate limiting
|
||
- Kolay key rotasyonu
|
||
- Basit yapılandırma
|
||
|
||
### Olumsuz
|
||
- Yeni frontend için .env güncellemesi gerekir
|
||
- Key yönetimi manuel
|
||
|
||
### Gelecek
|
||
Gerekirse Database API Keys sistemine geçiş yapılabilir.
|
||
|
||
## Tarih
|
||
|
||
2025-02-27
|