Redis‘te En Sık Yapılan Hatalar
Uzun yıllardır en fazla kullanılan veri tabanları arasında olan Redis; genellikle yardımcı veri tabanı olmanın yanı sıra önbellek katmanı (caching layer) olarak da kullanılmakta ve verileri bellekte tutarak operasyonel işlemleri çok hızlı yapabilmektedir. Bu sayede ana veri tabanı yükünü azaltmakta ve uygulama performansını arttırarak yüksek verimlilik sağlamaktadır. Redis’in yaygın kullanımınıyla beraber en fazla yapılan hatalar ise şunlardır:
- Swap Kullanımı
Linux işletim sistemlerinde Bellek(RAM) dolduğunda disk üzerindeki bir Swap alanını kullanılır. Dolayısıyla bu durumda disk üzerinde yapılan işlemler uygulamayı çok yavaşlatır. Swap kullanımı Redis’in performansını önemli ölçüde düşüreceği için Swap özelliğinin tamamen kapatılması önerilir.
- Kalıcı Veri için Yanlış Yöntemin Seçilmesi
Redis’te bellekte tutulan verinin kalıcı olması için RDB ve AOF gibi veriyi diskte tutma yöntemleri mevcuttur. Sunucu çökmesi gibi sistemsel arızalarda verinin diskte’de tutulması istenirken doğru yöntemi seçmek önemlidir. Örneğin; belirli aralıklarla verinin yedeklenmesi gereken durumlarda RDB yöntemi, verinin önemli ve kaybedilmesinin istenmemesi gereken durumlarda AOF yöntemi seçilebilir, verinin önemsiz olduğu durumlarda ise hiçbir yöntem kullanılmadan ilerlenebilir. Tüm bu durumlarda konfigurasyonun doğru yapılması çok önemlidir.
- Güvenlik Zafiyetleri
Redis, varsayılan olarak kimlik doğrulama veya erişim kontrolleri sağlamaz. Bununla birlikte, Redis sunucusuna erişim izinlerinin doğru şekilde yapılandırılmaması durumunda, yetkisiz erişim veya veri sızıntısı gibi güvenlik zafiyetleri ortaya çıkabilir. Redis’i güvenli bir şekilde yapılandırmak, kimlik doğrulama kullanmak ve gerektiğinde ağ düzeyinde erişim kontrolleri uygulamak önemlidir.
Bazı Olası Güvenlik Zafiyetleri:
- Yanlış yapılandırma: Redis, varsayılan olarak yerel ağa bağlı ve kimlik doğrulama gerektirmeyen bir şekilde ayarlanabilir. Yanlış yapılandırma durumunda, herhangi bir erişim kontrolü olmadan Redis'e erişilebilir ve yetkisiz erişimlere açık hale gelebilir.
- Güncel olmayan sürümler: Eski Redis sürümlerinde önemli güvenlik açıkları olabilir. Bu nedenle, Redis'i güncel tutmak ve en son yamaları düzenli uygulamak önemlidir. Güncellemelerle birlikte hem bilinen güvenlik açıkları düzeltilmiş olur hem de Redis’in performans açıkları düzeltilerek sistemler daha kararlı hale gelmiş olur.
- Veri enjeksiyonu: Redis, komutları ve veri yapısını işlemek için kullanıcı girişini kabul eder. Eğer girişler yeterince doğrulanmaz veya filtrelenmezse, veri enjeksiyonu saldırılarına (örneğin, kötü amaçlı komutların gönderilmesine) yol açabilir.
- Hassas verilerin diskte saklanması: Redis bir bellek içi veri deposu olduğu için, birisinin Redis sunucunuza erişmesi halinde sakladığınız tüm hassas verileri görebileceği anlamına gelir. Bu riskten kaçınmak için, şifreler veya kredi kartı numaraları gibi hassas verileri Redis'te saklamamak en iyi yöntemdir. Bunun yerine, hassas verileri şifreleyerek tutan Hashicorp Vault gibi kasa uygulamaları önerilmektedir.
- Yapılandırma Hataları
Redis‘te yapılandırma esnasında dikkat edilmesi gereken önemli birkaç detay bulunmaktadır:
a ) Yazma İzni Hatası: Redis’in düzgün çalışması için gerekli olan veri dizini veya log dosyası yazılabilir olmalıdır. İlgili dosyada yazma izni yoksa Redis çalışmayabilir veya hata üretebilir.
b ) Port Hatası: Redis sunucusu varsayılan olarak 6379 portunu dinler. Bu port numarası yanlış yapılandırıldığında veya başka bir uygulama bu portu kullanılıyorsa Redis hata üreterek çalışmayacaktır.
c ) Aşırı Bellek Kullanımı: Redis içindeki veriler arttıkça kullanılan bellek miktarı artmaktadır. Bu artışı sınırlandırmazsak işletim sisteminin de kullanacağı belleği kullanır ve işletim sisteminin çalışmasına engel olur.Bunun için Redis konfigurasyon dosyasında “max memory” parametresine uygun bir değer verilerek değişiklik yapılması gerekmektedir.