gpt4 book ai didi

iis - 将 asp.net 核心配置排除在源和管道之外

转载 作者:行者123 更新时间:2023-12-04 11:01:55 25 4
gpt4 key购买 nike

我正在从事一个 asp.net 核心项目,我正在努力弄清楚如何使我的源代码和管道 100% 保密。

我有一个运行 azure 代理的虚拟机和一个用于构建和发布的 azure dev ops 管道。
如果我删除 VM 上的站点,发布管道将自动神奇地为我重新创建它并部署最新版本。

超酷。

现在我阅读了配置 .Net 核心应用程序的最佳实践,我找到了这篇文章:https://www.humankode.com/asp-net-core/asp-net-core-configuration-best-practices-for-keeping-secrets-out-of-source-control

所以在代码中保守 secret 是一个坏主意,这是完全有道理的。
但是,如果我将相同的安全主体应用于 Yaml,那么我当然也不应该在我的管道中放置 secret 。
但我需要管道能够从头开始重新创建站点,它应该可以正常工作。不知何故,该站点需要知道其默认 sql 连接在哪里,或者它需要具有 azure 应用程序配置服务的 key 。我不应该每次发布后都必须登录到 VM 并手动创建 appsettings.json!

因此,无论站点需要操作什么,都需要包含在管道中,因此是一些工件,或者包含在代码中。

我已经用谷歌搜索了好几天,但我似乎找不到任何关于如何完全自动化的信息。
我考虑过创建一个从实际 VM 注册表读取的自定义配置提供程序,但这也感觉不对。
我基本上需要一个不在站点本身中托管的配置选项。所以我在虚拟机上设置了一次,再也没有了。

最佳答案

Lex Li 在评论中列出的方法是 Microsoft 推荐的保护管道中“ secret ”的方法。

在我看来,本史密斯的回答同样好,但安全性可能稍差一些。

我在我们的组织中使用这种方法。我们所有的发布管道都根据部署到的环境使用适当的设置进行最终配置转换。

即 db 连接在开发、测试和 UAT 以及生产部署阶段进行转换。

enter image description here

我将管道变量中的相关 secret 作为 protected secret 保存。我这样做有两个原因:

  • 只有选定数量的受信任人员才能访问发布管道定义。
  • 即使有人确实可以访问这些定义 - 您也看不到安全变量。即使您在变量选项卡上“取消挂锁” - 您也看不到设置是什么。

  • enter image description here

    我们的实际 secret 然后存储在我们的企业 secret 库中。

    使用 Azure Key Vault 绝对是一个好方法。然而,我们已经有一个集中的地方来保存我们的东西;我不想要它在 3 个地方。

    如果不将变量组作为管道过程的一部分,我将是失职的。与构建/发布变量的概念相同 - 不同之处在于您现在可以在一个地方共享它们。

    enter image description here

    这些当然都是意见。这只是这样做的一种方式;我觉得这是安全性和灵活性之间的一个很好的平衡。

    关于iis - 将 asp.net 核心配置排除在源和管道之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58758158/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com