我被分配了建立 sailpoint 服务帐户的任务,但没有为其分配域管理员权限。
我已将父 OU 的控制权委托给服务帐户,并为该帐户分配了以下权限
- 读取所有属性
- 阅读成员
- 写入所有属性
- 写入成员
然而,当我们尝试在子 OU 中重置密码时,权限却被拒绝。
我是否遗漏了什么?
答案1
如果执行管理重置,您需要授予重置密码 Active Directory 扩展权限(00299570-246d-11d0-a768-00aa006e0529)
function Set-ResetPasswordDelegation(){
param(
[string]$OrganizationalUnit,
[string]$DelegationGroupName
)
# Configuration Parameters
$confADRight = "ExtendedRight"
$confDelegatedObjectType = "bf967aba-0de6-11d0-a285-00aa003049e2" # User Object Type GUID
$confExtendedRight = "00299570-246d-11d0-a768-00aa006e0529" # Extended Right PasswordReset GUID
# Collect and prepare Objects
$delegationGroup = Get-ADGroup -Identity $DelegationGroupName
$delegationGroupSID = [System.Security.Principal.SecurityIdentifier] $delegationGroup.SID
$delegationGroupACL = Get-Acl -Path "AD:\$OrganizationalUnit"
# Build Access Control Entry (ACE)
$aceIdentity = [System.Security.Principal.IdentityReference] $delegationGroupSID
$aceADRight = [System.DirectoryServices.ActiveDirectoryRights] $confADRight
$aceType = [System.Security.AccessControl.AccessControlType] "Allow"
$aceInheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "Descendents"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($aceIdentity, $aceADRight, $aceType, $confExtendedRight, $aceInheritanceType,$confDelegatedObjectType)
# Apply ACL
$delegationGroupACL.AddAccessRule($ace)
Set-Acl -Path "AD:\$OrganizationalUnit" -AclObject $delegationGroupACL
}
# Calling the function
Set-ResetPasswordDelegation -OrganizationalUnit "OU=Users,DC=pwsh,DC=ch" -DelegationGroupName "ServiceDesk-PasswordReset-Allow"
答案2
Greg Askew 的回答关于Reset Password
需要委派的权限是正确的,他们应该获得答案的荣誉,但如果不是批量操作的话,我会提供一些更简单的选择。
首先,我建议创建一个 AD 组来委派权限 - 例如“StaffPasswordReset”或其他。您可能希望授予其他用户或组相同的权限,这样当您添加其他人时,您的 ACL 就不会变得混乱。
有三个主要选项(除脚本之外)可以授予权限,从迄今为止最简单的开始。
右键单击 OU 并
Delegate Control
在 OU 上运行向导。实际上,第二个预配置选项是Reset User Passwords and Force Password Change at next logon
。选择要委派权限的帐户或组,然后就完成了。在 ADSIEdit 中,或在启用了高级视图的 AD 用户和计算机中,您可以授予
Reset Password
OU 的“安全”选项卡上的用户或组权限。或者您可以使用
DSACLS
,这比 Powershell 方法容易得多。dsacls "OU=OUName,dc=example,dc=com" /I:S /G "[mydomain\delegate]:CA;Reset Password";user
笔记:对于选项 2 和 3,由于您已经分配了权限Write All Properties
(可能分配给了用户),因此这应该足够了。对于选项 1,向导会设置重置所需的所有权限。
但是,如果您只想委托密码重置,而不想授予“写入所有属性”权限,您还需要添加写入用户PwdlastSet
和lockoutTime
属性的权限(以及授予Reset Password
)。同样,在 OU 的“安全”选项卡中或使用DSACLS
dsacls "OU=OUName,dc=example,dc=com" /I:S /G "[mydomain\delegate]:rpwp;PwdlastSet";user
dsacls "OU=OUName,dc=example,dc=com" /I:S /G "[mydomain\delegate]:rpwp;lockoutTime";user
笔记2: Write Member
是关于授予添加/删除的权限团体成员。这是必需的吗?您的组是否与用户位于同一 OU(或同一父 OU 下)?如果没有,我建议单独委派。