内部 SharePoint 维护安全帐户凭据

Pav Cherny

内容

SharePoint 环境中的密码更改
服务器场凭据问题疑难解答
结论

经常更改场凭据和密码是重要的措施,使 Microsoft Office SharePoint 服务器 (MOSS) 场安全的安全帐户。 还为管理员,这些任务是令人乏味的工作和重复。 这些工具是难以使用、 基础的进程是复杂,好的文档很难查找,并且没有损坏服务器场,即使执行所有正确的过程的某些风险。

添加到组合将是有问题的技术建议 Microsoft 产品支持服务 (PSS)。 在一手动,有非常有用的知识库 (KB) 文章,如" 如何更改服务帐户和在 SharePoint Server 2007 和 Windows SharePoint Services 3.0 中的服务帐户密码." 并且另一方面,有灾难,如" 使用 SharePoint 产品和技术向导时出现的错误信息: 异常: System.ArgumentException: 加密或解密过程中的错误.'"

上述的相应说明则必须创建新的配置数据库无法再解密 Web 应用程序的帐户凭据。 这如果在错误时使用一个关键命令开关,则会发生此情况,或者如果更新的过程 Farm 凭据完成成功由于任何原因。 此知识库文章 irreparably 做 instilling 在管理员更改场凭据可能会损坏服务器场的担心在正常的工作。 用户可以预期客户可以通过频繁更改场和安全帐户密码,如果在遇到这种风险维护在其 SharePoint 环境中的安全性?

从 Active Directory 以重置用户帐户擦除客户,不,并它们应该不会强制擦除出其 SharePoint 配置数据库或者只是因为 Web 应用程序密码已丢失。 不创建新的配置数据库。 在大多数的情况下就足够了使用标准的 Stsadm.exe 工具来覆盖已损坏的凭据。 在所有其他情况下,您可以重设密码,并使用工具中提供该助理材料中包含保留配置数据库, 2 月 2009 代码下载. 重置密码 Windows SharePoint Services (WSS) 3.0 和 MOSS 2007 环境中的不需要旧凭据密钥也不新的配置数据库的访问。 但是它需要 Microsoft 和基本进程来方便用户密码更改的更好的文档中的更好地支持工具。

它是第一列,在其中我查看标准过程和工具用于维护 SharePoint 的安全帐户,讨论其限制,突出显示该的风险并建议的替代方法获得更好的安全性降低管理的系统开销,因此降低总拥有成本 (TCO),在 SharePoint 环境中一两篇系列。 此第一部分处理体系结构的详细信息和复杂的过程的完成密码更改。

了解如何 SharePoint 处理安全帐户和密码您维护安全使用脚本手动或通过一个全自动的解决方案如我将介绍在下个月的专栏中至关重要。 要使我说明实际和面向的做法,我再次依赖于测试环境。 在此第一的部分是简单的单服务器安装,请已足够,助理工作表所示。 始终,我的工作表和辅助工具是仅测试实验室,不能在生产环境中使用。 使用我的工具的风险由您自己。

SharePoint 环境中的密码更改

更改 SharePoint 安全帐户的服务器场的配置帐户密码将是非常复杂的任务。 此外,您必须应用更改 Active Directory 中,并在 SharePoint 服务器的本地安全帐户管理器 (SAM) 数据库,服务控制管理器 (SCM) 数据库中、 在 IIS 元数据库中、 在 SQL Server,和,当然,SharePoint 内容和配置数据库中。

您还必须复制所做的更改到的所有其他服务器场持续应用这些更改中。 您可能要您更改将影响服务器场的凭据密钥,它是 SharePoint 用于保护的配置数据库中的安全帐户密码在加密密钥,则重新加密所有 SharePoint Services 和应用程序池的服务器场中的所有服务器的所有密码。 更改服务器场的配置帐户密码时, 您将隐式更改服务器场的凭据项。 图 1 显示具有两个前端服务器的服务器场中的过程。 frankly,是此进程工作以及它会令人印象深刻。

fig01.gif

图 1 更改 SharePoint 安全帐户的密码

