API Anahtarı Yönetimi

API anahtarları, uygulamanızın MyAIDepartments platformuna güvenli erişimini sağlar. Bu rehberde API anahtarlarının oluşturulması, yönetimi ve güvenliği anlatılmaktadır.

API Anahtarı Oluşturma

Dashboard Üzerinden

  1. Dashboard'a giriş yapın
  2. Ayarlar > API Anahtarları bölümüne gidin
  3. "Yeni API Anahtarı Oluştur" butonuna tıklayın
  4. Anahtara açıklayıcı bir isim verin
  5. İzinleri seçin (read, write, delete)
  6. "Oluştur" butonuna tıklayın

Anahtar Formatı

pk_live_1234567890abcdefghijklmnop
│  │    └─ Random string (token)
│  └─ Environment (live/test)
└─ Prefix (pk = public key)

Anahtar Tipleri

Test Anahtarı (Test Mode)

pk_test_xxxxxxxxxxxxx
sk_test_xxxxxxxxxxxxx
  • Gerçek veri oluşturmaz
  • Sandbox ortamda çalışır
  • Geliştirme ve test için idealdir
  • Limitsiz kullanım

Canlı Anahtar (Live Mode)

pk_live_xxxxxxxxxxxxx
sk_live_xxxxxxxxxxxxx
  • Gerçek verilerle çalışır
  • Production ortamda kullanılır
  • Rate limit uygulanır
  • Faturalaması yapılır

İzin Seviyeleri

Her API anahtarına farklı izinler atayabilirsiniz:

Okuma İzni (Read)

{
  "permissions": ["read"],
  "scopes": [
    "conversations:read",
    "calls:read",
    "accounts:read",
    "analytics:read"
  ]
}

Yapabilir:

  • Konuşmaları görüntüleme
  • Aramaları listeleme
  • Hesap bilgilerini okuma
  • Analitikleri görüntüleme

Yapamaz:

  • Yeni kayıt oluşturma
  • Güncelleme
  • Silme

Yazma İzni (Write)

{
  "permissions": ["read", "write"],
  "scopes": ["conversations:write", "calls:write", "accounts:write"]
}

Yapabilir:

  • Okuma izinlerinin tümü
  • Yeni konuşma başlatma
  • Hesap oluşturma/güncelleme
  • Ayarları değiştirme

Yapamaz:

  • Silme işlemleri
  • Admin işlemleri

Tam İzin (Full Access)

{
  "permissions": ["read", "write", "delete"],
  "scopes": ["*"]
}

⚠️ Dikkat: Tam izin verirken çok dikkatli olun!

Anahtar Güvenliği

✅ Yapılması Gerekenler

  1. Ortam Değişkenlerinde Saklayın
# .env dosyası
MYAI_API_KEY=sk_live_xxxxxxxxxxxxx
MYAI_API_SECRET=whsec_yyyyyyyyyyyyy
// Kullanım
const apiKey = process.env.MYAI_API_KEY;
  1. Farklı Ortamlar İçin Farklı Anahtarlar
Development  → pk_test_dev_xxxxx
Staging      → pk_test_stg_xxxxx
Production   → pk_live_prd_xxxxx
  1. IP Whitelist Kullanın
Allowed IPs:
  - 203.0.113.0/24
  - 198.51.100.0/24
  1. Düzenli Olarak Rotate Edin

Anahtarları her 90 günde bir yenileyin.

❌ Yapılmaması Gerekenler

  1. Git'e Commit Etmeyin
# .gitignore
.env
.env.local
secrets/
  1. Client-Side Kodda Kullanmayın
// ❌ YANLIŞ - API anahtarı görünür!
const apiKey = "sk_live_xxxxx";
fetch("https://api.myaidepartments.com", {
  headers: { Authorization: `Bearer ${apiKey}` },
});
// ✅ DOĞRU - Backend'den istek yapın
fetch("/api/your-backend-endpoint");
  1. Herkese Açık Yerlerde Paylaşmayın
  • Slack kanalları
  • Email
  • Screenshot'lar
  • Public GitHub repo'ları

Anahtar Rotasyonu

Adım 1: Yeni Anahtar Oluştur

curl -X POST https://api.myaidepartments.com/v1/api-keys \
  -H "Authorization: Bearer CURRENT_KEY" \
  -d '{"name": "New Production Key"}'

Adım 2: Uygulamayı Güncelle

Her ortamda anahtar değişikliğini test edin.

Adım 3: Eski Anahtarı Deaktive Et

curl -X DELETE https://api.myaidepartments.com/v1/api-keys/{key_id} \
  -H "Authorization: Bearer CURRENT_KEY"

Adım 4: İzleyin

Eski anahtarla istek gelip gelmediğini kontrol edin.

Anahtar İzleme

Kullanım İstatistikleri

Dashboard'da her anahtar için:

┌─────────────────────────────────────────┐
│  API Anahtar: Production Key            │
├─────────────────────────────────────────┤
│  Toplam İstek: 1,234,567                │
│  Başarılı: 1,234,000 (99.95%)           │
│  Başarısız: 567 (0.05%)                 │
│  Son Kullanım: 2 dakika önce            │
│  Son IP: 203.0.113.45                   │
└─────────────────────────────────────────┘

Alarm Kurma

Kritik olaylar için alarm oluşturun:

Alarms:
  - Type: High Error Rate
    Threshold: >5% in 5 minutes
    Action: Send email & Slack notification

  - Type: Unusual IP
    Condition: New IP address
    Action: Send security alert

  - Type: Rate Limit
    Threshold: >80% of limit
    Action: Send warning email

Çoklu Anahtar Yönetimi

Büyük ekipler için öneriler:

Anahtar Adlandırma

{environment}-{service}-{purpose}-{date}

Örnekler:
prod-api-backend-2025-01
test-webhook-staging-2025-01
dev-frontend-local-2025-01

Anahtar Matrisi

OrtamBackendFrontendMobileWebhook
Dev
Test
Staging
Prod

API Anahtar İpuçları

💡 Pro Tips:

  1. Metadata Kullanın: Her anahtara metadata ekleyin
{
  "metadata": {
    "team": "backend",
    "project": "main-api",
    "owner": "ahmet@example.com"
  }
}
  1. Expiry Date Belirleyin: Anahtarların otomatik expire olmasını sağlayın

  2. Minimum İzin Prensibi: Sadece gerekli izinleri verin

  3. Monitoring Tool Kullanın: Datadog, New Relic gibi araçlarla izleyin

API Anahtar Sızıntısı

Anahtar Sızdıysa Ne Yapmalı?

  1. Hemen Deaktive Edin (1-2 dakika içinde)
  2. Yeni Anahtar Oluşturun
  3. Sızıntı Kaynağını Bulun
  4. Güvenlik Loglarını İnceleyin
  5. Gerekirse Şifreyi Değiştirin

GitHub Token Scanner

GitHub otomatik olarak sızan tokenları tespit eder:

⚠️ Secret scanning alert

Found: MY_AI_DEPARTMENTS_API_KEY
Location: config.js:14

CLI ile Anahtar Yönetimi

# Tüm anahtarları listele
myai keys list

# Yeni anahtar oluştur
myai keys create --name "Prod API" --permissions read,write

# Anahtar detaylarını göster
myai keys show key_abc123

# Anahtarı sil
myai keys delete key_abc123

# Anahtar kullanım istatistikleri
myai keys stats key_abc123

Sonraki Adımlar