文件服务器是 IT 中的一个事实,我很好奇是否有任何普遍接受的做法(我在这里犹豫使用“最佳”一词)如何创建组并应用权限来管理客户端对共享文件夹的访问一个文件服务器。
在我目前的工作中,我最终继承了很多不同的方法,从 ACL 上的数十个组到将单个用户直接放在文件系统上。我的任务是清理混乱并在整个公司(大型环境、15 万员工、9 万台客户端计算机、100 台文件服务器)中找到某种标准化的方法来解决这个问题。
根据我对这个问题的理解,您似乎至少需要一组每个安全资源所需的访问级别。这个模型似乎提供了最大的灵活性,因为您不需要再次触及文件系统权限,除非您需要支持不同的访问级别。缺点是与跨多个共享资源重复使用同一组相比,您将创建更多组。
这是一个显示我的意思的示例:
在名为 FILE01 的文件服务器上有一个名为“测试结果”的共享,您有需要只读访问、读写访问和完全控制的人员。1 个安全资源 * 3 个访问级别 = 3 个安全组。在我们的 AD 环境中,我们将它们创建为通用组,以便我们可以轻松地从林中的任何域添加用户/组。由于每个组唯一地引用一个共享文件夹和访问级别,组名包含这些“关键”数据,因此权限为:
"FILE01-Test Results-FC" -- Full Control
"FILE01-Test Results-RW" -- Read & Write
"FILE01-Test Results-RO" -- Read Only
通常,我们还将包括内置的 SYSTEM 帐户和具有完全控制访问权限的内置管理员。现在可以使用组成员身份来处理对谁实际获得此共享的访问权限的任何更改,而不必触及 ACL(通过添加代表特定业务角色的“角色”组,如经理、技术人员、QA 分析师等,或者只是个人用户进行一次性访问)。
两个问题:
1)这实际上是处理权限的推荐或有效方法,还是我错过了一些更简单、更优雅的解决方案?我会对任何使用继承但仍然保持灵活性的解决方案特别感兴趣,因为当事情发生变化时不必重新 ACL 大部分文件系统。
2) 您如何在您的环境中处理文件服务器权限和组结构?那些也在大型环境中工作的人可以获得奖励积分。
这种方法还不错。作为一项规则,永远不要使用单个用户来添加权限 - 使用组。然而,组可以跨资源使用。例如,HR 可能对文件具有 RW 访问权限,而 MANAGERS 可能具有 R。您还可以设置基于访问的枚举。请看以下网络广播:
TechNet 网络广播:Windows Server 2003 管理系列(第 4 部分,共 12 部分):组管理(200 级)
基于访问的枚举也可以让生活更轻松:
基于访问的枚举
ABE 可以帮助减少您必须管理的不同共享的数量。
我的方法是不使用文件/目录级别的文件权限;使用文件共享级别权限,并将整个服务器文件系统数据驱动器设置为“所有人完全控制”(这变得没有实际意义)。
多年来(10+),我发现 NTFS 权限更复杂并导致更多错误。如果权限设置错误,或者继承被破坏,你就会暴露数据并且很难找到和看到它。另外,您会遇到移动/复制问题……移动文件的用户也会移动文件的 ACL,而复制会继承目标 ACL。
使用相同的读/写组,但使用 Comp Mgmt MMC 在整个文件共享上。不要做完整的......用户会用部分知识/最佳意图射击自己。
你的方法基本上就是我的方法。
我要添加的唯一内容是:
1)我会通过评估他们在服务器之间的需求来添加你的“角色”方案,而不仅仅是在你可能会遇到异常值的一台服务器上,但我的理论是当你遇到它们时,创建另一个组。以我的经验,有一个异常值有很多。
2)我会强烈重新评估对通用组的需求,因为您对它们进行复制命中,因为通用组内的成员和组被复制到全局目录服务器,而只有域本地和全局组是复制到全局编录服务器。因此,如果您在通用组中进行更改,它会启动复制,而对于全局和域本地则不会。
您为每个访问级别使用资源组的方法是正确的。我唯一会考虑的是使用域本地组来获取资源。如果您正在创建特定于服务器的资源组,则不一定需要使用通用组。
将域本地组用于资源的缺点是您最终会得到更多组。正如 Zypher 指出的那样,好处是复制问题较少。
提议的方法似乎相当可靠。不过要注意的一件事是您最初设置文件共享的方式。推荐的做法是拥有一个顶级共享,其中包含您随后分配组权限的子文件夹。然后,NTFS 可以绕过顶级文件夹上的“遍历文件夹/执行文件”并授予对子文件夹的访问权限。
该结构将看起来像 \servername\sharename\group-folder,共享权限只需要在“sharename”文件夹上设置,而实际的 NTFS 权限在“group-folder”文件夹上设置。
通过这种设置,您的文件服务器也将能够更好地执行。
一般我会做的其他事情是对组有一个命名约定,使组名与组文件夹名称相同(如果需要,可以附加 FC/RW/RO),并将 UNC 粘贴到组描述中的文件夹中(以便您的登录脚本可以读回它并以这种方式设置驱动器映射,并且还可以更轻松地查看哪些共享文件夹适用于哪些组)。
自 Windows 2000 以来,我一直用于 Windows 文件服务器的标准做法(在 Mark Minasi 的 Mastering Windows Server 系列中进行了介绍,因此请在此处查看更多信息)是使用文件服务器本身本地的组进行嵌套。
例如,考虑在名为 MUPPETS 的域中名为 KERMIT 的文件服务器。
假设 KERMIT 有几个文件共享:
创建 KERMIT 本地的组以进行访问,并完全按照您指定的方式授予他们在文件系统上的权限(即每个共享每个访问级别一个组)
因为这些是本地组,所以您可以在其中放置您想要的任何其他组或用户 - 域本地组、全局组、通用组、来自林中任何域的用户帐户。权限管理现在位于文件服务器组的本地,而不是文件系统或 AD。
这确实为您的组管理增加了一个额外的层,但它的好处是允许(例如)站点本地管理员管理他们自己的文件服务器,而不需要该文件服务器的管理员权限。如果你有一个联合式的分支机构结构,每个办公室都用它的服务器做自己的事情,这可能是一个真正的好处。您可能不想将 AD 管理员权限授予几十个本地站点管理员。
它还可以防止您的 AD 被很多组弄乱(每个服务器每个共享的每个访问级别一个组可以很快加起来),并最大限度地减少 GC 之间的组复制。它允许您为角色而不是权限保留 AD 组。
如果您的环境是严格标准化的,并且所有文件服务器都是相同的并且可以复制,那么这显然是您不需要的另一层组。此外,如果您知道您需要特定的 AD 组在每个文件服务器上存在的共享上拥有相同的权限,那么您将需要一些自动化来维护它。
简而言之,您的文件服务器彼此之间的差异越大,使用机器本地组就越有意义。它们越相似,您就越想使用您当前使用的系统。
我正在考虑从 NetWare 迁移到 Windows Server 2008,所以最近我一直在想这个问题。Server 2008(以及某种程度上的 Server 2003R2)具有一些非常好的特性,可以真正简化这种过渡。Server 2008 提供了开箱即用的基于访问的枚举。这是一个非常好的功能,它允许用户只查看他们有权访问的目录。如果你有这样的分享...
\\user-home-srv\homes\
如果没有 ABE,最终用户将看到数十/数百/数千个目录。使用 ABE,最终用户只能看到一个。共享股份也是如此。如果您愿意,您可以使用 ABE 为您的所有部门目录创建一个巨大的卷,而不会向您的用户发送他们无法进入的目录的垃圾邮件。虽然不是 ACL 问题,但它有点相关,所以我提出来了。
Server 2008 似乎比其早期版本做得更好的另一件事是 ACL 继承。将大树顶部的 ACL 更改向下传播到叶子似乎更快。
由于我们的 Netware 遗留问题,我们有大量的组,这些组是根据其中的成员来命名的,其中一些是根据他们提供的访问权限来命名的。对于具有严格访问权限的目录,我们还使用“RO”“完整”命名法。
我们有一个单一的“共享”卷(仍在 NetWare 上,但我们计划在迁移到 Windows 时让它成为单一的),它是所有 4,400 名工作人员的单一共享卷,上面有超过 350 万个文件。顶级目录都是部门名称,每个部门都规定了其中的内容。对于非常大的部门有一些例外,它们具有带有 ACL 的第二级目录。
在我上一份工作中,我们甚至能够设置权限,这样申请工作的 HR 员工就无法在他们的服务器上看到他们自己的应用程序数据。它需要一些继承权限过滤器来完成,这类似于 Windows 上的“块继承”标签。棘手的部分是记录这一切,但它确实有效。
最好的情况是让每个用户只添加到一个安全组中,以用于用户的工作角色。然后在需要时为该角色委派访问权限。
同样,应该使用“资源”安全组授予共享文件夹访问权限,例如您的“FILE01-Test Results-RW”示例。这将包含工作角色、部门角色或其他适用的组。
这种设计的好处是您可以按组(团队、部门等)委派访问权限,而不是难以跟踪的一次性访问权限。当用户转移到另一个部门时,您需要清理所有旧的访问权限。
缺点是组可能被滥用。明确区分组的用途,以便分配给共享的资源组不会像部门组一样被重复使用,从而造成访问混乱。