Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.payven.com.tr/llms.txt

Use this file to discover all available pages before exploring further.

API anahtarınız, kuruluşunuz adına işlem yapma yetkisidir. Aşağıdaki kurallara uymak sızıntı riskini ve sızıntı sonrası etkiyi minimuma indirir.

Kuralname

Asla kaynak kodda tutmayın — anahtarları .env, secret manager veya environment variable olarak yönetin.
Asla istemcide tutmayın — tarayıcı, mobil uygulama veya desktop client’a göndermeyin. Tüm Payven çağrıları sunucu tarafından yapılmalı.
Asla loglara yazmayın — log framework’ünüzde request/response loglama açıksa anahtar header’larını maskeleyin.
Asla destek ekibine paylaşmayın — Payven destek ekibi sizden anahtarınızı istemez.
Sandbox ve production’ı ayırın — farklı anahtarlar, farklı secret store’lar.
IP whitelist tanımlayın — production anahtarları için zorunlu kabul edin.
Düzenli rotasyon — minimum 6 ayda bir, sızıntı şüphesinde anında.
Audit logları izleyin — konsoldaki API kayıtları ekranından beklenmeyen istek varsa hemen tepki verin.

Anahtar saklama önerileri

OrtamÖnerilen secret store
AWSAWS Secrets Manager veya Parameter Store (SecureString)
AzureAzure Key Vault
GCPSecret Manager
KubernetesExternal Secrets Operator + cloud KMS
On-premiseHashiCorp Vault
Geliştirme.env (commit edilmez) + direnv veya dotenv

Çoklu anahtar stratejisi

Tek bir anahtarla çalışmak yerine işlevlere göre ayrılmış anahtarlar oluşturmanız önerilir:
AnahtarKullanım
payments-prodSadece ödeme alma servisinde kullanılan production anahtarı
reporting-prodSadece raporlama job’larında kullanılan, daha kısıtlı IP whitelist’li anahtar
dev-team-sandboxGeliştirici ekibinin paylaştığı sandbox anahtarı
Avantajlar: Bir anahtar sızdığında etki alanı sınırlı kalır, audit’lerde hangi servisin ne yaptığını ayırt etmek kolaylaşır.

Rotasyon prosedürü

Sıfır kesinti ile rotasyon:
1

Yeni anahtar üretin

Konsol → API Anahtarları → Yeni Anahtar Oluştur. Mevcut anahtarı silmeyin.
2

Yeni anahtarı secret store'a yazın

Production secret manager’ında yeni değeri kaydedin.
3

Servisinizi yeniden deploy edin

Yeni anahtar ile başlayan servis pod/instance’ları çalışmaya başlasın. Eski olanlar hâlâ eski anahtarla çalışıyor — ikisi de geçerli.
4

Audit log'u izleyin

Konsol → API Kayıtları ekranında eski anahtara gelen istek olup olmadığını izleyin. Trafik sıfıra inene dek bekleyin.
5

Eski anahtarı pasife alın

Trafik tamamen kesildiğinde eski anahtarı silin.

Sızıntı şüphesinde acil müdahale

Anahtarınızın sızdığını düşündüğünüz an aşağıdaki adımları paralel uygulayın:
1

Anahtarı hemen pasife alın

Konsoldan anahtarı silin veya pasife çekin. Süreç anlıktır.
2

Yeni anahtar üretip servisinizi rotasyona alın

Yukarıdaki adımları hızlandırılmış şekilde uygulayın.
3

Audit log incelemesi

Sızıntı penceresinde gerçekleşen tüm işlemleri konsol → API Kayıtları’ndan ekstrakt edin.
4

Destek ekibine bildirin

Destek talebi açın — etki analizi konusunda yardım alın.

Loglama kuralı

Request/response loglaması yapan kütüphaneler için header maskeleme örneği:
public class SensitiveHeaderRedactor : DelegatingHandler
{
    private static readonly string[] SensitiveHeaders =
    {
        "X-API-Secret", "X-API-Key", "Authorization"
    };

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken ct)
    {
        var clone = new HttpRequestMessage(request.Method, request.RequestUri);
        foreach (var header in request.Headers)
        {
            var value = SensitiveHeaders.Contains(header.Key, StringComparer.OrdinalIgnoreCase)
                ? new[] { "***REDACTED***" }
                : header.Value.ToArray();
            clone.Headers.Add(header.Key, value);
        }
        // logger logs `clone`, sends `request`
        return await base.SendAsync(request, ct);
    }
}