gpt4 book ai didi

c# - 敏感数据本地、GitHub上,支持CI/CD

转载 作者:行者123 更新时间:2023-12-03 05:11:24 24 4
gpt4 key购买 nike

我正在 C# 中构建一个 WebAPI 服务器,使用 GitHub 来存储源代码并执行 CI/CD,以及 Azure WebApp,这是我的管道部署 Web API 服务器的地方。

目前,在我当前的更改中,有连接到我的数据库的信息,因此地址、用户名和密码:很容易理解我无法提交更改,因为我会让全世界知道我的敏感数据:)

因此,问题是:我应该如何(或者如果有多种方法,这是考虑到我的情况的最佳实践)处理这个问题?我做了一些研究:

  1. 有些人建议使用 Azure Key Vault 或类似的服务,但我不知道如何解决这个问题:代码中的某个地方仍然会调用这些服务,因此我仍然会有敏感数据在代码中,对吗?

  2. 有些人建议使用环境变量:我认为我可以在本地计算机和存储库中添加环境数据,然后创建一个处理此问题的服务,类似于(更多是伪代码,但我认为每个我会使用的方法确实存在):

    public class SecretConsumer
    {
    public string GetSecret(string secretId)
    {
    if (Environment.IsGitHub())
    {
    return github.secrets[secretId];
    }
    return environment.getVariable(secretId);
    }
    }

    这个方案的问题是:CI/CD是如何获得的?我的意思是,我知道我的本地计算机和 Github 中运行的测试将如何工作,但是应用程序的部署将如何工作?我需要在 Azure 中添加相同的环境变量吗?因此,这些信息每次都需要手动更新,对吗?

  3. 有些人建议使用配置文件,例如 appsettings.json 文件。我将在其中放入所有敏感数据,然后使用 C# 服务读取它。
    然后,该文件将不会被推送到 Github,而是会推送到某种 appsettings.template.json 中,以便任何其他协作者都能够使用它来重新创建 appsettings.json 文件。

    我不明白这种方法是:Github 如何测试以及 CI/CD 如何工作?我的意思是,Github 对正在运行的 appsettings.json 文件一无所知,因此,如果某些测试需要这些信息......具体如何?
    然后,对于我的 Azure WebApp。同样,appsettings.json 不会位于 Github 中,因此它无法部署到我的 Azure WebApp:我该怎么做?我应该手动部署单个文件吗?这可能吗?

最佳答案

Some suggest to use Azure Key Vault or similar services, but I don't see how this can be solved: somewhere in the code there will still be the call to these services, therefore I would still have sensitive data in the code, right?

我认为 Azure Key Vault 是正确的选择。它可以存储数据库连接,包括用户名和密码。

然后,将用户管理标识或系统管理标识分配给您的 Azure Web 应用程序,并授予该标识访问 Key Vault 的权限。然后,在您的代码中,您可以使用 managed identity 连接到 Key Vault ,防止您必须使用代码中的任何 secret 。

上述场景的完整示例可以在here中找到。 .

如果您将软件和服务器配置为允许这样做,您还可以避免使用 key 保管库并使用托管身份直接访问数据库。这遵循相同的步骤:将托管身份分配给 Web 应用程序,并授予该身份对数据库的访问权限。请参阅this guide .

如果您唯一的 secret 是数据库的连接字符串,那么我认为这将是首选解决方案,因为它避免了对 Azure Key Vault 的需要。

要在本地开发期间使用托管身份,您需要为您的开发帐户授予对资源的正确权限,就像您对托管身份所做的那样,请参阅 this guide .

关于c# - 敏感数据本地、GitHub上,支持CI/CD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76618047/

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