Güvenlik ve en iyi uygulamalar

Reseller API

API, her çağrının doğrudan finansal etkisi olduğu ve hassas sunucu erişim bilgilerine ulaşabileceği varsayımıyla tasarlanmıştır. Bu nedenle güvenlik gereksinimleri REST standardının çok üzerindedir.

Uygulanan koruma mekanizmaları

  • HMAC-SHA256: Her istek; metot, yol, zaman damgası, nonce ve gövde hash'i üzerinden HMAC-SHA256 ile imzalanır. Sabit zamanlı doğrulama (hash_equals).
  • AES-256-GCM: Gizli anahtarlar yalnızca AES-256-GCM şifreli olarak saklanır (libsodium). Ana anahtar veritabanı dışında /etc/kh-reseller-api/master.key.v{N} yolunda tutulur.
  • Replay protection: Zaman damgası penceresi +-300s, nonce önbelleği 600s. Başarıyla imzalanmış bir istek tekrar gönderilemez.
  • Scope-based authorization: Anahtar başına açık kapsam/izin listesi. Yazma yetkili ve hassas kapsam/izinler açıkça etkinleştirilmek zorundadır.
  • IP whitelist (optional): Anahtar başına isteğe bağlı IP beyaz listesi (CIDR gösterimi, IPv4 ve IPv6).
  • Rate limit: Çok katmanlı: anahtar başına (dakika + gün) ve IP başına (dakika). Burst toleranslı token bucket.
  • Idempotency: Siparişler ve yıkıcı servis aksiyonları Idempotency-Key gerektirir. Ağ tekrar denemelerine karşı 24 saatlik replay koruması.
  • Tenant isolation: Her veritabanı sorgusu hesap kimliğinize sıkı filtre uygular. Kiracılar arası erişim tasarım gereği imkânsızdır.
  • Tamper-evident audit log: Her istek, zincir hash'i ile denetim kaydına işlenir (chain_hash[n] = sha256(chain_hash[n-1] || row_n)). Geriye dönük manipülasyon hash kırılmasıyla anında tespit edilir.
  • Credentials.read alerting: Her credentials.read çağrısı özel bir denetim kaydı ve hesap sahibine isteğe bağlı bir onay e-postası oluşturur.
  • SSRF-guarded webhooks: Webhook URL'leri kayıt öncesinde denetlenir: yalnızca HTTPS, DNS çözümlemesi yalnızca herkese açık IP'ler döndürmelidir (RFC1918 yok, link-local yok).

Bayi tarafında en iyi uygulamalar

  • Gizli anahtarı bir gizli anahtar yöneticisinde saklayın (HashiCorp Vault, AWS Secrets Manager, Doppler, 1Password), asla kodda, asla git deposunda tutmayın.
  • Gizli anahtarı düzenli olarak döndürün (en az yılda bir veya personel değişikliği sonrası). Müşteri panelinden tek tıkla rotasyon, eski gizli anahtar derhal geçersiz olur.
  • Her kullanım senaryosu için minimum kapsam/izinli ayrı bir anahtar (mümkünse salt okunur). "Tam yetkili" anahtardan kaçının.
  • Entegrasyonunuz sabit IP'lerden çalışıyorsa (bulut, bastion): IP beyaz listesi tanımlayın.
  • Idempotency-Key değerini sunucu tarafında üretip kalıcı saklayın, her yeniden denemede rastgele üretmeyin. Öneri: mantıksal sipariş başına UUIDv4.
  • Webhook'u kendi URL'nize yönlendirin, en azından order.created ve credentials.read olaylarını olay akışı olarak izleyin.

Güvenlik bildirimi

Güvenlik açıklarını lütfen gizli olarak security@kernelhost.com adresine bildirin. Talep üzerine PGP anahtarı verilir. 24 saat içinde yanıt garantilidir. Bug bounty programı hazırlık aşamasındadır.