通常,当您使用密钥保管库加密和解密数据时,您必须保留AD注册的应用程序(具有访问密钥保管库的权限)ClientID和ClientSecret以纯文本格式保存。这似乎是一个安全问题,如果有人窃取了ClientID和Secret,任何人都可以声称他们是注册的应用程序。
是否存在更安全的方法?
答案 0 :(得分:2)
您可以使用证书进行身份验证,而不是秘密。
这种方法需要做三件事:
从this博客文章中,您可以获得前两个步骤的一些代码。
答案 1 :(得分:0)
除了使用基于证书的KeyVault之外,Azure托管服务标识还引入了一种新方法,使Azure服务成为服务主体,而无需任何客户端应用程序注册和客户端密钥。目前,它仅适用于某些服务的预览阶段:Azure VM,Azure App Service,Azure功能,Azure Event Hub& Azure Service Bus。更多信息可以在https://docs.microsoft.com/en-us/azure/active-directory/msi-overview
找到 [更新]当您需要从KeyVault检索内容时,使用Azure MSI,您不需要客户端密钥。仅使用AzureServiceTokenProvider()
方法检索访问令牌
在使用自动化的实际部署中(例如通过Ansible),您可以使用外部证书在Ansibe Vault中存储敏感变量,并生成256位链以保护此类信息。在自动化部署期间,将解密证书以访问这些变量并执行进一步部署。这样就可以为整个Azure部署添加更多加密层。