使用证书保护所需状态configuration中的凭据

我是新来的DSC,并试图找出如何使它为我们工作。

我坚持的是证书如何被实际保护。 我目前的理解是,这并不是那么好。

三大问题就是这些。 如何使用公钥作为解密源确实保护这些证书? 哪些计算机在推拉scheme中需要证书? 鉴于这些问题,处理证书的最佳做法是什么?

使用证书的公钥certificate传输源是有效的。 但将其用作解密密钥意味着访问证书的公钥将决定对密码的访问。

如果您必须将证书推送到每个需要解密MOF文件的计算机,那么什么才能阻止普通用户访问证书并能够解密MOF? 说活动目录安全意味着你可以把它放在纯文本中,只依靠AD安全。

有人能帮我解决这个问题吗?

    基本理念

    1. 要configuration的主机必须安装证书(使用私钥)。
    2. 设置目标节点的本地configurationpipe理器(LCM)时,必须指定该证书的指纹。 这告诉LCM将使用哪个本地证书(或更准确地说哪个证书的私钥)来解密证书。
    3. 您的DSCconfiguration必须指向包含相同证书的证书(公钥)的文件。 这是在configuration数据中完成的,因此如果您打算对每个节点使用相同的configuration,则可以为每个节点指定一个不同的证书。
    4. 当生成MOF时,生成MOF的机器使用公钥encryption凭证。
    5. 当目标节点上的LCM从拉取服务器(以MOFforms)检索configuration时,它使用由指纹识别的证书的私钥解密凭证对象。

    在一些细节

    公共密钥不能用于解密,而且您不是与configuration生成或分配机器共享私钥。

    这听起来像你正在考虑工作stream程,就好像有一个证书正在使用所有凭据。 你可以这样做,但我认为这个想法是每个节点都有自己的密钥对。

    我所说的“平均用户”是指非pipe理用户,不能导出证书的私钥(除非被授予权限),并且由于您不会移动此密钥,所以几乎没有机会它被暴露。 如果用户是pipe理员,那么他们当然可以访问。

    无论是通过未经处理的powershellconfiguration还是生成的MOF,在configuration文件中存储纯文本凭据的可能性都会更大。 如果没有encryption,那么你必须确保:

    • 存储configuration的文件系统/networking共享位置
    • 存储所生成的MOF的fs / share
    • 在服务器上存储MOF的fs / share
    • 确保拉服务器通过SSL运行(无论如何你应该这样做)
    • 确保Pull服务器上有validation,否则任何匿名查询都可能检索具有公开凭据的configuration。

    我认为DSC中的安全凭证是相当不错的,但最初的设置还是有一点考验的。

    AD PKI使这更容易

    如果您在AD环境中使用企业PKI,则很可能每台计算机都设置为使用CA进行自动注册,因此它已经拥有一个可自行更新的机器特定的证书 。 它有必要的设置用于此目的。

    我如何实现这一点

    由于DSC现在的工具对于DSC来说是非常普通的,所以很可能您将创build自己的工作stream程来生成configuration并编写脚本来协助您。

    在我的情况下,我有单独的脚本来生成LCM元MOF和生成节点的实际configuration,所以我的安全凭据的步骤之间分裂。

    在LCM生成脚本中,我实际上查询CA的域以find与正在configuration的机器的主机名相对应的证书。 我检索证书(CA没有私钥,只有公众),并将其保存到path供以后使用。 meta MOF被configuration为使用cert的指纹。

    在节点configuration脚本中,我将configuration数据设置为使用cert文件(仅再次使用公钥)。 生成MOF时,证书将使用该证书进行encryption,并且只能使用特定节点上的私钥进行解密。

    参考

    我在上面引用了自己的经验,但是这篇文章是一个很大的帮助: http : //blogs.msdn.com/b/powershell/archive/2014/01/31/want-to-secure-credentials-在-窗口的powershell期望的状态-configuration.aspx

    我不得不自己填一些洞。 在他们展示的例子中要注意的一点是,他们在节点configuration中提供Thumprint 。 这对节点configuration不是必需的; 他们只是同时生成configuration和LCM元configuration,并使用configuration数据来存储在那里使用的指纹。

    最后一段可能会令人困惑,但在文章的上下文中更有意义。 如果你没有同时生成两个configuration,那么他们的例子似乎很奇怪。 我testing了它; 用于encryption凭证的configuration数据中不需要ThumbprintCertificateFile是必需的,但它必须在configuration数据中,所以如果你以前没有使用configuration数据,你将会是现在。