Protected Attribute Nedir? Nasıl Oluşturulur?

Direnc Onen

Active Directory Schema Attribute Nedir?

Active Directory (AD) şeması, AD'nin veri yapısını tanımlayan bir bileşendir. Şema, hangi nesne sınıflarının (örneğin, kullanıcı, grup, bilgisayar) ve niteliklerin (attributes) mevcut olduğunu ve bu niteliklerin hangi veri türünde olacağını belirler.

Bir attribute (özellik), AD nesnelerine ait belirli bir veri parçasını ifade eder. Örneğin:

  • sAMAccountName → Kullanıcının oturum açma adı

  • mail → Kullanıcının e-posta adresi

Custom Attribute Nedir?

Custom attribute (özel nitelik), AD şemasına önceden tanımlanmamış, işletmenin ihtiyaçlarına göre özel olarak eklenen bir niteliktir. Varsayılan şemada olmayan bilgileri depolamak için kullanılır. Örneğin:

  • Çalışanların personel numarası

  • Departman özel kodları

  • Kullanıcıya atanmış lisans durumu

Custom Attribute Neden Oluşturulur?

Custom attribute oluşturma ihtiyacı şu nedenlerle ortaya çıkar:

  1. İşletme İhtiyaçları: Varsayılan şemada yer almayan, ancak işletme süreçlerinde gerekli olan bilgileri depolamak için.

  2. Uyarlama ve Entegrasyon: AD'yi, özel yazılımlar veya entegrasyonlar için uyarlamak gerektiğinde (örneğin, bir HR sistemine entegre etmek).

  3. Raporlama ve Yönetim: Daha spesifik raporlar oluşturmak veya kullanıcılar/gruplar için özel veri takibi yapmak amacıyla.

  4. Gelişmiş Otomasyon: PowerShell, vb. araçlarla gelişmiş otomasyon senaryolarında ek bilgi alanlarına ihtiyaç duyulduğunda.

Custom Attribute Oluşturmanın Gereksinimleri

Custom attribute oluşturmak için belirli şartlar ve gereksinimler bulunmaktadır:

  1. Schema Admin Yetkisi:

    • AD şemasında değişiklik yapmak yalnızca Schema Admins grubuna üye olan kullanıcılar tarafından yapılabilir.

  2. Planlama ve Test:

    • Şemaya yapılan değişiklikler geri alınamaz, bu nedenle kapsamlı bir planlama ve test yapılması şarttır.

  3. Global Kapsam:

    • Şemaya eklenen her değişiklik, AD ormanındaki tüm domainler tarafından paylaşılır.

  4. Doğru Veri Türü Seçimi:

    • Yeni bir attribute tanımlarken uygun veri türü seçilmelidir (örneğin, String, Integer, Boolean).

  5. Attribute Name Conflict:

    • Oluşturulan custom attribute isimleri, varsayılan şema veya diğer custom attribute'lar ile çakışmamalıdır.

  6. Replication Etkisi:

    • Yeni attribute'lar, AD replikasyonuna ek yük bindirebilir. Bu nedenle, gereksiz attribute eklemekten kaçınılmalıdır.

Custom Attribute Nasıl Oluşturulur?

  1. Schema Management Snap-in Aktif Hale Getirme:

    • regsvr32 schmmgmt.dll komutuyla şema yönetimi konsolunu etkinleştirin.

  2. MMC Kullanarak Attribute Ekleme:

    • MMC üzerinde "Active Directory Schema" snap-in eklenir ve yeni attribute tanımlanır.

  3. Attribute'u Nesne Sınıfına Ekleme:

    • Yeni oluşturulan attribute, ilgili nesne sınıflarına (örneğin kullanıcı, grup) eklenir.

  4. Replication ve Test:

    • Attribute, tüm domain controller'lara replikasyonla yayıldıktan sonra test edilir.

Örnek Kullanım:

Bir şirket, kullanıcıların projeye atanma tarihlerini saklamak istiyor. Bunun için:

  1. projectStartDate adında bir custom attribute oluşturulur.

  2. Veri tipi Date olarak belirlenir.

  3. Bu attribute, user nesne sınıfına eklenir.

Sonuç olarak, PowerShell veya LDAP sorguları kullanılarak bu bilgiyi yönetmek ve raporlamak mümkün hale gelir.