在 Active Directory,开始的所有安全帐户的密码更改并且从前的时间,更新 SharePoint 中, 受影响的密码服务器场处于不一致的状态。 密码现在已过期 IIS 和其他位置中,,但 SharePoint 仍然正常运行。

这是与高可用性要求的组织的好消息。 密码更改并不需要系统重新启动。 Windows 服务和 IIS 可以继续使用它们获得上一次启动服务器时,登录使用旧密码受影响的安全帐户的安全令牌。 但不要重新启动 IIS 或整个服务器在过渡阶段的密码不一致。

IIS 和其他服务将无法使用旧的密码登录期间重新启动,并且受影响的应用程序池或服务将无法再联机。 在这的种情况下,IIS 将警告写入到服务器的事件日志 (参见 图 2 )。 因此不要等待很长时间与以下 Active Directory 中的密码更改的 SharePoint 中密码更新。

fig02.gif

图 2 IIS 警告有关过期的应用程序池凭据

为了更新应用程序池帐户的密码,应使用 SharePoint 3.0 管理中心 (_admin/FarmCredentialManagement.aspx) 或下面的 Stsadm.exe 命令:

stsadm -o updateaccountpassword -userlogin <DOMAIN\USER> 
  -password <PASSWORD> -noadmin

响应,SharePoint 将通过服务器场的凭据密钥加密新密码,并覆盖旧的配置数据库中的加密的密码。 接下来,SharePoint 会更新帐户信息在 IIS 元数据库和其他所需的位置中。 一旦这实现的 SharePoint 生成类型 SPContentAppPoolCredentialDeploymentJobDefinition 部署新的凭据在放在配置数据库的场中剩余服务器上的计时器作业。

图 1 所示,SharePoint 依靠计时器作业在场中的所有服务器上的全局应用管理设置。 SharePoint 计时器场中剩余的服务器上的服务提取该作业并相应地更新 WSS Administration (SPAdmin) 服务将服务器场的帮助的本地安全设置它们的服务器上备份到一致状态。

这是应用程序池帐户的过程,但有许多其他类型的 SharePoint Services 使用安全的帐户,如 SharePoint 计时器服务本身,在 WSS 帮助搜索服务,和可能共享的服务提供程序 (SSP)、 Office SharePoint Server 搜索服务和单一登录 (SSO) 服务。 可能有取决于安装在您的服务器场中解决方案的更多服务,每个服务类型都有不同的密码更新要求。 在 support.microsoft.com/Kb/934838 本文包含您必须使用服务帐户在 WSS 3.0 和 MOSS 2007 中的命令的列表。 检查您用于进一步工具,命令,并更新过程任何其他解决方案的产品文档。

这非常 diversified,uncoordinated 的横向的工具和命令当前 SharePoint 安全体系结构的缺点之一。 它不良好的伸缩,并根据在服务器场中使用的安全凭据的自定义解决方案的数量的 TCO 最推动。 在本系列的第二部分,我将介绍您如何这将控制,因此可以使用单一的解决方案来完成所有必要的更新,无论基础的服务类型。

最重要的更新方案与场凭据。 服务器场帐户的密码是特殊,因为它影响服务器场的凭据密钥,它来加密场中的所有密码,如前面所述。 因此,以下 Active Directory 中的服务器场帐户的密码的更改,您必须更新 SharePoint 使用命令:

stsadm -o updatefarmcredentials -userlogin <DOMAIN\USER>
  -password <PASSWORD>

重新 SharePoint 然后必须加密配置数据库中所有现有的 (加密) 密码它必须更新 SharePoint 计时器服务帐户 (以使用该服务器场帐户作为其标识),它必须通过类型 SPAdminAppPoolCredentialDeploymentJobDefinition 的计时器作业的方式将再次在场中的所有服务器这些更改。

在此阶段,很多事情可以错误。 可能会获取该的队列中堆积计时器作业,如 图 3 ,所示,否则更新进程可能意外,失败可能是由于留下 SharePoint 现在不能解密了,因为凭据项已更改的旧加密密码在突然断电。

fig03.gif

图 3 因为 SharePoint 定时服务没有运行在场中的所有服务器上,在队列中堆积 A 凭据部署作业

