azure - 保护 Azure 云服务配置中的敏感信息

标签 azure security azure-cloud-services

我们正在使用Cloud Service configuration存储应用程序设置。但我们想保护一些应用程序设置,例如用户凭据、数据库连接字符串等。建议的方法是什么?

我们正在从网络和辅助角色中读取此配置。因此使用aspnet_regiis实用程序不是一个选项,因为它在辅助角色中不可用,因为辅助角色中未安装 iis。

我们还考虑过使用 Key Vault,但我们最终遇到了保护 Key Vault key 的相同情况。

不幸的是,Azure云服务不支持managed service indentities

最佳答案

We also considered using Key vault, but we end up in the same situation of securing the key vault key.

问题陈述

尽管您可以将所有敏感信息移出到 Azure Key Vault,但要访问 Azure Key Vault,您需要 clientID 和客户端 key (以建立云服务和 Key Vault 的身份,以了解谁在访问它) )。

这意味着您的应用程序的客户端 key 将位于云服务配置中,这几乎相当于首先位于云服务配置中的所有敏感信息:)。

解决方案

托管服务身份将是访问 Azure Key Vault 并避免在云服务配置中保留客户端 key 的方法。

如果没有经典云服务的托管服务标识,您可以使用 Certificate Credentials for application authentication帮助建立应用程序身份并访问 keystore 以读取 key 、 secret 等。

详细信息和示例代码

  1. 您注册一个 Azure AD 应用程序来代表您的云服务。
  2. 在 Key Vault 的访问策略中授予对此 Azure AD 应用程序的适当访问权限(获取 key / secret 等的能力)。
  3. 现在,您无需生成常规客户端 key ,而是按照 Certificate credentials for application authentication 中的步骤操作。 ,将证书凭据与 Azure AD 中的客户端应用程序关联。
  4. 将此证书包含在服务定义文件 (CSDEF) 中,确保与您的所有云服务实例一起部署
  5. 使用应用程序的客户端 ID 和此证书获取 token 并开始从 Azure Key Vault 读取敏感信息。

示例代码可在此处获取: Authenticating to Azure AD in daemon apps with certificates

只是重要的代码片段

// Initialize the Certificate Credential to be used by ADAL.
X509Certificate2 cert = ReadCertificateFromStore(certName);

// Then create the certificate credential client assertion.
certCred = new ClientAssertionCertificate(clientId, cert);

// Acquire Auth token for talking to Azure KeyVault..
result = await authContext.AcquireTokenAsync(todoListResourceId, certCred);

关于azure - 保护 Azure 云服务配置中的敏感信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383440/

相关文章:

azure - 更新 Azure Service Fabric 证书。为什么要初级证书和二级证书?

javascript - 验证 Raspberry Pi http 请求

azure sdk2.5云服务部署不创建wad-control-container blob

azure - 如何在Azure云服务WebRole中引用本地文件

c# - 具有 .NET Standard 目标的 Azure 云服务经典版

azure - 我可以从 Jenkins 触发 Azure DevOps 构建吗

azure - 在 .Net Core 项目中使用 Microsoft.WindowsAzure.SDK 发出警告

asp.net - 信任失败 : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel

javascript - 在 Javascript 中公开私有(private)变量

azure - 使用托管标识将 Azure Key Vault 与 Azure Kubernetes 服务集成