OzzTech - Kaos Mühendisliği 101

Kaos Mühendisliği 101

Kaos Mühendisliği 101

Konuya hızlıca bir giriş yapmak istersek; Kaos mühendisliği, distributed (dağıtılmış) bilgi işletim sisteminin, beklenmedik kesintilere dayanabilmesini sağlamak için test etme sürecidir. Rastgele ve beklenilmeyen davranış ve tutumlara odaklanan kaos teorisindeki kavramlara dayanır. Yani, kaos mühendisliğinin amacı, kontrollü deneyler yaparak random ve öngörülemeyen davranışları ortaya çıkarak bir sistemdeki zayıflığı tespit etmektir.

Kaos mühendisliğinin en büyük faydası, işletmelerin bu zayıflıkları bir hacker tespit etmeden veya sistem arızasından önce güvenlik açıklarını belirlemek için kullanabilmesidir. Testler sonucunda yapılan değişiklikler, işletmenin sistemlerine olan güveni artırır.

Bazı IT grupları, ekiplerin sistemleri kırmaya veya ihlal etmeye çalıştığı kaos mühendisliği oyun günleri düzenler. Bu oyun günlerinde başarısızlık modunu ve etkili analizler taktikleri yoluyla veya farklı farklı taktiklerle muhtemel başarısızlık noktaları hakkında fikir edinirler.

Kaos mühendisliği;

  • Sistemin esnekliğini arttıracak bilgileri toplayabilmek için bir sistemi kasıtlı olarak yıkar.
  • Yazılım testi ve kalite güvencesine yönelik yaklaşımdır.
  • Özellikle modern distributed sistemler, ortamları ve süreçleri için uygundur.

Distributed bilgi işletim sistemi, bir ağ üzerinden birbirine bağlanan ve kaynakları paylaşan bir grup bilgisayarın bütünüdür. Ancak beklenmedik bir olay yaşandığında bu sistemler bozulabilir. Büyük dağıtılmış sistemlerde, bileşenler genellikle karmaşık olur ve beklenmedik bağımlılıkları bulunur ve bundan dolayı hataları düzeltmek veya hatanın ne zaman nasıl ortaya çıkacağını tahmin etmek oldukça zordur.

Distributed bilgi işletim sistemlerinin başarısız olmasının birden fazla yolu vardır. Örneğin; sistem ne kadar büyük ve karmaşıksa, davranışı o kadar öngörülemez ve kaotik görünür.

Kaos mühendisliği deneyleri, sistemi test etmek ve zayıflıkları bulmak için distributed bir sistemde kasıtlı olarak zorlu koşullar oluşturur. Deneyden çıkabilecek sorun örnekleri;

  • Kör noktalar: İzleme yazılımının yeterli veri toplayamadığı noktalar.
  • Gizli hatalar: Yazılımın arızalanmasına neden olabilecek aksaklıklar veya diğer sorunlardır.
  • Performans  çıkmazları: Verimlilik ve performansın iyileştirilebileceği durumlardır.

Kaos mühendisliği nasıl çalışır?

Kaos mühendisliği, sistem veya ağ sorunlarını tanımlamayı ve düzeltmeyi amaçlamasıyla stres testine benzer. Ancak stres testinden farklı olarak, kaos mühendisliği tek seferde bir bileşeni test etmez ve düzeltmez.

Kaos mühendisliği, sınırsız sayıda olası nedeni olan sorunları inceler. Sistem hakkında yeni bilgiler alabilmek amacıyla, ortadaki bariz sorunların da ötesine bakar ve distributed sistemleri, olma ihtimali daha düşük sorunlara veya sorun gruplarına karşı test eder.

Adımlar

  1. Temel çizginin ayarlanması: Önce bir temel oluşturun. Test uzmanları tarafından, sistemin en yüksek koşullarda nasıl çalışması gerektiğini belirlemeli ve normal çalışma durumunu neyin oluşturduğu belirtilmelidir.
  2. Hipotez oluşturma: Potansiyel zayıflıkları göz önünde bulundurun ve bu zayıflıkların etkileri hakkında bir hipotez oluşturun. 
  3. Test: Büyük bir artışın sonuçlarını ölçmek için deneyler yapın. Testler, kritik süreçte oluşan bir hatayı veya beklenmedik bir neden-sonuç ilişkisini ortaya çıkarabilir. Örneğin, bir trafik artışı simülasyonu, bir depolama performansı sorununu ortaya çıkarabilir.
  4. Değerlendirme: Hipotezi ölçün ve değerlendirin. Sonuca göre hangi sorunların düzeltileceğini belirleyin.

