Bir geliştiricinin dizüstü bilgisayarı özel RDS uç noktasına bağlanırken zaman aşımına uğruyor, oysa aynı kimlik bilgileri bir bastion sunucusundan çalışıyor. Hiçbir şey çökmüş değil. O dizüstü ile veritabanı arasındaki yolda üç şeyden biri eksik: çözümlenen bir ad, trafiği taşıyan bir yol ya da veritabanının gerçekten gördüğü kaynağa izin veren bir güvenlik grubu kuralı. Diğer ikisini değiştirmeden önce hangisinin eksik olduğunu bulun.

Hatayı doğru katmanda okuyun

Zaman aşımı tek bir hata değildir. Çözümlenmeyen bir ad, paket makineden çıkmadan başarısız olur. Yolu olmayan bir adres paketleri kara deliğe gönderir. Filtrelenmiş bir bağlantı noktası, yanlış sunucuya tıpatıp benzeyen bir bekleme üretir. Adımları sırayla uygulayın ve ilk başarısız olan adımda durun.

dig +short db.internal.example
nc -vz db.internal.example 5432

Ad genel bir adres döndürüyorsa ya da hiçbir şey döndürmüyorsa, tünel henüz sorun değildir.

Ad çözümleniyor ve bağlantı noktası testi takılıyorsa, çözümlediğiniz adresi veritabanının bildirdiği adresle karşılaştırın. Yönetilen bir uç nokta VPC içinde özel bir adrese, dışında ise işe yarar hiçbir şeye çözümlenmeyebilir; eski bir sorgudan kopyalanan adres ise artık yanıt vermeyen bir sunucuyu gösterir.

Tüneli yoldan ayırın

İstemci VPN'ine bağlanmak her özel aralığı otomatik olarak yönlendirmez. Profil, hizmetin ittiği yolları taşır ve istemci bunların yalnızca bir kısmını kurabilir. İstemcinin gerçekte hangi aralıkları eklediğine ve veritabanı adresinin bunlardan birinin içine düşüp düşmediğine bakın.

ip route get 10.20.40.15
ip addr show tun0

Tünel arayüzüne işaret eden bir yol gereklidir; yeterli değildir, çünkü karşı taraf trafiği yine de kabul etmek zorundadır.

Bölünmüş tünel profilleri bu yarım başarısızlığın olağan kaynağıdır. Profilin tasarlandığı uygulama için çalışırlar ve veritabanı aralığını tünelin dışında bırakırlar; bu da bir güvenlik duvarının üreteceği zaman aşımının aynısını üretir.

Güvenlik grubunu gerçek kaynakla eşleştirin

RDS güvenlik grubu insanlara değil kaynaklara izin verir. Mimariye bağlı olarak kaynak VPN istemci havuzu, bir bastion'un özel adresi ya da trafiğin çevrildiği bir NAT adresi olabilir. Kuralı ve paketin gerçek kaynağını birlikte okuyun.

aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0 \
  --query 'SecurityGroups[].IpPermissions'

Tek bir dizüstünün ev adresi için kural, erişim tasarımı değil bakım sorunudur.

Yolda bir istemci VPN'i ya da NAT geçidi varsa, veritabanı geliştiricinin tünel adresi yerine çeviricinin adresini görebilir. Bu yüzden çalışan bir bastion kurulumundan kopyalanan kural bir dizüstü için başarısız olabilir: iki yol farklı kaynaklardan gelir, her ikisi de içeride görünse bile.

Geniş yol yerine dar yolu tercih edin

Bir geliştiricinin tek bir veritabanına ihtiyacı olduğunda, oturum tabanlı yönlendirme genellikle tam ağ tünelinden daha ucuza işletilir. Yerel istemci yönlendirilmiş bir bağlantı noktasına bağlanır ve uzak bileşen veritabanı bağlantısını ağın içinden kurar.

ssh -N -L 5432:db.internal.example:5432 bastion.internal.example

Bu tasarımda TLS doğrulamasını bozmayın. İstemci sunucu sertifikasını beklediği ada göre doğrulamaya devam etmelidir; yerel yönlendirilmiş bağlantı noktası doğrulamayı kapatmak için sebep değildir ve onu kapatmak tam da yakalanmaya değer kimlik sorununu gizler.

Tam tünel ile dar yönlendirme arasındaki seçim, güvenlik tiyatrosu değil kapsam hakkında bir karardır.

Arkanızda yinelenebilir bir yol bırakın

Çözümlenmiş adres yerine uç nokta adını, güvenlik grubunun izin verdiği kaynak aralığını ve geliştiricinin kullandığı veritabanı rolünü belgeleyin. Bu üç gerçek, gelecekteki hataların çoğunu telefon çağrısı olmadan açıklar. İstemci profilinin sürümünü de ekleyin, çünkü profil değişikliği eski profilin taşıdığı bir yolu kaldırabilir.

Ardından olumsuz durumu bir kez test edin: onaylanmış kaynağın dışındaki bir istemci yine de reddedilmelidir.

Yalnızca kendisini kuran kişi için çalışan özel bir veritabanı özel erişim değildir; yeniden keşfedilmeyi bekleyen belgelenmemiş bir istisnadır. Yolu yazın ve sonraki geliştirici gizem yerine bir yöntem devralır.

İlgili makaleler