Active Directory’nin kurulumu ve kullanımı öncesinde “Active Directory nedir?” sorusunun cevabının bilinmesi yararlı olacaktır.
Active Directory aslında bir veritabanıdır. Active Directory’yi daha iyi anlamak için öncelikle Active Directory haricindeki sistemi anlamamız gerekir. Active Directory sistemi haricindeki sistemlerde aynı ağda bulunan her bilgisayarın kullanıcı ve parola bilgilerini tutan kendi küçük veritabanları bulunmaktadır. Microsoft bu ağı “Workgroup” olarak tanımlamaktadır.
Workgroup’ta bulunan bilgisayarların bir merkezi yönetim kontrolü yoktur. Bu yapının kullanılabilir olmamasının nedenlerinden bazıları :
- Bu tip bir ağda bir bilgisayarın kullanıcısı başka bir bilgisayara bağlanmak isterse bağlanılacak bilgisayarda bağlantının sağlanabilmesi için bağlanmak isteyen kullanıcı hesabının aynı parola ile oluşturulması gerekir.
- Ağdaki kullanıcılardan birisinin parolası değiştiğinde kullanıcının ağdaki diğer bilgisayarlardaki erişmek istediği kaynaklara erişebilmesi için ağdaki tüm bilgisayarlarda bu kullanıcının parolasının değiştirilmesi gerekmektedir. Aksi taktirde bu kullanıcı diğer bilgisayarlardaki erişmek istediği kaynaklara erişemeyecektir.
Eğer ağımız küçükse yönetilebilmesi kolaydır. Fakat ağdaki bilgisayar sayısı artarsa yönetimi oldukça zorlaşacaktır. Bu nedenle büyük çaplı ağlarda Active Directory gibi merkezi bir veritabanı yapısı gerekmektedir.
Active Directory tüm kullanıcıları ve parolalarını merkezi bir veritabanında tutar. Active Directory’de bir kullanıcının parolası değiştiğinde ağdaki tüm bilgisayarların bu değişiklikten bilgisi olur. Active Directory kurulmadan önce kendimize sorulacak soru “Active Directory’e ihtiyacımız var mı?” olacaktır. Eğer cevabımız evetse Active Directory veritabanını barındıran ve bu işe adanmış sunuculara ihtiyacımız olacaktır.
Eğer Active Directory’nin gerekli olacağı kadar büyük bir ağa sahip değilsek, evde ya da küçük işyerlerinde bu yapıya ihtiyacımız varsa Microsoft’un “HomeGroup” olarak tanımladığı ağ yapısı isteklerimizi karşılayacak düzeydedir. HomeGroup ağdaki bilgisayarların birbirine erişmesi için tek bir parola kullanır. Bu şekilde Active Directory yapısı olmadan aynı ağdaki bilgisayarlar birbirleriyle dosya ya da yazıcı paylaşabilirler. Bu özellik Windows 7 ile Windows 10 1803 sürümleri arasındaki Windows işletim sistemlerinde kullanılabilmektedir.
Buraya kadar aşağıdaki sorulara yanıt bulduk.
- Active Directory gibi bir yapıya ihtiyacımız var mı?
- Bu yapının Active Directory olması gerekli mi?
Active Directory daha önce de belirttiğimiz gibi ağımız için merkezi bir veritabanına sahiptir. Aynı zamanda bu yapı dünya çapında genişleyebilen bir yapıdır.
Bu yapıda :
- Tüm kullanıcı ve parola bilgileri tutulur.
- Kaynakların ve paylaşımların bilgileri tutulur.
- E-mail gibi bazı servislerin bilgileri tutulur. Exchange Server hizmeti kurulduğunda bu hizmet Active Directory ile koordineli bir şekilde ve yüksek uyumlulukta çalışır. Aslında Exchange Server hizmeti Active Directory olmadan kurulamaz demek daha doğru olur.
- Group Policy ayarları tutulur. Group Policy ağımızda bulunan bilgisayarlarda yapılacak anlık değişiklikleri kolaylıkla ve hızlı bir şekilde yapmaya imkan verir.
Active Directory yapısının içerdiği birkaç özellikten bahsettik. Fakat unutulmaması gereken asıl önemli nokta Active Directory bir veritabanıdır. Active Directory veritabanında bulunan her şey (kullanıcı hesapları, yazıcılar, bilgisayarlar vb.) birer objedir (Object).
Eğer kullanıcılar ve bilgisayarlar mantıksal (Logical) bir yönetim yapısında tutulmak istenirse bu isteği karşılayan yapı Domain yapısıdır.
Domain, aynı Active Directory veritabanında bulunan objelerin paylaşılmasını sağlayan mantıksal gruptur. Domainde bulunan tüm bilgisayarlar aynı alan adını paylaşırlar. Örnek olarak domain adı emres.com ise bu domaindeki herhangi bir bilgisayar ismini PC01.emres.com olarak paylaşır.
Active Directory, alt etki alanlarına (Child Domains) sahip olarak daha da genişletilebilir. Bu child domainler birbirleriyle kaynak paylaşımı yapabilir ve bilgileri birbirleri arasında replike edebilirler. Active Directory bir veritabanını birden fazla konumda tutabilir, bu konumlar arasındaki değişiklikleri replike edebilir ve aynı kaynakları paylaşan birden fazla domaine sahip olabilir.
Eğer aynı domainin Ankara’da daha küçük bir mantıksal lokasyon grubu oluşturulacaksa yani merkez domaine bağlı fakat bu domainden ayrı bir domain oluşturulmak isteniyorsa ankara.emres.com adında bir Child Domain oluşturulabilir. Bu durumda merkez için oluşturulacak bir group policy ankara.emres.com domainini etkilemeyecektir.
İlerleyen makalelerde farklı domainler arasında obje paylaşımı için gerekli olan özel yapıya (Domain Trust Relationship) detaylı olarak değineceğim.
Active Directory’nin tüm dünya üzerinde dağıtık bir veritabanı olabileceğini belirtmiştik. DC’ler bu veritabanını NTDS.dit isimli dosyada tutar. Dosya ismi verilirken NT Directory Services ismi baz alınmıştır. Dosyanın kendisi X.500 standardına dayanan bir veritabanıdır. X.500 standardı, veritabanına yapılan girişlerin hiyerarşik olarak düzenlenmesini sağlar. Active Directory üzerinden bir örnek vererek açıklayacak olursak, kullanıcılara ve bilgisayarlara sahip bir Active Directory domain ortamımız olsun. Bu kullanıcı ve bilgisayarlar bir hiyerarşiye göre düzenlenir. Sabit diskimizde klasörlerin ve dosyaların bulunduğu gibi Active Directory’de de bu yapı dosyalama sistemine oldukça benzerdir. Active Directory’de klasörlerin karşılığı Organizational Unit (OU)’dir. Organizational Unit içinde bilgisayarlar, kullanıcılar veya gruplar gibi Active Directory objeleri bulunabilir.
Microsoft, Active Directory’yi yaratırken X.500 dizin hizmetinden yararlanmıştır. Fakat veritabanına erişilebilmesi için başka bir sisteme daha ihtiyaç vardır. X.500 standardında dizin erişim protokolleri mevcuttur. Ancak geliştirildikleri protokollerde ilk fark edilen ağ desteğinin olmamasıdır. Bu nedenle Lightweight Directory Access Protocol (LDAP) olarak da bilinen dizin erişim protokolü geliştirildi. Yani bu durumda aslında iki farklı sisteme sahibiz.
- Tüm Active Directory objelerini içeren X.500 standardına sahip Active Directory veritabanı
- Veritabanına erişim sağlamaya izin veren LDAP
LDAP ilk defa 1993 yılında yayınlanmış ve Active Directory gibi X.500 standardına sahip bir veritabanına erişimin kolay yolunu sağlamıştır. LDAP, IP tabanlı ağları desteklemiş ve Microsoft tarafından Active Directory veritabanına erişim için benimsenmiştir. Her ne kadar ağ desteği gibi bazı eksiklikleri bulunan diğer protokollerin eksikleri tamamlanmış olsa da Microsoft, Active Directory veritabanına erişmek için LDAP kullanmaya devam etmektedir.
Peki LDAP, Active Directory veritabanına erişim için nasıl kullanılır? Bu işlem için çoğu zaman Microsoft’un yönetim araçları kullanılır. Bazı durumlarda LDAP’ın kullandığı sözdizimini anlamamız için daha düşük düzeyde araçlar kullanılabilir. Başta LDAP’ın kullandığı sözdizimi biraz karmaşık gözükebilir. Fakat bir kez anlaşıldığı zaman aslında zor değildir.
LDAP sözdizimini anlamak için önce sabit diskimizdeki bir dosyaya erişmek için hangi LDAP sözdizimini kullanacağımızı düşünelim. Sabit diskteki bir dosyaya erişim için öncelikle C:\ yazılır. Bu sabit diskimizin kök uzantısıdır. Bu kök uzantının altındaki klasöre erişim için örneğin Users\ gibi bir klasör adı eklenir. Dosyaya erişim için ise Emre.doc gibi bir dosya adı eklenir. Eğer LDAP’ın hiyerarşik yapıda olan herhangi bir klasör ya da dosyaya erişilmesinden farklı olmadığını düşünürseniz LDAP sözdizimini anlamada herhangi bir sorun yaşamayacaksınız. LDAP’ın kullandığı ilk terminoloji Canonical Name (Container Name ya da kısaca CN de denilmektedir.) ’dir. Bunu örnekteki dosya adı gibi ya da bir Active Directory objesi olarak düşünebilirsiniz. Bu durumda eğer Active Directory’de Emre adlı objeye erişmek isterseniz CN’i Emre’ye eşit olarak kullanmamız gerekir. Veritabanında Emre adında birden fazla nesne bulunabileceği için LDAP’a Emre objesinin konumu belirtilmelidir. Bu noktada karışıklık yaratacak yer LDAP’a objenin yeri belirtilirken sabit diskte dosyanın konumunu belirtmeye göre tersten gidilmesidir. Örnekle açıklamak gerekirse Users OU’su altında bulunan Emre objesinin yerini LDAP sözdizimini kullanarak belirtelim. Active Directory’de bulunan OU’ları klasör olarak düşünürsek arada “\”yerine “,” kullanılarak devam edilir. Sabit diskteki örnekle karşılaştırdığımızda şimdi eklememiz gereken sürücü harfine karşılık gelen bölümdür. Bu bölümün LDAP’taki karşılığı domain adıdır. Bu da “DC=emres,DC=com” şeklinde olmalıdır. Örnekler kıyaslandığında sonuç aşağıdaki gibidir :
Sabit diskteki dosya sisteminde
C:\Users\Emre
LDAP sözdiziminde
CN=Emre,OU=Users,DC=emres,DC=com
LDAP’ta bu tip sözdizimine verilen isim Distinguished Name’dir. Active Directory’de her objenin bir Distinguished Name’i vardır. Distinguished Name, Active Directory’deki objeyi benzersiz olarak tanımlar. Tıpkı dosyanın sabit diskte sadece o dosyanın tanımlanması için tam bir yol ve dosya adı olduğu gibi LDAP, Active Directory’de yalnızca o objeyi tanımlamak için ayırt edici bir ada sahiptir.
Daha önce bahsettiğim Active Directory veritabanını üzerinde bulunduracak ve bu işe adanmış sunucular domainin en önemli parçası olan Domain Controller (DC) ’dır. Domain Controller, Active Directory domain servislerini çalıştırır. Bu servisler bir sunucuya eklendiğinde o sunucu artık bir domain controllerdır. DC, Active Directory veritabanının kopyasını kendinde tutar.
Ana DC’nin (Primary DC) birincil görevi kullanıcıların kullanıcı adı ve parolaları aracılığıyla oturum açmalarını sağlamaktır. Bir kullanıcı domaine authenticate olduğunda DC, kullanıcının erişmek istediği kaynağa izni olup olmadığını kontrol eder ve izni varsa kullanıcıyı kaynağa eriştirir.
Bu durumda akla gelen ilk soru teorik olarak “Kaç adet DC’ye ihtiyacımız var?” olacaktır. İhtiyacımızı karşılayacak DC’lerin teorik olarak sayısı ve donanımı aşağıdaki tabloda belirtilmiştir.
Kullanıcı Sayısı | Minimum DC Sayısı | Her DC İçin Minimum CPU Sayısı ve Hızı | Her DC İçin Minimum Memory |
1 – 500 | 1 Adet | 1 Adet (850 MHz veya daha yüksek) | 512 MB |
500 – 999 | 1 Adet | 2 Adet (850 MHz veya daha yüksek) | 1 GB |
1000 – 2999 | 2 Adet | 2 Adet (850 MHz veya daha yüksek) | 2 GB |
3000 – 10000 | 2 Adet | 4 Adet (850 MHz veya daha yüksek) | 2 GB |
> 10000 | Her 5000 Kullanıcı İçin 1 Adet | 4 Adet (850 MHz veya daha yüksek) | 2 GB |
Her ne kadar tablodaki belirtilen 1000 kullanıcıya kadar bir adet DC’nin yeterli olması teorik olarak doğruysa bile Microsoft tarafından önerilen her domain için en az iki DC bulundurulmasıdır. Nedeni ise DC’ler aynı domaindeki diğer DC’lerle kendi üzerlerindeki değişiklikleri replike ederler. Böylece tüm DC’ler senkronize bir şekilde değişikliklerden haberdar olup tüm dünya çapında aynı Active Directory veritabanına sahip olurlar. Her DC kendi üzerindeki değişiklikleri bağlı bulunduğu ağ aracılığıyla diğer DC’lere aktarır ve replikasyon yapılan DC’ler yapılan değişiklikleri kendisinde uygular. Dolayısıyla aynı domainde bulunan her DC aynı Active Directory veritabanı kopyalarını içerir ve aynı hizmetleri çalıştırır. Böylece DC’lerden birisi herhangi bir nedenle kullanılamaz hale gelirse ikinci bir DC ilk DC’nin sorumluluklarını devralabilir. Bu DC’ler Primary Domain Controller (PDC) ve Additional Domain Controller (ADC) olarak adlandırılırlar.