.net - 在 Azure 中保护应用程序的客户端 ID 和 key

标签 .net azure oauth-2.0 azure-active-directory service-principal

保护 ClientIdSecretKey 以避免服务身份假冒的指南是什么?

这些用于使用 OAuth 在 Azure Active Directory 中进行 ServicePrincipal 身份验证。

目前,我们在无状态服务中使用配置设置。

在线建议建议将敏感数据存储在 KeyVault 中,但是,为了检索它,服务需要证明其身份,因此需要 ClientIdSecretKey.

我正在考虑 encrypted configuration files .

最佳答案

这里的问题是,在某些时候您需要在 Web 服务器内存储 secret 。您可以通过加密配置文件或将 secret 放入 Key Vault 来添加混淆层,但在某些时候,服务器需要获取其正在访问的资源的纯文本密码。

这在很大程度上取决于您想要减轻的风险是什么。

如果您希望防止 Azure Web App 被泄露,那么您做什么并不重要,您的 secret 已经泄露。

如果您希望确保您的 secret 安全,不让除您所在部门的安全团队之外的所有人知晓,那么 Key Vault 可以提供解决方案。

如果您希望能够从 Github 部署整个代码库,并包含加密的 Web.Config 文件,那么这将解决这个问题。

了解您要防范的风险,并从那里开始逆向工作。

Azure 推荐的方法是将安全数据简单地存储为应用程序设置,并从应用程序引用该环境变量。

它简单、有效,而且您不需要公开存储您的 secret 。

我的大多数脚本都将 secret 保存在 Keyvault 中,部署脚本从那里读取它们并在部署时将它们写入应用程序设置中。

关于.net - 在 Azure 中保护应用程序的客户端 ID 和 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35924986/

相关文章:

meteor - 我应该如何存储来自第三部分 api 的访问 token

c# - 如何将依赖注入(inject)与 Facade 模式一起使用?

c# - Azure服务总线队列避免跨环境读取消息

visual-studio-2010 - 在 Visual Studio 2010 中调试 Azure 时设置启动 Web 角色

sql-server - 如何使用 Azure SQL 数据库防止/处理 ErrBadConn

c# - 当 Azure SqlTrigger 命中时,我们如何确定哪一列已更改

c# - 多线程格式化datagridview行?

.net - 在 WiX 中轻量运行时,DefaultDir 无效

node.js - 使用 Node js 授予 OAuth2 密码

c# - 由于 Azure 广告 OpenIdConnectAuthentication 中的访问 token , session 将在 1 小时后过期