如何在不使用App Service的应用程序设置的情况下保护Azure客户端ID和密钥

时间:2017-06-29 10:04:23

标签: security azure-active-directory azure-keyvault database-security clientid

我使用Azure KeyVault来存储我的数据库凭据,现在要访问它我在服务代码中有硬编码的客户端ID和客户端密钥。 我怎么能避免这种硬编码作为其不安全的?

1) I don't want to store client id and client secret in certificates, as 
deployed certificates are again insecure
2) My app is not hosted on Azure App service, so I can't use App Settings to 
store client id and client secret.

是否有办法仅在a时使Azure Active Directory返回访问令牌 请求来自我的应用网址? 其他 如何保护客户端ID和客户端机密免受黑客攻击

3 个答案:

答案 0 :(得分:0)

您可以将客户端ID和密码保存在azure blob中,这可以通过共享访问签名(SAS)进行保护。但是,这只会创建另一个密钥来保护您当前的密钥(KeyVault),如果服务器端的应用程序/代码遭到黑客入侵,那么我就不会有100%的安全保护方式。

答案 1 :(得分:0)

使用客户端ID和客户端密钥来保护密钥保管库只是意味着您现在有了一个新的秘密来尝试并以某种方式保护。更好的方法是使用证书来访问密钥保管库。您现在拥有额外的安全性,因为您需要证书的私钥才能将其安装到您的应用程序中。

答案 2 :(得分:0)

如果在Azure App Service或Azure VM上部署服务,则可以启用托管服务标识(MSI)并将Azure App服务的服务主体添加到Azure Key Vault。 MSI允许在关联的Azure服务本身上生成服务主体。这意味着您不再需要存储客户端ID和客户端密钥。 Azure AD直接与Azure App Service配合使用。

以下是Azure MSI https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/overview

的介绍

使用客户端ID和客户端密钥的 NOT 的另一种方法是通过证书获取访问令牌。只需将证书上载到Azure Web App证书库并调用证书即可获取指纹即可完成此操作。您可以参考这篇文章https://docs.microsoft.com/en-us/azure/key-vault/key-vault-use-from-web-application