您能否澄清一下如何从用 C++ 编写的外部应用程序(未部署在 Azure 上)安全地访问 Key Vault?
我已经阅读了有关此主题的几个文档页面,例如这个
https://learn.microsoft.com/en-us/azure/key-vault/general/developers-guide
似乎建议的方法是创建应用程序注册和服务主体(并为该身份提供适当的角色)来验证对密钥库 REST API 的调用。
如果这是正确的,那么现在主要的疑问是:我应该将主体 ID 和密钥存储在哪里才能确保安全?
谢谢你的帮助
要从 C++ 应用程序访问 Key Vault,请检查以下内容:
创建Azure AD 应用程序并授予 Azure Key Vault API 权限:
在 Azure Key Vault 中设置应用程序的访问策略,并根据您的要求选择权限:
例如,我通过 Postman 生成了访问令牌:
现在使用访问令牌访问 Key Vault:
GET vaultBaseUrl/secrets/secret-name/secret-version?api-version=7.4
如果这是正确的,那么现在主要的疑问是:我应该将主体 ID 和密钥存储在哪里才能安全?
您可以通过创建环境变量来存储凭据:
$Env:AZURE_CLIENT_ID="AppID"
$Env:AZURE_CLIENT_SECRET="CLientSecret"
$Env:AZURE_TENANT_ID="TenantID"
并使用应用程序详细信息生成访问令牌,并使用以下代码片段检索密钥的示例:
KeyVaultKey key = client.GetKey("key-name");
std::cout << key.Name();
std::cout << key.KeyType.ToString();
您可以通过 REST API 调用来访问 Key Vault,请参阅此 MsDoc
参考资料:
azure-security-keyvault-keys:适用于 C++ 的 Azure Key Vault 密钥客户端库 (windows.net)