什么是 Active Directory 组管理
使用 Active Directory 组是一个安全最佳实践,可高效且准确地控制对信息和 IT 资源的访问。然而,为了保持业务连续性,组织需要实施有效的组管理做法。常见的组管理任务包括创建新组、添加或移除成员、设置组权限以及管理组属性。
Active Directory 组的类型
Active Directory 中有两种类型的组:安全组和分发组。
安全组
安全组用于为共享资源分配权限,例如业务应用程序、云服务或 Windows 文件服务器上的内容。所有属于某个安全组的用户账户、计算机以及其他 Active Directory 对象,都会继承授予该安全组的所有访问权限。一般而言,安全组基于工作职能角色来设计,以帮助组织快速且准确地配置和重新配置访问权限。
Active Directory 默认组
创建新域时会自动生成多个 安全组 。Active Directory 中的这些默认安全组包括:
- Domain Admins — 该权限组非常强大,能够控制域中所有域控制器的访问权限,并可修改该域中所有管理帐户的成员资格。
- Domain Users — 默认情况下,在域中创建的任何用户帐户都会自动成为该组的成员。
- Domain Computers — 默认情况下,在域中创建的任何计算机帐户都会成为该组的成员。
- 域控制器 — 新的域控制器会自动添加到此组中。
默认的 AD 安全组位于 Active Directory Users and Computers 中的 Builtin 容器和 Users 容器内。
除了内置组之外,组织通常还会创建许多其他的 Active Directory 安全组。这些组往往基于组织中的用户和计算机角色,例如为每个项目团队创建一个组,或为人力资源部门使用的所有工作站创建一个组。通常,自定义的 AD 安全组会放置在组织创建的组织单位(OU)中。
通讯组
通讯组(通常称为通讯列表)用于在 Exchange 环境中向选定的一组收件人发送电子邮件。例如,你可以在 Active Directory 中创建一个名为“All Employees”的通讯组,以便轻松发送全公司公告;同时也可以创建一个名为“Marketing Team”的通讯列表,仅向营销团队的成员发送电子邮件。你无法为通讯组分配权限。
安全组作用域
安全组的作用域决定它可以用于在哪些位置分配权限,以及哪些对象可以成为其成员。在 Active Directory 中,安全组共有三种作用域类型:
- 通用作用域 — Active Directory 中的通用组用于为给定林中的多个域之间的资源分配权限。
- 全局作用域 — 全局组可以获得对任何受信任域中资源的权限。但是,它们只能包含来自自身域的成员。
- 域本地作用域 — 域本地组用于为特定域中的资源分配权限。来自任何受信任域的帐户和组都可以成为成员。
组嵌套
下表汇总了每个作用域的关键特性,并提供示例:
Scope | Can Grant Permissions for | Can Have as Members | Example |
|---|---|---|---|
|
Universal |
Resources in any domain in the forest |
Accounts, Global groups and other Universal groups from any domain in the same forest |
"IT Administrators" have permissions to resources in multiple domains; members include IT admins from those domains. |
|
Global |
Resources in any domain in the same forest and in trusting domains or forests |
Accounts and other Global groups from the same domain |
"Marketing Team" has permissions to marketing-related resources in several domains; members include every user in the marketing department, who are all in the same domain. |
|
Domain Local |
Resources in one domain |
Accounts and groups from any trusted domain |
"Accounting Managers" has permissions to accounting resources in one domain; members include accounting managers from multiple domains. |
Active Directory 中的全局组 vs 通用组 vs 域本地域组
嵌套(Nesting)是指将一个组设置为另一个组的成员。该分层策略可以简化权限管理,因为通常分配给父组的权限会继承给所有子组。然而,权限继承可能会被打破。请务必遵循以下最佳实践:
- 谨慎使用嵌套 — 将嵌套层级限制在最多几层。嵌套过于复杂可能导致权限过度,从而难以及时发现。
- 使用基于角色的嵌套 — 根据岗位职责来实现嵌套。例如,“IT Team” 组可能会同时将“Helpdesk Technicians”组和“Server Operators”组作为成员包含进去。
- 如实记录 — 记录嵌套结构,并记下所有变更及其目的。此类文档在故障排查和审计方面都很有帮助。
- 进行彻底测试 — 在生产环境中实施嵌套组之前,请先进行测试,以确保将正确的权限授予了正确的用户。
- 考虑范围 — 一般来说,在对组进行嵌套时,请遵循以下准则:
- 将用户和计算机帐户添加到 Global 组。
- 将全局组嵌套到域本地组中。
- 向域本地组授予对资源的权限。
动态组
Active Directory 中的动态组的成员身份由指定规则确定,例如具有特定用户帐户属性。 例如,你可以创建一个名为“Sales”部门的动态安全组,并创建一条规则,指定所有部门属性为“Sales”的用户帐户都属于该组。该组的成员列表会根据定义的规则定期刷新:如果用户加入 Sales 部门,他们将自动添加到该组;任何离开该部门的人也会自动从该组中移除。同样,你也可以创建动态分发组。使用动态组可以减少管理工作量并降低出错风险。
可以使用 Windows PowerShell 或支持该功能的第三方 Active Directory 组管理工具来创建和管理 Active Directory 动态安全组。
Active Directory 组管理的最佳实践
有效管理 AD 组对于控制对关键 IT 资源的访问至关重要,但这可能是一项真正的挑战。随着业务项目的启动与完成、应用的部署与下线,以及用户加入和离开组织,安全组很容易出现不恰当的权限或成员关系。此外,不再需要的安全组可能会不断累积,从而增加安全风险。
分发组虽然不会授予权限,但会控制电子邮件的分发。因此,如果未对其进行妥善管理,敏感信息就可能被发送给不应查看这些信息的人。此外,没有被包含在合适的分发列表中的用户,可能会错过他们完成工作所确实需要的邮件。
以下最佳实践可以帮助你避免所有这些问题。
最佳实践 #1:始终了解自己有哪些组。
维护所有组的详细清单。请特别关注以下内容:
- 没有成员的组
- 没有所有者的组
- 最近没有变更的组
- 看起来像重复的组
- 嵌套在其他组中的组
如果目录中有数百甚至数千个组,PowerShell 可能会很有用。例如,下面的脚本将枚举指定 OU 中的组及其成员:
get-adgroup -Filter * -SearchBase “OU=Groups,DC=corp,DC=company,DC=Com” | %{Get-ADGroupMember $_.name} | ft name
另外,你也可以使用第三方解决方案。 Netwrix GroupID 让你轻松实现:
- 基于组类型和成员资格识别相似组
- 报告没有成员的组,以及由已禁用用户管理的组
- 识别没有所有者的组,以及最近未使用的组
- 查找嵌套组
- 检索有关您组的更多信息
最佳实践 #2:使用标准。
遵循一套标准将简化组管理。务必涵盖以下所有内容:
- 组名称 — 使用一致的命名方法来命名组,能帮助所有人(不仅仅是创建者)理解其用途。
- 组作用域 — 为使用每种作用域类型建立标准:Universal、Global 和 Domain Local。
- 组类型 — 授予访问权限请使用安全组;用于电子邮件分发请使用分发组。
- 组说明 — 使用 Description 和 Notes 字段,详细说明组的用途与预期生命周期,以及其成员资格和权限可能存在的任何例外情况。
- 组放置位置 — 确定组在目录中的存放位置。有些公司为所有自定义安全组指定一个 OU,为所有分发组再指定一个 OU;而有些公司则选择将每个组放在与其用途相匹配的 OU 中。
- 使用嵌套 — 确保正确实施嵌套,并进行充分的文档记录。
Netwrix GroupID 让您可以轻松地在以上所有领域落实标准。例如,您可以要求在创建组之前必须提供描述;使用前缀和正则表达式来强制执行组命名规范;并允许某个用户角色仅在特定 OU 中创建用户对象。
最佳实践 #3:建立组所有者。
没有所有者的组(孤立组)是导致过度访问权限的常见原因。此外,这些组也很容易被对手滥用。
因此,请确保每个组至少有一名所有者。通常而言,经理、部门负责人和项目负责人比 IT 团队更能了解该组的成员资格和权限应该是什么。
Netwrix GroupID 可让你:
- 自动识别孤立组(orphaned groups),并为其分配所有者。
- 设置主要所有者和其他所有者,以帮助防止组变成孤立状态。
- 分配临时所有者,以应对诸如员工缺勤或项目特定需求等情况。
- 批量转移组的所有权。
- 获取有关组所有权的详细报告。
最佳实践 #4:确保对组的变更承担责任。
对组所进行的任何更改都可能扰乱业务流程或引入安全风险。为帮助确保所有更改都是必要且恰当的,请实施一种工作流:允许用户提交加入请求,并授权组所有者批准或拒绝该请求。此外,还应跟踪组成员身份和组权限的所有变更,并记录每次变更的原因。
Netwrix GroupID 使您能够轻松建立审批工作流,并审计对组的更改。此外,您还可以:
- 建立组的安全级别— 按敏感度对组进行分类。对于专用(private)组,只有组所有者可以管理成员身份。半专用(semi-private)组的成员管理更灵活,而任何人都可以根据自己的选择加入或离开公开(public)组。
- 启用自助式组管理 —让员工能够通过便捷的自助服务门户自行添加到公共组中。
最佳实践 #5:通过定期审计确保问责。
即使你已为组更改实施了问责机制,也应定期审计你的组,以及时发现任何问题。
使用 Netwrix GroupID,你可以:
- 验证组是否存在 — 可以要求组所有者定期确认该组仍然需要存在,因此你可以删除不需要的组,从而减少攻击面。
- 进行组认证(attestation) — 你可以定期要求组所有者验证其组的属性、成员身份以及权限。所有者可根据组的重要性来确定认证频率。
- 确保准确性 — 你可以将 AD 用户账户与 HR 系统等可信来源同步,以帮助维护准确的组成员身份。
最佳实践 #6:自动化组管理流程。
手动添加和移除组成员、更新组属性以及删除组,会给你本就有限的 IT 人员带来极大的负担。此外,这些流程非常容易出现人为错误。即使你使用 PowerShell,也需要创建并维护复杂的脚本,并定期执行它们。
使用 Netwrix GroupID,你可以自动化多种组管理任务,从而降低管理开销,并减少因疏忽和错误带来的网络安全风险。例如,你可以轻松基于 AD 属性、规则,甚至 HR 数据创建动态组。
最佳实践 #7:删除不必要的组。
这项最佳实践说起来容易做起来难。毕竟,想要 100% 确定某个组确实不再需要并不容易。不过,已经失去用途的组会带来安全风险。
Netwrix GroupID 提供多项功能,帮助你可靠地识别并移除不需要的组:
- 组认证 — 你可以要求组所有者定期审查其组,并报告这些组是否仍然需要,或是否应当删除。
- 组到期 — 你可以为组设置到期日期,并在需要时提供快速续期选项。经过宽限期后,到期的组会自动删除。
结论
对 Active Directory 组进行妥善管理对于安全性和业务连续性都至关重要。安全组授予对关键 IT 资源的访问权限,而分发组则用于控制通过电子邮件传播信息的方式。在手动流程下,组管理会对 IT 团队造成沉重负担,并且非常容易出现代价高昂的错误。虽然 PowerShell 可以提供帮助,但它既需要时间,也需要专业技能。因此,许多组织会投资诸如 Netwrix Directory Manager 之类的第三方组管理解决方案。想了解更多,请访问 Directory Manager Solution.
分享到