Ekleme sırasında, üretim ortamını etkilememek için tüm işlemleri önce bir test ortamında gerçekleştirmeniz önemlidir.

Protected Attribute Nedir?

Active Directory'de protected attribute (korunan nitelik), erişimi sıkı bir şekilde kontrol edilen ve hassas verilerin güvenliğini sağlamak amacıyla korunan niteliklerdir. Bu tür nitelikler, parolalar veya güvenlik tanımlayıcıları gibi kritik veya hassas bilgileri içerir ve yetkisiz erişim ya da değişikliklere karşı korunurlar.

Protected attribute'lar, genellikle bu verilere kimin okuyabileceğini, yazabileceğini veya değiştirebileceğini tanımlayan Access Control List'ler (ACL) ile yönetilir. Yalnızca Domain Admins, Enterprise Admins gibi yüksek yetkilere sahip hesaplar ya da Local System gibi sistem hesapları bu niteliklere erişebilir.

Protected Attribute Örnekleri

Korunan bazı yaygın nitelikler şunlardır:

  1. unicodePwd

    • Kullanıcının parolasını şifreli bir formatta saklar.

    • Sadece sistem süreçleri tarafından (örneğin parola sıfırlama sırasında) yazılabilir. Yönetici dahi bu değeri okuyamaz.

  2. userAccountControl

    • Hesap özelliklerini yönetir (örneğin, hesabı etkinleştirme/devre dışı bırakma, parola gereksinimleri).

    • Değişiklik yapmak özel ayrıcalıklar gerektirir.

  3. msDS-PasswordSettings

    • İnce Ayarlı Parola Politikaları'nda (Fine-Grained Password Policies) parola ayarlarını saklar.

    • Güvenliği korumak için yetkisiz erişime kapalıdır.

  4. dBCSPwd (eski bir nitelik)

    • Eskiden LM parola özetlerini saklardı.

    • Günümüzde kullanımdan kalkmıştır, ancak hala yüksek düzeyde korunur.

Protected Attribute Neden Korunur?

Korunan nitelikler şu amaçlarla oluşturulmuştur:

  1. Güvenliği Sağlamak: Parola veya hesap yapılandırmaları gibi hassas verilere yetkisiz erişimi önlemek.

  2. Veri Bütünlüğünü Koruma: Sistemlerde aksamalara yol açabilecek kazara veya kötü niyetli değişiklikleri engellemek.

  3. Yasal Uyumluluk: GDPR, HIPAA gibi düzenlemeler, hassas bilgilerin korunmasını zorunlu kılar.

Protected Attribute'lar Nasıl Kontrol Edilir?

  1. Access Control List'ler (ACL):

    • Bir niteliği hangi kullanıcıların veya grupların okuyabileceğini, yazabileceğini veya değiştirebileceğini belirler.

    • Örneğin: userAccountControl niteliği varsayılan olarak yalnızca Domain Admins veya Enterprise Admins tarafından değiştirilebilir.

  2. AdminSDHolder Nesnesi:

    • Yüksek yetkiye sahip bazı hesaplar (örneğin, Domain Admins üyeleri), yetki korumasını AdminSDHolder nesnesinden alır.

    • Bu, korunan hesaplar arasında tutarlı ve güvenli izinler sağlar.

  3. Okuma ve Yazma Kısıtlamaları:

    • Bazı nitelikler, örneğin unicodePwd, yalnızca yazılabilir. Yönetici bile bu niteliği okuyamaz; yalnızca sıfırlayabilir.

  4. Denetim ve İzleme:

    • Korunan niteliklere yapılan tüm değişiklikler, Active Directory denetleme sistemiyle izlenebilir.

Protected Attribute Değiştirilebilir mi?

  • Doğrudan: Sadece Schema Admins, Domain Admins gibi yeterli ayrıcalıklara sahip kullanıcılar ve ACL'de izin verilen hesaplar tarafından yapılabilir.

  • Dolaylı: Bazı nitelikler (örneğin unicodePwd), yalnızca AD araçları veya API'leri (örneğin parola sıfırlama sırasında) üzerinden değiştirilebilir.

