azure - 如何安全地存储连接字符串客户端 ID 等?
问题描述
让我详细介绍一下我的设置
我正在构建一个托管在 Azure 上的 asp.net 核心 API 应用程序。我将我的密钥和东西存储在 azure keyvault 中。但是,我有一些 AzureAddClientId 和机密,现在存储在 appsettings.json(用于访问密钥库)中。我还将 appsettings.json 提交到我的 git 存储库。但是我知道这是不安全的。我使用 Azure DevOps 进行发布。所以我正在考虑做以下事情。请让我知道您对此的看法。
- 将 appsettings.json 添加到 git ignore 并在开发人员之间共享文件。
- 将 AzureAddClientId 和 AzureAADClientSecret 作为变量添加到 azure DevOps 构建管道。(devops 会像在 appsettings.json 中一样自动获取变量吗?)
解决方案
请查看使用Managed Identities。
构建云应用程序时的一个常见挑战是如何管理代码中的凭据以对云服务进行身份验证。保持凭据安全是一项重要任务。理想情况下,凭据永远不会出现在开发人员工作站上,也不会检查到源代码控制中。Azure Key Vault 提供了一种安全存储凭据、机密和其他密钥的方法,但你的代码必须对 Key Vault 进行身份验证才能检索它们。
Azure Active Directory (Azure AD) 中的 Azure 资源托管标识功能解决了这个问题。该功能在 Azure AD 中为 Azure 服务提供了一个自动管理的标识。您可以使用该标识向任何支持 Azure AD 身份验证的服务(包括 Key Vault)进行身份验证,而无需在您的代码中添加任何凭据。
推荐阅读
- css - 在 npm install --save bootstrap 之后我找不到 bootstrap.min.css
- python - 我的代码在 Spyder 上运行,但它不在 Anaconda Prompt 上运行
- python - 使用 Python 将文件名保存在 txt 文件中
- django - Django - 访问模板中的相关对象
- scrapy - 如何在 scrapy 中使用静态类型?
- php - 如何获得 2 个 ID 和 1 个行名
- flutter - 为什么 AnimationController 需要 vsync?
- static-site - 为什么 Pelican 忽略 STATIC_PATHS?
- bash - 命令 basename 在 find 命令中不起作用
- python - 尝试减去两个值时,Pandas 上的 For 循环返回所有值的 NaN?