10.07.2015 Views

Akademik Bilişim '10 10 - 12 Şubat 2010 Muğla

Akademik Bilişim '10 10 - 12 Şubat 2010 Muğla

Akademik Bilişim '10 10 - 12 Şubat 2010 Muğla

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Yazılım Geliştirme Süreçleri ve ISO 27001 Bilgi Güvenliği Yönetim Sistemiİzzet Gökhan Özbilgin, Mustafa Özlüihlallerinin yazılım güvenliği problemlerindenkaynaklananlarının oranı %80’dir [1]. Genelolarak problemlerin çoğu, yazılım geliştirmesürecinin en başında gereksinim ve sistem analizlerinindoğru ve yeterli yapılmamasındankaynaklanmaktadır.Bilgi güvenliği; karşılaşılabilecek tehditlerinfarkında olunması, işlerin devamlılığını sağlama,yaşanabilecek her türlü problemlerdekayıpları en aza indirme, firmaların varlıklarınınher koşulda gizliliği, erişebilirliği vebütünlüğünü korunma amaçları taşımaktadır.Bu kapsamda ortaya çıkartılan ve sürekli geliştirilmekteolan bir süreç de “Bilgi GüvenliğiYönetim Sistemi (BGYS)” dir.Yazılımlarda bilgilerin korunması yazılımın geliştirmesürecinin başından itibaren tüm aşamalarınbilgi güvenliği kontrollerine uygun olarakgerçekleşmesine bağlıdır. Yazılımın geliştirmesürecinde bilgi güvenliği yönetim sistemininsağlanmış olması, yazılımlardaki bilgilerin kullanımahazır olduğunu, sadece yetkisi olanlarınerişebildiğini ve kullanılan bilginin doğru vegüncel olduğu anlamına gelmektedir.Bu çalışmanın ikinci ve üçüncü bölümünde yazılım,yazılım geliştirme süreçleri ve güvenliyazılım geliştirmeye ilişkin bilgilere yer verilecektir.Dördüncü bölümde uluslararası bir standartolan “ISO/IEC 27001 Bilgi Teknolojileri-Güvenlik Teknikleri-Bilgi Güvenliği YönetimSistemi- Gereksinimler Standardı (ISO 27001)”ele alınacak, sonrasında ISO 27001’in yazılımgeliştirme süreçleriyle ilişkili kontrol maddelerineve sonuç bölümüne yer verilecektir.2. Yazılım Geliştirme SüreçleriYazılım, mevcut bir problemi çözmek amacıyladeğişik cihazların birbirleriyle haberleşebilmesinisağlayan ve görevlerini ya da kullanılabilirliklerinigeliştirmeye yarayan bilgisayardili kullanılarak oluşturulmuş anlamlı ifadelerbütünü olarak da nitelendirilebilir [2]. Yazılımgeliştirme ise yazılımın hem üretim hem de180kullanım süreci boyunca geçirdiği tüm aşamalarolarak tanımlanabilir.Geçmişte yazılım geliştirmede başvurulan işakış şemaları gibi yöntemler günümüzde gereksinimlerikarşılayamadıklarından ve güvenlikodaklı olmadıklarından yetersiz kalmışlar,etkinliklerini yitirmişlerdir. Yazılımın her aşamasındagüvenliğe ilişkin ortaya çıkabilecekproblemleri gözeten etkin bir geliştirme sürecisonuç ürünün daha güvenilir olmasına önemlikatkı sağlayacaktır. Yazılım geliştirmede çoksayıda farklı model ve süreç değerlendirmelerindensöz etmek mümkündür. Bununla birlikte;yazılım mühendisliğindeki diğer modelleretemel teşkil eden “Çağlayan Modeli (WaterfallModel)” yazılım yaşam döngüsünü beş aşamadaele almaktadır [3]:2.1. Analiz: Bir problemin çözümü olarak nitelediğimizyazılımların ne yapacağını ve nasılyapacağını belirlediğimiz yani problemi tanımladığımızaşama analiz aşamasıdır.2.2. Tasarım: Analiz aşaması sonucunda belirlenengereksinimlere yanıt verecek yazılımıntemel yapısının oluşturulduğu aşamadır.2.3. Kodlama: Kodlama aşaması, tasarım sürecindeortaya konan veriler doğrultusunda yazılımıngerçekleştirilmesi aşamasıdır.2.4. Test: Test aşaması, yazılım kodlanmasısürecinin ardından gerçekleştirilen sınama vedoğrulama aşamasıdır.2.5. Bakım: Yazılımın tesliminden sonra hatagiderme ve yeni eklentiler yapma aşamasıdır.3. Güvenli Yazılım GeliştirmeYazılımların yaygın olarak kullanılmaya başlandığıilk yıllarda kaliteli ve olgun yazılımüretmek, son yıllarda ise özellikle güvenliyazılım geliştirmek için çok sayıda model veçerçeve üzerinde çalışılmıştır. Bu durumun enbüyük tetikleyicisi son yıllarda güvenlik açıklıklarınınartmasıdır [4]. Artan bu güvenlik tehditleriŞekil 1’de görüldüğü üzere hiç hesabakatılmayan sürpriz maliyetleri de beraberindegetirmektedir. Yazılım geliştirmede erken birsüreçte farkına varılan yazılım açıklıklarınındüzeltilmesinin daha ileri süreçlerde farkınavarılan açıklıklara göre daha az maliyetli olacağıyazılım endüstrisince yaygın olarak kabuledilen bir ilkedir [5].Şekil 1 - Yazılım Geliştirme SüreçlerindeYazılım Açıkları Giderme Maliyeti [5]Güvenli yazılım geliştirme süreçlerinde değişiklikve konfigürasyon yönetimi, geliştirme,test ve üretim ortamı ayrışımı, geliştirmeortamında gerçek verilerin kullanılmaması,üretim ortamına almadan önce kod incelemesi,güvenli programlama teknikleri kullanımı,uygulama güvenlik duvarı kullanımı ya dakaynak kod inceleme hizmeti alınması gibi çalışmalarınyapılması da güvenliğe ayrıca katkısağlayacaktır[1]. Güvenli yazılım geliştirmesürecinde ele alınması gereken temel olarakdokuz ana güvenlik konusu vardır [6]:<strong>Akademik</strong> Bilişim’<strong>10</strong> - XII. <strong>Akademik</strong> Bilişim Konferansı Bildirileri<strong>10</strong> - <strong>12</strong> Şubat 20<strong>10</strong> Muğla Üniversitesi1811. Girdi Geçerleme (Input Validation): Günümüzdebilinen ve gelecekte de muhtemel tehditlerinçoğu kötü niyetli girdi ile başlamaktadır.2. Kimlik Doğrulama (Authentication):Kimlik doğrulama, varlıkların (kullanıcı, cihazveya bir uygulama) kimlik kontrolündengeçmesi işlemidir ve farklı kimlik doğrulamayöntemleri bulunmaktadır.3. Yetkilendirme (Authorization): Kullanıcılarıntanımlanması aşaması olan kimlik doğrulamadansonra kullanıcının kimliği doğrultusundaerişim haklarının belirlendiği ve kontrolününgerçekleştiği aşama yetkilendirmedir.4. Konfigürasyon Yönetimi (ConfigurationManagement): Konfigürasyon, uygulama ile ilgilihassas bilgileri içermektedir. Örnek vermekgerekirse veri tabanına erişim için gerekli bağlantıbilgilerini içeren dosyalar bu kapsamdadır.5. Hassas Bilgi (Sensitive Information): Hassasbilginin ne olduğunun belirlenebilmesi için uygulamanınve işin bir arada ele alınması gerekir.6. Kriptografi (Cryptograhy): Veriyi korumanınyollarından biri de şifrelemedir. Bugünşifreleme çalışmaları oldukça ilerlemiş, bilgisayarlaroldukça gelişmiştir.7. Parametre Manipülasyonu (ParameterManipulations): Dağıtık algoritmalar modüllerarasında parametre gönderirler. Eğer bu parametrelerarada değiştirilirse, saldırı gerçekleştirilmişolur.8. Hata Yönetimi (Exception Management):Bazı teknolojiler hataları kullanarak hata yönetimigerçekleştirmektedirler. Hatalar geliştiricilerve sistem yöneticileri için uygulama ileilgili birçok önemli bilgi ihtiva ettiği için çokönemlidirler.9. Kayıt Tutma ve Denetim (Logging andAuditing): Uygulama veya uygulamanın yöneticilerisaldırı altında olduklarını anlamalıdır.Bu durum aslında neyin normal neyin anormalolduğunun belirlenmesi ile sağlanır.Yukarıdaki ve bunlara benzer onlarca tehditgüvenilir uygulamalar geliştirmek için yazılımgeliştirme sürecinin güvenliğinin yönetilmesininbüyük önem arz etmekte olduğunu gözlerönüne sermektedir.4. ISO 27001 Bilgi GüvenliğiYönetim SistemiBilgi güvenliği, yazılı, sözlü, elektronik ortamgibi farklı ortamlardaki bilginin gizlilik, bütünlükve erişebilirlik bakımından güvence altınaalınması ve bu güvence durumunun sürekliliğininsağlanmasıdır. Bilgi sistemlerinin hayatageçmesiyle ortaya çıkan depolama ve işlemeimkânlarının artması, izinsiz erişimler, bilgininyetkisiz imhası, yetkisiz değiştirilmesi veyayetkisiz görülmesi ihtimallerinin artması gibihususlar nedeniyle bilgi güvenliği kavramı gündemegelmektedir. Bilgi sistemlerinin çoğu, bilgisaklanırken, paylaşılırken, gönderilirken güvenlikkaygıları düşünülerek tasarlanmamıştır.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!