Kaos mühendisliği ekiplerinin deneylerinde test ettikleri noktalar;

  • Hem bildikleri hem anladıkları noktalar.
  • Bildikleri halde tam olarak anlamadıkları noktalar.
  • Anladıkları halde farkında olmadıkları noktalar.
  • Tam olarak bilmedikleri ve anlamadıkları noktalar.

Sistemin performans sonucunu ve bütünlüğünü değerlendirmek için hataları ve arızaları ortaya çıkarabilecek ''eğer öyleyse'' sorularını sorma yöntemini kullanırlar.

Kaos mühendisliğinin temel ilkeleri

Kaos mühendisliği uygulanırken, Bilgisayar bilimcisi L. Peter Deutsch ve Sun Microsystems'deki meslektaşları tarafından geliştirilmiş olan, distributed hesaplamanın 8 yanılgısından oluşan bir liste hazırladılar. Bir probleme kaos mühendisliği uygularken yanlış varsayımlardan oluşan bu liste iyi bir başlangıç noktası sağlar. Sekiz yanılgı şunları içerir:

  1. Ağ güvenilirdir.
  2. Gecikme yoktur. (zero latency)
  3. Bant genişliği sınırsızdır.
  4. Ağ güvenlidir.
  5. Topoloji asla değişmez.
  6. Bir tane admin vardır.
  7. Taşıma maliyeti sıfırdır.
  8. Ağ eşit dağılmıştır.

Yukarıda verilen yanlış varsayımları, distributed bilgi işlem ortamlarında yapmak diğerlerine kıyasla daha kolaydır ve karmaşıklardan kaynaklanan rastgele görünen sorunların temelini oluşturur.

Kaos mühendisliğinde öneriler

Karmaşıklıkları önleyebilmek ve yanılgılardan kurtulmak için aşağıdaki uygulamaları uygulayabilirsiniz.

  • Sistemin normalde nasıl davranışlara sahip olduğunu anlayın. 
  • Gerçekçi senaryoları simüle edin. 
  • Gerçek dünya şartlarını kullanarak test yapın. Test yaparak en doğru sonuçları alabilirsiniz.
  • Patlama yarıçapını en az seviyeye çekin. Üretim ortamlarında yapılan testler genelde boş zamanlarda yapılır ve normalde ideal olan, sistemi kullananlar kaos deneyi yaptıklarını söylemez. Deneylerin sorunlara neden olması durumunda hizmetlerin kullanılabilir durumda kalmasını sağlamak için fazladan ürün kalmalıdır.

  • Kaos mühendisliği testi, işlem sınırına ulaşıldığında yazılımın nasıl tepki vereceğini belirlemekte kullanılabilir. Örneğin performans kalitesi düşer mi? sistem çöker mi? vb.
  • Kaos mühendisliği, kaynak sıkıntısı veya tek bir arıza noktası olduğunda distributed sistemin ne şekilde tepkiler oluşturacağını test etmek için kullanılabilir. Sistem başarısız olursa, geliştiriciler değişiklikler yapabilir ve daha sonra istenilen sonuçların elde edilip edilmediğini öğrenmek için test tekrarlanır.

Kaos mühendisliği örnekleri

  1. 2015 yılında Amazon'un DynamoDB'si kullanılan bölgelerden birinde kullanılabilirlik sorunu yaşadı. Yaşadığı bu gecikme sorunu, DynamoDB'ye bağlı 20'den fazla Amazon Web Hizmetinin o bölgede başarısız olmasına neden oldu.
  2. Netflix de dahil bu hizmetleri kullanan siteler birkaç saatliğine kapandı. Ancak Netflix, böyle bir durumun gelişebilme ihtimaline karşı, Chaos Kong adlı bir kaos mühendisliği aracı oluşturarak diğer sitelere göre durumu daha az kayıpla kurtardı.

Kaos mühendislik araçları

Netflix, kaos mühendisliğinin kullanımında önemli bir öncülerden birisidir ve prodüksiyon sistemlerinde bu mühendisliği ilk kullananlardan biridir. Netflix açık kaynaklı kaos testi otomasyon platformlarını tasarladı ve bunu topluca Simian Army olarak adlandırdı.

