【问题标题】:Automating the Encryption of the settings.xml file in service fabric using TFS automation build使用 TFS 自动化构建自动加密服务结构中的 settings.xml 文件
【发布时间】:2017-11-22 05:03:56
【问题描述】:

我需要在我的 Service Fabric 应用程序的 settings.xml 文件中加密某些部分/参数值。我们目前在 TFS 中设置了一个构建过程来启动构建,并希望在我们将其推广到生产环境时在此过程中合并值的加密。我已阅读“在 Service Fabric 应用程序中管理机密”,其中介绍了加密的步骤:

  1. 获取数据加密证书
  2. 在集群中安装证书
  3. 在使用证书部署应用程序时加密密钥值并将其注入服务的 settings.xml 配置文件中
  4. 通过解密相同的加密证书从 Settings.xml 中读取加密值。

我可以看到我们可以使用 MustOverride 属性覆盖 XML 文件中的参数,并在 ApplicationManifest.xml 文件中提供参数的名称和值。

有谁知道或可以将我链接到可以在 TFS 构建过程中执行此过程的文章吗?我正在寻找一种单击类型的部署,我们的部署团队(他们都不是程序员)可以使用它来将其转移到生产中。我了解必须做什么,只是没有看到修改我们的服务结构程序和构建以利用此过程所需的步骤。

【问题讨论】:

  • 您使用的是旧的 xaml 构建还是 vNext 构建?
  • 我们正在使用 vNext 构建过程。

标签: azure encryption service tfs azure-service-fabric


【解决方案1】:

这是我在没有 Azure Key Vault 的情况下在 Service Fabric 中进行加密和解密的方法。由于我们加密的数据没有改变,因此决定使用证书加密值并将值放入正确的 xml 文件中。

  1. 生成或获取 X509 证书。确保 KeyUsage 具有“DataEncipherment”,表明这对数据加密至关重要
  2. 获取证书的指纹。您可以在 MMC 证书插件中获取此信息。
  3. 使用 powershell,使用 powershell 中的 Invoke-ServiceFabricEncryptedText 函数加密文本。使用证书中的指纹来加密文本。这将创建包含基本 64 位字符串的文本加密,该字符串包含秘密密文以及有关用于加密它的证书的信息。这很关键!此外,最好使用证书对加密字符串运行 Inoke-ServiceFabricDecryptText 方法,以确保它可以正常解密。
  4. 现在是有趣的部分,以正确的方式将其放入所有 XML 文件中以使其正常工作。 (这就是它变得混乱的地方)。
  5. 首先需要修改settings.xml文件。您要加密的参数需要设置为 IsEncrypted="true" Value="" 和 MustOverride="true"。
  6. 接下来,您需要在 ApplicationManifest.xml 文件中声明覆盖参数。确保应用程序清单中的参数名称与设置中的相同。在 applicationmanifest.xml 文件的 Parameters 部分中设置参数的 Name 并设置 value = ""。
  7. 在引用参数名称的 ConfigurationOverride 部分中,将值设置为参数部分中的参数。目前这将为空白,同时设置 IsEncrypted="true"。
  8. 这就是我卡住的地方。所有这些其他信息都很容易获得,下一部分不是。接下来在项目下的 ApplicationParameters 文件夹中,选择发布到服务结构时使用的 XML 文件。这是您将放置加密值的地方。在此部分创建一个参数,将名称设置为您在 ApplicationManifest 中提供的名称,并将值设置为从证书生成的加密值。

部署时,此参数将作为加密值传入。要在代码中使用它,您需要确保引用 DecryptValue。例如:

var decryptedPassword= configurationPackage.Settings.Sections["sectionname"].Parameters["ConnectionString"].DecryptValue();

这将生成一个可在整个代码中使用的 SecureString。我使用有关如何将 SecureString 转换为在线可用字符串的众多参考资料之一将值转换为字符串。

就是这样。我希望这可以帮助不使用 Azure Key Vault 保护机密的其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多