- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 C# 中构建一个 WebAPI 服务器,使用 GitHub 来存储源代码并执行 CI/CD,以及 Azure WebApp,这是我的管道部署 Web API 服务器的地方。
目前,在我当前的更改中,有连接到我的数据库的信息,因此地址、用户名和密码:很容易理解我无法提交更改,因为我会让全世界知道我的敏感数据:)
因此,问题是:我应该如何(或者如果有多种方法,这是考虑到我的情况的最佳实践)处理这个问题?我做了一些研究:
有些人建议使用 Azure Key Vault 或类似的服务,但我不知道如何解决这个问题:代码中的某个地方仍然会调用这些服务,因此我仍然会有敏感数据在代码中,对吗?
有些人建议使用环境变量:我认为我可以在本地计算机和存储库中添加环境数据,然后创建一个处理此问题的服务,类似于(更多是伪代码,但我认为每个我会使用的方法确实存在):
public class SecretConsumer
{
public string GetSecret(string secretId)
{
if (Environment.IsGitHub())
{
return github.secrets[secretId];
}
return environment.getVariable(secretId);
}
}
这个方案的问题是:CI/CD是如何获得的?我的意思是,我知道我的本地计算机和 Github 中运行的测试将如何工作,但是应用程序的部署将如何工作?我需要在 Azure 中添加相同的环境变量吗?因此,这些信息每次都需要手动更新,对吗?
有些人建议使用配置文件,例如 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/
我尝试按照这些说明返回到前一个目录,但结果是“-bash CD:OLDPWD未设置”。。。我怎么能做我想做的事呢?。谢谢。
我认为在 IPython 中使用 ! 前缀的 shell 命令会使系统 shell 实际执行该命令,但似乎并非如此。考虑以下情况,我从 /home/Documents/Rx 开始,启动 IPython
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
有些 Live CD 可以启动操作系统并允许您无需安装即可使用它。 我想知道是否有一种简单的方法来自定义 Live CD,以便它只加载运行一个应用程序所需的内容,然后运行该应用程序。 最佳答案 对于
当我从 Live CD 启动 Linux Mint 时,我能够将文件保存到“文件系统”。但这些文件保存在哪里呢?不可能是光盘,因为它是 CDR。我不认为它存储在 RAM 中,因为它只能保存这么多数据,
创建了以下类,暂时没有接口(interface)/抽象类: 测试 - 用于创建测试数据 音乐 - 应存储所有 CD CD - 应存储艺术家和 CD 标题 + 所有歌曲 艺术家 - 仅包含字符串名称 歌
在 Git 提交和推送之后,Go 管道有时需要一段时间才能启动。即使在手动按下开始按钮后,也可能需要很长时间。有没有一种设置或方法可以让它更快地获取更改并更快地启动?我不介意它是否在服务器上使用更多资
这可能吗? 我的第一个猜测是: C:> Get-WmiObject Win32_CDROMDrive 但是当我尝试这个时,它只告诉我 Caption , Drive , Manufacturer ,
我正在运行 gitlab 作业,在作业中我试图取消设置在 CI/CD 设置中的某些变量。 例如,我有SOME_VARIABLE设置为 然后,在工作定义中,我正在尝试 variables: SOM
我遇到的问题是 cd不在窗口节点中工作: node("Window-node") { stage('unstash'){ echo
我尝试关注these instructions返回到上一个目录,但这会导致“-bash cd: OLDPWD not set”。 我怎样才能做我想做的事? 谢谢。 最佳答案 我也遇到了同样的问题。为
我在postgresql有点情况 我有两个表 t1 和 t2,并且都有一个列具有相同类型的数据“col_data”,col_data 可能只有以下数据 ('ab', 'cd', 'ab,cd', 'c
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我如何在 PowerShell 中编写函数或别名命令,以便 cd 可以做两件事: cd 给定的目录 ls 目录内容 编辑: 我需要的是这个: function ccd { param($pat
我有一个表格,其中填充了某些值,例如 | CODE | NAME | NB: THIS IS A VERY BASIC EXAMPLE | zygnc | oscar alpha |
所以表结构是这样的 CD id | Artist id 我想返回在此表中多次出现的艺术家,例如不止一张 CD。 我使用的是 Mysql,那么执行此操
This question already has answers here: Reference - What does this regex mean?
如果我们使用 cd bin,我们应该能够导航到 bin 文件夹。 那么bin目录前使用$的目的是什么?“cd $bin_dir” 请解释一下 最佳答案 $bin_dir 是环境变量(请阅读此处了解更多
我正在使用express generator 。运行生成器后,它输出以下内容: install dependencies: $ cd . && npm install cd .有什么意
我有一个旧程序可以从磁盘读取/翻录 CD/音乐数据。它是一个自定义程序,可以读取轨道数据并将其转换为 wma/wpa/wav 格式。然后用户输入如何获得许可,程序将数据和音乐文件提取到我们的 LAN。
我是一名优秀的程序员,十分优秀!