在其他的情况下您可能会更新应用程序池帐户密码新服务器场凭据已达到该的场中的所有服务器之前使用失败,因为它们无法解密配置数据库中,但为图示 图 4 中更新的密码过期的凭据密钥导致服务器。 这是一个值得关注的方案和原因 updateaccountpassword 命令中-noadmin 开关。 如果该服务器场帐户也用作应用程序池帐户 (不推荐),则应更新服务器场凭据前,等待,直到服务器场中的所有服务器已处理该计时器作业,然后更新应用程序池。

fig04.gif

图 4 保持应用程序池更新之前已处理管理应用程序池凭据部署作业

相应,updateaccountpassword 命令将检查指定的安全帐户是否在服务器场帐户和如果不执行更新这样则通知您有关依赖项。 通过-noadmin 开关,您禁用此复选和向在应用程序池配置中的该帐户应用更改的密码但很难自动执行相应的延隔时间在脚本中的这些步骤。

服务器场凭据问题疑难解答

现在让我们深入在 updatefarmcredentials 命令。 它带有导致很好的获得认可的危险开关尤其在使用该文章中所述" 使用 SharePoint 产品和技术向导时出现的错误信息: 异常: System.ArgumentException: 加密或解密过程中的错误”. 我是引用到名为交换机的本地。 SharePoint 开发人员引入了手动执行本地场凭据更新此开关。 其理念是您可以从管理中心 (_admin/ServiceJobDefinitions.aspx) 中队列中删除计时器作业,如果该作业已损坏或不处理任何其他原因,然后再执行直接通过使用命令的必要的更新步骤:

stsadm -o updatefarmcredentials -userlogin <DOMAIN\USER> 
  -password <PASSWORD> -local

-本地开关指示 updatefarmcredentials 命令只能在本地计算机上应用密码更改。 很重要识别,但是,此更新影响凭据项和在 SharePoint 定时服务,但不是在应用程序池搜索 SSP,服务,等。 假定您已经运行,updatefarmcredentials 命令不在场中的另一台服务器上-本地开关,并因此重新加密配置数据库中的所有密码。 不需要再次执行此重新加密步骤。 但如果您使用-本地开关不执行此步骤吗?

使用-本地开关不第一个运行在 updatefarmcredentials 命令没有此开关会导致问题,因为-本地开关更改凭据项。 使用在配置数据库中旧的密钥加密应用程序池密码,但此项将立即被覆盖。

请看一下 图 5 。 不能运行在 updatefarmcredentials 命令不使用的本地的开关不再因为这需要重新加密的不再可以解密的密码。 该命令失败时, 可以找到项应用程序事件日志说明:"错误 re-Encrypting 凭据 ID 022e607e-b49e-40e4-bd3f-f56a3c69f94d 与所有者 ID 431b6897-16eb-4b9a-be65-60f1f603008d 期间部署管理的应用程序池凭据请重新创建凭据手动。 操作是 due to 对象的当前状态的无效"。

fig05.gif

图 5 无法重新加密应用程序池密码,因为不再可以解密密码

如果只是更改单个服务器部署在服务器场帐户从网络服务帐户为域帐户,您会实际问题因为您不能在这种情况下更改回到旧的凭据项。 网络服务不使用一个的密码,因此随机凭据项。

在搜索帮助中可能遇到的" 使用 SharePoint 产品和技术向导时出现的错误信息: 异常: System.ArgumentException: 加密或解密过程中的错误” 提到前面,并且不进一步知识库,您问题的文章 worsens 因为您现在了解您必须创建新配置数据库摆脱不再可以解密的这些密码。 很遗憾的情况下一个 unbelievable constellation。 您不能运行在 updatefarmcredentials 首先,命令与-本地开关,或者命令应创建旧的凭据密钥的备份副本,以便您可以重新以后加密密码。 或只应检测密码不还重新加密,此时重新进行加密。

相反,-本地开关继续并令人高兴的是损坏 SharePoint 配置数据库没有任何的警告,如 图 5 所示。 要重置不再可以解密这些密码的 Microsoft 的支持工具会派上用场。 当然,警告您关于特定命令行操作的关键特性和的指导您利用该问题的正确产品文档将还感谢。

