BÖLÜM 15 PROTECTION
Erişim Denetimi İşletim sistemi ile kullanıcı programlarının aynı anda aynı ana belleği paylaşmaları problemi Kullanıcı proseslerinin ana bellekteki kimi alanlara erişmelerini kısıtlamak zorunluluğu Çoklu iş düzeninde kullanıcı programlarını birbirlerinden korumak zorunluluğu
… Bir iş kendisi ile ilgili sınır yazmaçlarının dışına düşen bir adres ürettiğinde kesilerek sistemin işletim bütünlüğü korunur. Görevlere ilişkin sayfalara erişim hakkı, sayfa yada kesim tanım çizelgelerinde tutulur (paging). Görüntülü bellek yönetiminde mantıksal adres evreni ile fiziksel alanlar birbirlerinden tamamen soyutlanarak daha esnek koruma düzenekleri kurulur. CPU yazmaçlarına erişimin kimi özel görevler dışında diğer görevlere kapalı tutulması gerekir.
… CPU yazmaçlarına erişimine göre farklılaşma görevlerin Sıralı ve Ayrıcalıklı olmak üzere iki sınıfa ayrılmasını zorunlu kılar. Sıradan görevler, koruma altındaki ana işlem birimi yazmaçlarına erişmeye kalktıklarında engellenemez bir iç kesilme ile işletimleri kesilir. İşletilmekte olan görevin hangi kategoriye ait olduğu, görev işletime alındığında güncellenen, ana işlem birimi program durum yazmacı içindeki bir bit ile belirlenir. Sıradan görevlerin program durum yazmaçlarında bu bit hep set edilmiştir. Bir bilgisayar sisteminde çalışan görevler ait oldukları kullanıcılara göre sınıflandırılırlar.
… CPU: işletim sistemi modunda yada kullanıcı modunda çalışmasından bahsedilir. Bu adlandırma ayrıcalıklı görevlerin çoğunlukla işletim sistemi görevleri, sıradan görevlerin ise sıradan kullanıcı görevleri olmasından kaynaklanır.
Koruma Etki Alanı Bir bilgisayar sistemi proses ve nesnelerin toplamından oluşmaktadır. donanım nesneleri (CPU, bellek segmentleri, yazıcılar, diskler vb.) yazılım nesneleri (dosyalar, programlar, semaforlar vb.) Her nesne diğerlerinden ayrılan tekil bir isim ile anılır ve hepsi özel tanımlı işlemler ile erişilir. Nesneler genelde özel tanılı soyut veri tipleridir.
… Nesneler üzerindeki erişim hakları değişik şekillerdedir. Bu erişim haklarını düzenleyen bir proses olmalıdır. Her proses bir domain içinde yönetilir Protection domain: hangi kaynaklar/nesneler hangi prosesler ile hangi erişim hakları üzerinden erişilebilirler?
Koruma Alanı Yapısı Bu şemayı kolaylaştırmak için proses bir koruma alanı içinde işletilir. Koruma alanı, prosesin erişebileceği kaynakları tanımlar. Her koruma alanında nesneler kümesi ve her nesneden çağırabilecek operasyonlar tanımlıdır. Bir nesne üzerinde işletilebilecek yetenek erişim hakkı olarak bilinir. Bir Domain erişim haklarının toplamıdır. Bunlar şu şekilde ifade edilir: <nesne-adı, erişimhakkı kümesi> Örneğin D domaini, <dosya F, {read,write}> erişim hakkına sahip, o zaman D domaininde işletilen bir proses F dosyasını okuyabilir ya da dosyaya yazabilir. Domainler parçalara ayrılmaya ihtiyaç duymazlar; erişim haklarını paylaşabilirler.
Domain Yapısı Domain: erişim hakları kümesi <nesne-adı, erişimhakkı kümesi>
Koruma Alanları (Domainler) Domainler farklı yollar ile gerçekleştirilebilirler: Her kullanıcı bir domain olabilir. Bu durumda, erişilen nesneler yapılan kullanıcı tanımlarına göre değişiklik gösterirler. Kullanıcı değişikliği olduğunda domain switching oluşur. Her proses domain olabilir. Bu durumda, nesnelere erişim şekilleri prosesin tanımına göre değişir. Proses switching, prosesler arası mesajlaşma ile gerçekleşir. Her prosedür bir domain olabilir. Bu durumda, nensnelere erişim, prosedürde tanımlı olan yerel değişkenler ile tanımlanır. Prosedür çağrısı yapıldığında domain değişimi gerçekleşir.
Örn: UNIX Unix işletim sisteminde, domain bir kullanıcı ile ilişkilendirilmiştir. Bir domain biti (setuid bit) her dosya ile ilişkilendirilmiştir. Ne zaman bir kullanıcı(user-id=A) B ye ait bir dosyayı işletmeye başlarsa, prosese ait user-id=A yapılır. Ne zaman setuid=onn ise user-id=B (sahibi) ne set edilir. Proses sonlandığında geçici user-id değiştirme işlemi de sonlanır.
UNIX
Erişimde Koruma Halkaları Bir görevin herhangi bir koruma alanı içerisinde işlem yaparken bir diğerine geçmesi, bu yeni koruma alanına anahtarlanması olarak adlandırılır. Bu bir nesne kümesi üzerinde işlem yaparken diğer bir nesne kümesine erişmesi demektir. Bu nedenle görevlerin nesnelere erişimlerini denetlemek bunların değişik koruma alanlarına anahtarlanmalarını denetleyerek gerçekleşir.
Koruma Halkaları Koruma alanları iç içe halkalar şeklinde düzenlenirler. Görevlerin hangi halkalarda iş yapacağı donanımca desteklenen bir düzenek ile denetim altında tutulur. Halkaların içten dışa azalan düzende düzenlenir. İç halkayla simgelenen çekirdek koruma alanına çok az sayıda görev erişebilirken, çekirdek halkadan dışa doğru gidildikçe daha çok sayıda göreve erişim ya da anahtarlama hakkı verilir. N adet koruma halkasının bulunduğu bir sistemde i. Alanın simgelediği koruma alanına anahtarlanabilen bir görev (i+1),(i+2)....(n-1) inci halkalarla simgelenen koruma alanlarına da anahtarlanma hakkına sahip olur.
Koruma Halkaları Görevler, bulundukları bir koruma halkasının altındaki bir alana anahtarlanmak için ilgili işletim sistemi işlevini çağırdıklarında: işlevin gerektirdiği ayrıcalık düzeyi ile program durum yazmacındaki düzey kodu karşılaştırılır. CPU nun durum yazmaçlarında görev ayrıcalık düzeyini belirleyen durum bitleri bulunur. Bir görev CPU’ya anahtarlandığında bu bitler, görevin ait olduğu ayrıcalık düzeyi kodu ile güncellenir. Program durum yazmacındaki ayrıcalık düzey kodu uzunluğu, koruma halkası sayısına bağlıdır. Uyumsuzluk olduğunda, görevin işletimi sonlandırılarak nesnelere erişim genel anlamda denetim altında tutulur.
Koruma Halkaları
Erişim Matrisi Koruma matrisidir (access matrix) Satırlar domain leri temsil eder Sütunlar nesneleri temsil eder. Access(i, j) Domaini de işletilen bir proses Objectj üzerinde işlem yapabilir.
Erişim Matrisi
Erişim Matrisi Kullanımı Erişim matrisi dizaynı mekanizmaları policyden ayırır. Mekanizma İşletim sistmei access-matrix + kurallar tanımlar. Policy Kullanıcı policy uygular Kim hangi nesneye hangi hak ile erişebilir.
Erişim Matrisi Uygulaması Her sütun= bir nesne için erişim-kontrol-listesi Kim ne operasyonu gerçekleştirebilir onu tanımlar. Domain 1 = Read, Write Domain 2 = Read Domain 3 = Read Her satır = Yetki listesi (anahtar gibi) Her domain için, hangi operasyonlar hangi nesneler üzerinde tanımlandı bilgisi tutar. Object 1 – Read Object 4 – Read, Write, Execute Object 5 – Read, Write, Delete, Copy
Prosesler bir domain’den diğerine Switch edilebilir. Figure B
Copy, owner, kontrol Bir erişim hakkını bir domain’den diğerine kopyalama hakkı (*) ile ifade edilmiştir. D2 de işletilen herhangi bir proses read operasyonunu F2 dosyası ile ilişkili herhangi bir girişe kopyalayabilir.
Access Matrix with Copy Rights
Access Matrix With Owner Rights
.. D2’deki herhangi bir proses F2 sütunundan istediği hakkı çıkarır ya da ekler.
Modified Access Matrix of Figure B
… D2 domainindeki herhangi bir proses, D4 domainini güncelleyebilir.
Erişim Matrisi Uygulamaları Global Table Nesneler için erişim listeleri Domainler için yetki listeleri
Global Tablo Uygulaması Erişim matrisinin uygulamadaki en basit şeklidir. <domain, nesne, erişim hakkı> çiftlerinden oluşur. Ne zaman bir nesne üzerinde bir operasyon gerçekleştirilmek istendi, ilgili nesne-domain çifti tablodan aranır. Bulunursa erişime izin verilir bulunmazsa exception üretilir. Tablo bellekte olmak zorundadır. Sanal bellek uygulamasının sıkça tekrar etmesi gerekir.
Erişim Listeleri nesnelere erişimin denetlenmesinde kullanılan bir yöntemdir. Her nesne için bir liste tutulur. Liste içerisinde bu nesneye erişim yapabilecek tüm görev ya da kullanıcıların kimlikleri bulunur. Nesneye erişim söz konusu olduğunda bu liste taranarak ilgili görev yada kullanıcının erişim hakkı sınanır. Erişim listesi, nesneyi yaratan kullanıcı tarafından oluşturulur. Kullanıcılar, kendilerine ait nesnelerin erişim listesini istedikleri gibi güncelleyerek diğer görev ya da kullanıcıların bu nesnelere erişimini, her an açıp kapama hakkına sahip olurlar. Daha çok dosya türü nesnelerde kullanılan bir yöntemdir. Erişim listelerinin boyu ile ilgili kısıtlamalar olabilir UNIX gibi sistemlerde erişim listesinin boyu sınırlı tutularak bu sakınca aşılmaya çalışılmıştır.
Erişim Listesi Kullanımı
Görevlerin Yetkilerine Dayalı Erişim Denetimi (Yetki Listesi) Erişim listesi yönteminin tersine, Görev yada kullanıcı tabanında listeler tutmak bir çözüm olarak düşünülebilir. Bu durumda, örneğin her görevin, hangi nesnelere hangi haklarla erişebileceğinin listesinin tutulması gerekir. Bir görevin belirli bir nesneye erişim hakkına yetki adı verilir. Görevlerin hangi nesnelere hangi haklarla erişebileceklerinin bilgisinin tutulduğu liste yetki listesi olarak adlandırılır.
Yetki Listesi Kullanımı
Örn: UNIX UID: Registered users ID: 0-65.535 arası GID: Group ID – 16 bit integers Her proses kendi GID ve UID sini taşır. Bir dosya yaratıldığında, dosya yaratan prosesin GID ve UID sini alır. Dosya aynı zamanda yaratan proses tarafından belirlenen erişim izinlerini de alır. Erişim hakları 9 bit ile düzenlenir.
Örn: Unix Erişim Hakları Listesi
Örn: Windows Her windows kullanıcısı(grubu) bir SID (security ID) ile tanımlanır. SID: bir header bilgisi ile başlayan binary numaralardır. Her SID tekildir. Bilgisayar kurulum sırasında bir SID ile eşleştirilir. Kullanıcı ve gruplar, bilgisayarın SID’si tarafından yönlendirilen SID’ler ile eşleştirilir.(sonunda bir Relative Identifier (RID) ile birlikte) Kullanıcı bir proses ya da tred başlattığında, proses ya da tred SID altında çalışmaya başlar. Access token: her proses kendi SID ve diğer özelliklerini tanımlayan bir access token a sahiptir. User log in olduğunda, winlogon başlangıç prosesine bir access token verir. Bu access token proses içindeki tüm tredlere de verilmiş olur.
…Windows Impersonation: bir client tredi, serverin clienttaki doyalara erişimini sağlamak için kendi access token’ını sever trede geçirir. Security Descriptor: her nesne kendi ile attachlenmiş bir security desc içerir. Bu, nesne üzerinde kim hangi operasyonu geçekleştirir kaydıdır. Bir header ve bunu takip eden bir DACLiçerir. DACL bir yada birden çok ACE (Access Control Elements) içerir. Discretionary Access Control List (DACL): kullanıcıların nesnelere erişim tiplerini tanımlar.
SID
Access Tokens Bir token daki bileşenler: Kullanıcı SID’ si Kullanıcının ait olduğu gruba ait SID’ler Kullanıcı için olan yetkiler(privileges) Group 1 SID Group n SID Privilege 1 Account SID
Constructing a Security Descriptor Process Object InitializeSecurityDescriptor() SetSecurityDescriptorOwner() SetSecurityDescriptorGroup() InitializeAcl() AddAccessDeniedAce() ... AddAccessAllowedAce() ... SetSecurityDescriptorDacl() Security Descriptor Access Token User SID Group SID Owner SID Group SID Discretionary ACL Access Control Entry (Denied) ... Access Control Entry (Allowed)