我们正在使用Cloud Service configuration存储应用程序设置。但是我们想保护一些应用程序设置,例如用户凭据,数据库连接字符串等。推荐的设置方法是什么?
我们正在从网络角色和辅助角色中读取此配置。因此,不能选择使用aspnet_regiis实用程序,因为在工作角色中该功能不可用,因为未在工作角色中安装iis。
我们也考虑过使用Key Vault,但是最终会遇到保护Key Vault密钥的情况。
不幸的是,Azure云服务不支持managed service indentities
答案 0 :(得分:4)
我们也考虑过使用Key Vault,但最终还是一样 密钥库密钥的保护情况。
问题陈述
即使您可以将所有敏感信息移至Azure Key Vault,但是要访问Azure Key Vault,您需要clientID和client密钥(以建立云服务和Key Vault的身份以了解谁在访问它)。
这意味着您的应用程序的客户端密钥将位于云服务配置中,这几乎等同于首先位于云服务配置中的所有敏感信息:)。
解决方案
托管服务身份将成为访问Azure Key Vault并避免在云服务配置中保留客户端密钥的一种方式。
在没有传统云服务的托管服务身份的情况下,您可以使用Certificate Credentials for application authentication帮助建立应用程序身份并访问密钥库以读取密钥,机密等。
详细信息和示例代码
可以在此处找到示例代码: 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);