Merhaba, bu makalede Active Directory ortamımızda attribute eklemeyi sonrasında yetkilendirme son olarak da gizlemenin nasıl yapıldığını inceleyeceğiz. Bildiğiniz gibi AD üzerindeki nesnelerin attribute (öz nitelik)’leri vardır. Bu bilgiler içersinde her bir objeye ait bilgiler bulunur. Bunlardan bazıları Display Name, Description diye uzar gider. Biz bu bilgileri kullanarak bir kullanıcının son şifre değişimi, bir bilgisayarın son kullanım zamanları gibi bigileri elde ederiz. Bu bilgiler AD Schema’ında tutulur ve default olarak gelir. Bazı durumlarda yeni attribute ekleme ihtiyacı doğabilir. Örneğin TC Kimlik No, Sicil Numarası, Cep telefonu, SGK Numarası gibi. Ancak yine bu bazı durumlarda yetersiz kalabilir. Örnek vermek gerekirse TC Kimlik Numarasını ve cep telefonu numaralarını herkesin görmesini istemeyebilirsiniz. Bu makalede tüm bu işlemlerin nasıl yapılacağını beraber inceleyeceğiz.
Yapılacaklar Listesi
- Attribute ekleme
- Yetkilendirme
- Gizleme
Attribute Ekleme
Bu işlemleri DC üzerinde yapıyoruz ve bu işlemleri yapan kullanıcının Schema Admins grubuna üye olması gerekmektedir.
İlk olarak powershell’i administrator modda açıyoruz ve aşağıdaki komutu giriyoruz.
regsvr32 schmmgmt.dll
Sonrasında mmc konsolu açıp “Active Directory Schema“ı ekleyip açıyoruz.
Sonrasında aşağıdaki script’i “.vbs” uzantılı kaydediyor ve çalıştırıyoruz.
' oidgen.vbs
'
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
' OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR
' FITNESS FOR A PARTICULAR PURPOSE.
'
' Copyright (c) Microsoft Corporation. All rights reserved
'
' This script is not supported under any Microsoft standard support program or service.
' The script is provided AS IS without warranty of any kind. Microsoft further disclaims all
' implied warranties including, without limitation, any implied warranties of merchantability
' or of fitness for a particular purpose. The entire risk arising out of the use or performance
' of the scripts and documentation remains with you. In no event shall Microsoft, its authors,
' or anyone else involved in the creation, production, or delivery of the script be liable for
' any damages whatsoever (including, without limitation, damages for loss of business profits,
' business interruption, loss of business information, or other pecuniary loss) arising out of
' the use of or inability to use the script or documentation, even if Microsoft has been advised
' of the possibility of such damages.
' ----------------------------------------------------------------------
Function GenerateOID()
'Initializing Variables
Dim guidString, oidPrefix
Dim guidPart0, guidPart1, guidPart2, guidPart3, guidPart4, guidPart5, guidPart6
Dim oidPart0, oidPart1, oidPart2, oidPart3, oidPart4, oidPart5, oidPart6
On Error Resume Next
'Generate GUID
Set TypeLib = CreateObject("Scriptlet.TypeLib")
guidString = TypeLib.Guid
'If no network card is available on the machine then generating GUID can result with an error.
If Err.Number <> 0 Then
Wscript.Echo "ERROR: Guid could not be generated, please ensure machine has a network card."
Err.Clear
WScript.Quit
End If
'Stop Error Resume Next
On Error GoTo 0
'The Microsoft OID Prefix used for the automated OID Generator
oidPrefix = "1.2.840.113556.1.8000.2554"
'Split GUID into 6 hexadecimal numbers
guidPart0 = Trim(Mid(guidString, 2, 4))
guidPart1 = Trim(Mid(guidString, 6, 4))
guidPart2 = Trim(Mid(guidString, 11, 4))
guidPart3 = Trim(Mid(guidString, 16, 4))
guidPart4 = Trim(Mid(guidString, 21, 4))
guidPart5 = Trim(Mid(guidString, 26, 6))
guidPart6 = Trim(Mid(guidString, 32, 6))
'Convert the hexadecimal to decimal
oidPart0 = CLng("&H" & guidPart0)
oidPart1 = CLng("&H" & guidPart1)
oidPart2 = CLng("&H" & guidPart2)
oidPart3 = CLng("&H" & guidPart3)
oidPart4 = CLng("&H" & guidPart4)
oidPart5 = CLng("&H" & guidPart5)
oidPart6 = CLng("&H" & guidPart6)
'Concatenate all the generated OIDs together with the assigned Microsoft prefix and return
GenerateOID = oidPrefix & "." & oidPart0 & "." & oidPart1 & "." & oidPart2 & "." & oidPart3 & _
"." & oidPart4 & "." & oidPart5 & "." & oidPart6
End Function
'Output the resulted OID with best practice info
Wscript.Echo "Your root OID is: " & VBCRLF & GenerateOID & VBCRLF & VBCRLF & VBCRLF & _
"This prefix should be used to name your schema attributes and classes. For example: " & _
"if your prefix is ""Microsoft"", you should name schema elements like ""microsoft-Employee-ShoeSize"". " & _
"For more information on the prefix, view the Schema Naming Rules in the server " & _
"Application Specification (http://www.microsoft.com/windowsserver2003/partners/isvs/appspec.mspx)." & _
VBCRLF & VBCRLF & _
"You can create subsequent OIDs for new schema classes and attributes by appending a .X to the OID where X may " & _
"be any number that you choose. A common schema extension scheme generally uses the following structure:" & VBCRLF & _
"If your assigned OID was: 1.2.840.113556.1.8000.2554.999999" & VBCRLF & VBCRLF & _
"then classes could be under: 1.2.840.113556.1.8000.2554.999999.1 " & VBCRLF & _
"which makes the first class OID: 1.2.840.113556.1.8000.2554.999999.1.1" & VBCRLF & _
"the second class OID: 1.2.840.113556.1.8000.2554.999999.1.2 etc..." & VBCRLF & VBCRLF & _
"Using this example attributes could be under: 1.2.840.113556.1.8000.2554.999999.2 " & VBCRLF & _
"which makes the first attribute OID: 1.2.840.113556.1.8000.2554.999999.2.1 " & VBCRLF & _
"the second attribute OID: 1.2.840.113556.1.8000.2554.999999.2.2 etc..." & VBCRLF & VBCRLF & _
"Here are some other useful links regarding AD schema:" & VBCRLF & _
"Understanding AD Schema" & VBCRLF & _
"http://technet2.microsoft.com/WindowsServer/en/Library/b7b5b74f-e6df-42f6-a928-e52979a512011033.mspx " & _
VBCRLF & VBCRLF & _
"Developer documentation on AD Schema:" & VBCRLF & _
"http://msdn2.microsoft.com/en-us/library/ms675085.aspx " & VBCRLF & VBCRLF & _
"Extending the Schema" & VBCRLF & _
"http://msdn2.microsoft.com/en-us/library/ms676900.aspx " & VBCRLF & VBCRLF & _
"Step-by-Step Guide to Using Active Directory Schema and Display Specifiers " & VBCRLF & _
"http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/howto/adschema.mspx " & _
VBCRLF & VBCRLF & _
"Troubleshooting AD Schema " & VBCR & _
"http://technet2.microsoft.com/WindowsServer/en/Library/6008f7bf-80de-4fc0-ae3e-51eda0d7ab651033.mspx " & _
VBCRLF & VBCRLF
Bunu yapmaktaki amacımız root OID almak ve “Unique X500 Object ID” alanında kullanmak.
Konsolumuza geri dönüp sol taraftan “attribute” sağ tıklayıp “Create Attribute” tıklayıp alanları dolduruyoruz.
Aşağıdaki uyarı, bize bu işlemin geri alınamıyacağı, silinemeyeceği konusunda bilgilendiriyor. Yani yeni bir attribute oluşturduktan sonra silemezsiniz.
İlk olarak TC Kimlik No için attribute oluşturacağız. Az önce not aldığımız değeri “Unique X500 Object ID” alanına yapıştırıyoruz.
Cep telefonu yeni bir attribute olduğu için “VBS UZANTILI SCRIPT’İ YENİDEN ÇALIŞTIRIYOR VE YENİ DEĞER ÜRETİYORUZ.” ve bu attribute için kullanıyoruz.
Bu işlemden sonra “Classes” kısmında “user“‘ı buluyor ve çift tıklıyoruz.
“Add” butonu yardımı ile oluşturduğumuz attribute’ları ekliyoruz.
Şema değişikleri zaman alacağından bu zamanı beklememek için “Reload the Schema“‘a tıklıyoruz.
Evet attribute’larımız eklendi. Ekleme işlemi bu kadar.
Attribute Yetkilendirme
İlk olarak iki security grup oluşturdum. Bunlardan bir tanesi sadece okuma izinine sahip olacak diğeri se hep okuma hem yazma yetkilerine sahip olacak.
Okuma izini vermek
İlk olarak sadece okuma izini vereceğiz. Yetkili hesaplar sadece attribute’ları okuyabilecek ancak değiştiremeyecek.
Başlat menüsünden “ldp.exe“‘i aratıp administrator modda açıyoruz.
“Connection“‘dan “Bind”‘ e tıklayıp gelen ekranı enter ile onaylayıp devam ediyorum.
Sonrasında “View“‘den” “Tree” seçiyor ve gelen ekranda domain’i seçiyorum.
Şimdi sıra yetkileri uygulamak istediğimiz OU’lara geldi. Direk en yukardanda verebilirsiniz yada sadece istediğiniz OU’larada verebilirsiniz. Bensadece “KULLANICILAR” OU’na vereceğim için onu seçiyor aşağıdaki adımları yapıyorum.
Gelen ekranda okuma izni vereceğim grubun ismini yazdım ve ayarları aşağıdaki gibi yaptım. Her işlemden sonra “Update” demeyi unutmuyoruz.
Cep telefonu attribute içinde aynı işlemleri yaptım onada okuma izini veriyorum.
Yazma izini vermek
Yazma izinleri için yazma yetkisi vermek için oluşturduğum grup ismini yazıyorum ve aşağıdaki ayarları yapıyorum.
Cep telefonu içinde uyguluyorum.
Son görünüm aşağıdaki gibi.
Attribute Gizlemek
Şimdi son işleme geldik. Oluşturduğunuz attribute’ları gizleyeceğiz. Eğer gizlemezsek herkes tarafından görünür olarak kalır bu da bizim istemediğimiz bir durum.
İlk olarak “ADSI Edit“‘i açıyorum ve “Schema“‘a bağlanıyorum ve gelen ekranda sol menüden domain’nimizi buluyor ve genişletiyoruz.
Sonrasında sırayla TC Kimlik No ve Cep telefonu kayıtlarını buluyoruz ve aşağıdaki ayarları yapıyoruz. Özetle “searchFlags” değerini “128” yapıyoruz.
Bu işlemler ile tüm ayarlarmızı tamamlamış bulunuyoruz. Sıra testlere geldi.
Test
Test işlemleri için dört adet kullanıcı oluşturdum
user1,user2,user3,user4
user1’e okuma yetkisi için tc_cep_oku grubuna dahil ettim.
user2’e yazma yetkisi vermek için tc_cep_oku_yaz grubuna dahil ettim.
user3’de hiç bir yetki yok.
user4 ise TC Kimlik No ve Cep telefonu değerlerini girdim. Bu kullanıcı üzerinden testlerimizi yapacağız.
İlk olarak user1 ile attribute’ları okuma çalıyorum. Aşağıda görüldüğü gibi okudum ama değişiklik yapamıyorum, “Clear” butonu pasif.
Şimdi ise User2 ile test ediyorum ve “Clear” butonunu aktif olduğunu görüyorum, yani yazma ve okuma izinlerim var.
Son olarakta user3 ile test ediyorum ve hiç bir izinim olmadığı için attribute’ları göremiyorum.
Makalenin sonuna gelirken sizlerde organizasyonlarınızın ihtiyaçlarına göre bu işlemleri uygulayabilirsiniz. Keyifli okumalar, saygılar.