代码之家  ›  专栏  ›  技术社区  ›  Rockstart

在Azure云服务配置中保护敏感信息

  •  3
  • Rockstart  · 技术社区  · 6 年前

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

    aspnet_regiis 实用程序不是一个选项,因为它在辅助角色中不可用,因为iis未安装在辅助角色中。

    我们也考虑过使用密钥保险库,但我们最终会遇到相同的情况,即保护密钥保险库密钥。

    managed service indentities

    1 回复  |  直到 6 年前
        1
  •  9
  •   Rohit Saigal    6 年前

    我们也考虑过使用钥匙保险库,但最终还是一样

    问题陈述

    这意味着您的应用程序的客户机密钥将位于云服务配置中,这几乎等同于首先位于云服务配置中的所有敏感信息:)。

    解决方法

    托管服务标识是访问Azure密钥库并避免在云服务配置中保留客户端密钥的方法。

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

    详细信息和样本代码

    1. 在密钥库的访问策略中授予对此Azure AD应用程序的适当访问权限(能够获取密钥/机密等)。
    2. 现在,不再生成常规的客户机机密,而是按照中的步骤进行操作 Certificate credentials for application authentication ,将证书凭据与Azure AD中的客户端应用程序相关联。
    3. 通过将此证书包含在服务定义文件(CSDEF)中,确保将其与所有云服务实例一起部署
    4. 使用应用程序的客户端ID和此证书获取令牌并开始从Azure密钥库读取敏感信息。

    示例代码如下: 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);