Protected Attribute'lar İçin En İyi Uygulamalar

  1. Yetkili Erişimi Kısıtlayın: RBAC (Role-Based Access Control) kullanarak hassas niteliklere kimlerin erişebileceğini sınırlandırın.

  2. Denetimi Etkinleştirin: AD denetleme yeteneklerini kullanarak korunan niteliklerdeki değişiklikleri izleyin.

  3. Güvenli Araçlar Kullanın: Korunan nitelikleri yalnızca güvenli ve onaylı yöntemlerle (örneğin PowerShell, ADUC) yönetin.

  4. Düzenli ACL Gözden Geçirme: Kritik niteliklerin izinlerinin aşırı geniş olmamasını sağlayın.

Protected Attribute Oluşturma Adımları

  1. Schema Admin olarak oturum açın.

  2. Yeni bir multi-valued veya single-valued string attribute oluşturun.

  3. Attribute için gerekli güvenlik ayarlarını yaparak koruma altına alın.

  4. Oluşturulan attribute'ü user sınıfına ekleyin.

  5. CepTelReader adında bir grup oluşturun.

  6. CepTelReader grubuna, attribute için okuma izni tanımlayın.

  7. Kullanıcıya ceptel attribute'ünü ekleyin.

  8. Tüm yapılandırmayı test edin.

newCustomProtectedAttribute.ps1
# 1. Schema Admin olarak oturum açın
# 2. Yeni bir multi-valued string attribute oluşturma
$schemaPath = (Get-ADRootDSE).schemaNamingContext
$newAttribute = @{
    lDAPDisplayName = 'ceptel'
    attributeId = '1.3.6.1.4.1.99999.1.1.1' # Kendi OID'inizi kullanın
    oMSyntax = 64                           # Multi-valued string için 64
    attributeSyntax = '2.5.5.12'            # String syntax
    isSingleValued = $false                 # Multi-valued olması için false
    searchFlags = 1                         # İndekslenebilir olması için
    adminDescription = 'Cep Telefonu Numarası'
    adminDisplayName = 'CepTel'
}
New-ADObject -Name $newAttribute.lDAPDisplayName -Type attributeSchema -Path $schemaPath -OtherAttributes $newAttribute

# 3. Attribute'ü koruma altına alma
$attribute = Get-ADObject -Filter { lDAPDisplayName -eq 'ceptel' } -SearchBase $schemaPath
Set-ADObject -Identity $attribute.DistinguishedName -Replace @{ systemFlags = 128 }

# 4. Attribute'ü user sınıfına ekleme
$userClass = Get-ADObject -Filter { lDAPDisplayName -eq 'user' } -SearchBase $schemaPath -Properties mayContain
$currentMayContain = $userClass.mayContain
$newMayContain = $currentMayContain + @($attribute.lDAPDisplayName)
Set-ADObject -Identity $userClass.DistinguishedName -Replace @{ mayContain = $newMayContain }

# 5. CepTelReader grubunu oluşturma
$groupName = "CepTelReader"
$groupPath = "OU=Groups,DC=e2p,DC=com" # Kendi OU'nuzu kullanın
if (-not (Get-ADGroup -Filter { Name -eq $groupName } -ErrorAction SilentlyContinue)) {
    New-ADGroup -Name $groupName -GroupScope Global -GroupCategory Security -Path $groupPath
}

# 6. CepTelReader grubuna okuma izni verme
$group = Get-ADGroup -Identity $groupName
$schemaIDGUIDBytes = $attribute.schemaIDGUID
$schemaIDGUID = [Guid]::new($schemaIDGUIDBytes)

$acl = Get-Acl -Path "AD:\$($attribute.DistinguishedName)"
$rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
    $group.SID, 
    'ReadProperty', 
    'Allow', 
    $schemaIDGUID, 
    'None'
)
$acl.AddAccessRule($rule)
Set-Acl -Path "AD:\$($attribute.DistinguishedName)" -AclObject $acl

# 7. Kullanıcıya ceptel attribute'ünü ekleme
$user = "kullanici1" # Kullanıcı adını değiştirin
Set-ADUser -Identity $user -Add @{ ceptel = '5551234567', '5559876543' }

# 8. Test etme
Write-Host "CepTelReader grubundaki bir kullanıcı ile oturum açın ve aşağıdaki komutu çalıştırın:"
Write-Host "Get-ADUser -Identity $user -Properties ceptel | Select-Object -ExpandProperty ceptel"

Last updated