Simian Army paketinde bulunan araçlardan bazıları;

  • Kaos Kong: AWS kullanılabilirlik bölgelerinin tamamını devre dışı bırakır.
  • Kaos Monkey: Bir sistem arızası yaratmak için üretim ortamı örneklerini rastgele devre dışı bırakır ve bunu yaparken müşterilerin aktivitelerine hiçbir şekilde etkisi olmaz. , ancak müşteri etkinliği üzerinde hiçbir etkisi olmayacak şekilde tasarlanmıştır.
  • Kaos Gorilla: Chaos Monkey'in daha büyük ve etkili hali denebilir.
  • Latency: Ağ kesintilerini ve bozulmasını simüle etmek için gecikme sağlar.
  • Simorg: Açık kaynaklı bir arıza oluşturan program.
  • Maymun Operasyonları: Rastgele bileşenleri ve distribute yapılandırmalarını test etmek ve sonlandırmak için oluşturulan açık kaynaklı araç.
  • Gremlin: Perakende ve finans sektörlerine odaklanır
  • AWS Hata Enjeksiyon Simülatörü: AWS'nin üretim bulut sunucularına ekleyebileceği hata şablonlarını içerir. 

Bu yazımızda kaos mühendisliğinin ne olduğunu, önemini, amacını ve kaos mühendisliği araçlarını anlattık. Umarım yazımız işinize yarayacaktır.


İlginizi Çekebilecek Makaleler
FortiGate ACME Sertifika Desteği
Siber Güvenlik

FortiGate ACME Sertifika Desteği

Ocak 24, 2022 1:22

Otomatik Sertifika Yönetim Ortamı (ACME), RFC 8555’te tanımlandığı üzere, ücretsiz SSL sunucu sertifikaları sağlamak için genel Let’s...

Android Reverse Mühendisliği Araçları Örnek Vakalar
Siber Güvenlik

Android Reverse Mühendisliği Araçları Örnek Vakalar

Ocak 24, 2022 12:39

Bir önceki yazıda yeni çıkan android reverse mühendisliği araçları hakkında bilgi vermiştim. Bu yazımda...

Emotet Artık Alışılmadık IP Adreslerini Kullanıyor
Siber Güvenlik

Emotet Artık Alışılmadık IP Adreslerini Kullanıyor

Ocak 24, 2022 9:44

Emotet kötü amaçlı yazılım botnetinin dağıtımını içeren sosyal mühendislik kampanyaları, güvenlik çözümlerinin tespitinden kaçınmak...

FortiWeb Kurulumu 5-Operation Modu
Siber Güvenlik

FortiWeb Kurulumu 5-Operation Modu

Ocak 24, 2022 7:49

FortiWeb kurulumunu anlattığımız beşinci yazımızda operation modu ve FortiWeb cihazı açıldıktan sonra, FortiWeb cihazını...

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme
Siber Güvenlik

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme

Ocak 23, 2022 10:21

FortiWeb kurulumunu anlattığımız serinin dördüncü yazısında Admin şifresi nasıl değiştirceğinizi, saat ve günü nasıl...

Metasploittable 2
Siber Güvenlik

Metasploittable 2

Ocak 22, 2022 11:57

Metasploittable 2 Nedir? Neden Kullanılır? Nasıl Kurulur? Metasploittable 2 Metasploit firması tarafından bizlerin güvenli...

FortiWeb Kurulumu 3- Firmware Güncellenmesi
Siber Güvenlik

FortiWeb Kurulumu 3- Firmware Güncellenmesi

Ocak 22, 2022 11:56

FortiWeb kurulumunu anlattığımız serinin üçüncü yazısında Firmware güncellemesini anlatacağız. FortiWeb cihazınız gönderildiğinde en son...

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama
Siber Güvenlik

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama

Ocak 21, 2022 7:50

FortiWeb kurulumu yazımızın ikinci serisinde Web UI veya CLI bağlamanın nasıl yapılacağını anlatacağız. Eğer...

Yapay Zeka Nedir?
Yazılım Geliştirme

Yapay Zeka Nedir?

Ocak 20, 2022 10:57

Sürekli olarak değişen, gelişen ve oldukça hızlı bir şekilde boyut atlayan, günümüze kadar gelen...

İletişim
OZZTECH Bilgi Teknolojileri olarak siber güvenlik danışmanlığı ve bilgi güvenliği eğitimleri alanlarında 10 yılı aşkın bir süredir ülkemizin önde gelen kurumlarına hizmet vermeye devam etmektedir. Detaylı bilgi ve danışmanlık hizmetlerimiz için aşağıdaki formu kullanarak veya [email protected] adresimiz üzerinden bizlerle iletişime geçebilirsiniz.