You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell编辑Active Directory对象类的默认安全设置

根据《Active Directory Cookbook》中的说明:

Active Directory中每个实例化的对象都关联一个结构类,该类定义了默认安全描述符(defaultSecurityDescriptor属性)。创建对象时,默认安全描述符会被应用到该对象上,再结合父容器的可继承权限,共同决定对象安全描述符的初始定义。

除了通过Active Directory Schema MMC管理单元中类属性的Default Security选项卡编辑外,你可以使用PowerShell结合Get-ACL/Set-ACL相关逻辑来修改默认ACL,步骤如下:

1. 启用AD架构的修改权限

AD架构默认处于只读状态,需先在架构主服务器上启用修改权限(仅需执行一次):

# 定位到AD驱动器
Set-Location AD:\
# 获取架构命名上下文并启用架构更新
$schemaNC = (Get-ADRootDSE).schemaNamingContext
Set-ADObject -Identity $schemaNC -Replace @{schemaUpdateNow=$true}

2. 获取目标架构类的默认ACL

以user类为例,先获取其当前的默认安全描述符并转换为可编辑的ACL对象:

# 查询目标架构类(替换为你需要修改的类名,如computer、group)
$targetClass = Get-ADObject -SearchBase $schemaNC -Filter "name -eq 'user'" -Properties defaultSecurityDescriptor
# 将SDDL格式的安全描述符转换为DirectorySecurity对象(与Get-ACL返回对象类型一致)
$acl = New-Object System.Security.AccessControl.DirectorySecurity
$acl.SetSecurityDescriptorSddlForm($targetClass.defaultSecurityDescriptor)

3. 修改ACL规则

使用熟悉的ACL操作方法调整权限,比如添加一条允许Domain Users读取用户属性的规则:

# 定义权限主体
$account = New-Object System.Security.Principal.NTAccount "你的域名\Domain Users"
# 创建访问规则(可按需调整权限类型、控制类型和继承方式)
$accessRule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
    $account,
    [System.DirectoryServices.ActiveDirectoryRights]::ReadProperty,
    [System.Security.AccessControl.AccessControlType]::Allow,
    [System.DirectoryServices.ActiveDirectorySecurityInheritance]::None
)
# 将规则添加到ACL
$acl.AddAccessRule($accessRule)

# 若需移除已有规则,可使用:
# $acl.RemoveAccessRule($accessRule)

4. 将修改后的ACL写回架构类

把编辑好的ACL转换回SDDL格式,再更新目标类的defaultSecurityDescriptor属性:

# 转换为SDDL字符串
$newSddl = $acl.GetSecurityDescriptorSddlForm([System.Security.AccessControl.AccessControlSections]::All)
# 更新架构类
Set-ADObject -Identity $targetClass.DistinguishedName -Replace @{defaultSecurityDescriptor=$newSddl}

5. 恢复架构只读状态(操作完成后建议执行)

Set-ADObject -Identity $schemaNC -Replace @{schemaUpdateNow=$false}

关键注意事项

  • 操作AD架构必须拥有架构管理员权限,且修改只能在架构主服务器上执行。
  • 修改默认安全描述符仅影响后续创建的该类对象,已有对象的权限不会自动变更。
  • 建议先在测试环境验证修改逻辑,避免影响生产环境。

内容的提问来源于stack exchange,提问作者Zulakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:40:40