好消息是 updateaccountpassword 命令可以加密而无需解密旧密码应用程序池帐户的新密码。 因此,使用此命令更新使用域帐户的所有应用程序池。 这应负责大部分,如果不是所有已损坏的密码。 遗憾的是,不能使用此命令以更新使用网络服务帐户的应用程序池。 此帐户不需要一个的密码,因此 updateaccountpassword 命令不适用。

有趣的是,Network Service 帐户可能将与配置数据库中的密码数据关联的。 使用网络服务的新应用程序池获得没有的密码,而如果不断更改若要使用域帐户,并再恢复回应用程序池网络服务将继承该域帐户的密码引用。 SharePoint 不会将密码设置为空 (错误编码操作),并此 rubbish 数据现在导致该问题。

它是一个 ironic twist 客户应该丢弃其配置数据库,因为 rubbish 和完全无用的数据不再解密 ! 如果幸运的话您可以更改应用程序池配置管理中心 (_admin/FarmCredentialManage­ment.aspx) 中的,并指定域帐户。 如果要 unlucky 您会遇到加密/解密错误 图 6 所示。 您不能更改管理中心中的帐户、 无法使用 updateaccountpassword 命令,您不能运行在的 SharePoint 产品和技术配置向导和您不能使用 updatefarmcredentials 命令更新场凭据。 现在您怎么办?

fig06.gif

图 6 问题造成垃圾的网络服务密码留在配置数据库

若要解决此问题,需要一种工具,直接进入配置数据库,并删除垃圾邮件如重置 AppPool 密码工具 图 7 所示,并且包含的配套资料中的源代码。 此工具是非常简单。 它提取使用直接从配置数据库的关联的加密密码的帐户的应用程序池的数据,,然后使用 SharePoint 对象模型确定是否应用程序池密码可以解密。

fig07.gif

图 7 Resetting 损坏密码为空

如果通过对象模型访问密码参数异常失败,密码已损坏。 此处,该工具为提供了一个空引用和保存更改发回到配置数据库中替换加密的字节值密码的数组的机会。 空字符串不需要进行解密,并因此不会导致参数异常。 解决的问题。

为了完成修复过程,我建议您通过使用 Stsadm.exe 和中心管理更新场凭据和以后所有的应用程序池帐户。 您的服务器场回处于一致的状态,并且没有必须要丢弃配置数据库。

结论

更改服务器场的凭据和安全帐户密码是一个令人乏味的工作和易于出错的过程尽管,您 irreparably 需要担心更改场凭据会损坏您的服务器场。 即使您恰好丢失当前凭据密钥可以修复配置数据库。 您只需要重置,受影响的密码,而且这是通过标准的 Stsadm.exe 工具或一个低级数据库工具可能如重置 AppPool 密码。 因此保留更改场凭据和安全帐户经常,使用强的密码及不为安全帐户使用网络服务,因为它使场配置和故障排除。 使用专用的域帐户。

现在,您已经解决通过密码更改的数据库损坏的风险,您可以重点关注 SharePoint 安全体系结构中实际问题: 当前体系结构不适应密码更改很好。 要应用太多命令根据您必须更新在场中的服务类型更多或更少特定的顺序。 某些命令具有危险的开关,而某些不。 某些命令可能会损坏您的配置数据库 ; 其他是无害的。 某些服务需要整个场全局更新,并且其他人是本地到特定服务器。

在任何种情况下管理开销高,由于涉及,复杂性并且安全性通常低归因于少更改日程安排、 弱的密码和处理密码以明文形式的脚本。 我下一个列中我将介绍如何解决这些问题,并消除它们和所有服务类型,包括那些不但开发任何其密码更新要求。 没有更多的 (手动) 的密码更改!

Pav Cherny 是 IT 专家和擅长 Microsoft 技术协作和统一的通信的作者。 他出版物包括白皮书、 产品手册和联机重点 IT 操作和系统管理。 Pav 是总裁的 Biblioso Corporation,于托管的文档和本地化服务的公司。