1. İstemci yalnızca API’ye bağlansın
Flutter, React Native veya web istemcisine kalıcı MySQL / PostgreSQL şifresi koymayın. Uygulama paketleri ve web kodu incelenebilir. API, kullanıcının oturumunu doğrular ve izin verilen sorguyu sunucu tarafında çalıştırır. Veritabanı portunun internete açılması temel bir gereklilik değildir.
2. Kayda erişimi backend’de doğrulayın
Geçerli oturum her kayda erişim izni vermez. Kullanıcının organizasyon üyeliği, rolü ve kayıt sahipliği ilgili sorguda değerlendirilmelidir. İstemciden gelen project_id veya organization_id doğrulanmadan güvenilir kabul edilmez. Listeleme kadar tek kayıt okuma, güncelleme ve silme de bu sınıra uymalıdır.
3. SQL kullanıcısını sınırlayın
Uygulama sorgularına yalnızca gereken yetkileri verin. Schema migration ve yönetim işleri ayrı bir operatör yetkisiyle planlanabilir. Uygulamanın rutin bağlantısının veritabanı superuser hesabı olmasına gerek yoktur. Şifre değişimi için uygulama bağlantılarını kesmeden ilerleyen bir plan hazırlayın.
4. TLS’te sertifikayı da doğrulayın
Şifreli bağlantı ile sunucunun kimliğini doğrulamak farklı kontrollerdir. PostgreSQL libpq bağlantılarında verify-full, sertifika güven zinciriyle host adını birlikte kontrol eder. Güvenilir CA bilgisini sağlayıcının tarifine göre yapılandırın. Farklı sürücülerin seçenekleri değişebilir; TLS doğrulamasını kapatarak bağlantı hatasını gizlemeyin.
postgresql://app_user:<secret>@db.internal:5432/app?sslmode=verify-full
# Temsili bağlantı. Gerçek host, secret ve CA bilgisi sağlayıcıdan gelir.5. Bağlantı havuzunu ölçülü kullanın
Her HTTP isteği için yeni bağlantı açmak yerine bir havuz kullanın. Toplam bağlantı sınırını web süreçleri ve worker sayısıyla birlikte hesaplayın. Bağlantı timeout’unu, boşta kalan bağlantıları ve sorgu sürelerini izleyin. Kullanılmayan bağlantıları kapatmak deployment sırasında da önemlidir.
6. Backup ile restore’u ayrı kontrol edin
Yedek dosyasının oluşması, verinin geri yüklenebildiğini tek başına kanıtlamaz. Saklama süresini, erişim izinlerini ve geri yükleme adımlarını belirleyin. Restore’u ayrı bir ortamda deneyip uygulama verisinin tutarlı olduğunu kontrol edin. Uygulama Cloud şu anda müşteri veritabanı yedeği veya restore hizmeti sunmaz.
7. Bağlantı hatasını güvenli inceleyin
Ağ erişimi, DNS, port, kullanıcı yetkisi ve TLS doğrulamasını ayrı ayrı inceleyin. Hata raporuna şifre veya tam connection string eklemeyin. Canlı sağlayıcı bağlı değilken paneldeki bir kaynak tanımının gerçek bağlantı bilgisi sağlamayacağını unutmayın.