如何从 C++ 应用程序访问 Key Vault

问题描述 投票:0回答:1

您能否澄清一下如何从用 C++ 编写的外部应用程序(未部署在 Azure 上)安全地访问 Key Vault?

我已经阅读了有关此主题的几个文档页面,例如这个
https://learn.microsoft.com/en-us/azure/key-vault/general/developers-guide
似乎建议的方法是创建应用程序注册和服务主体(并为该身份提供适当的角色)来验证对密钥库 REST API 的调用。

如果这是正确的,那么现在主要的疑问是:我应该将主体 ID 和密钥存储在哪里才能确保安全?
谢谢你的帮助

c++ azure-keyvault microsoft-entra-id
1个回答
0
投票

要从 C++ 应用程序访问 Key Vault,请检查以下内容:

创建Azure AD 应用程序并授予 Azure Key Vault API 权限:

enter image description here

在 Azure Key Vault 中设置应用程序的访问策略,并根据您的要求选择权限:

enter image description here

例如,我通过 Postman 生成了访问令牌:

enter image description here

现在使用访问令牌访问 Key Vault:

GET vaultBaseUrl/secrets/secret-name/secret-version?api-version=7.4

enter image description here

如果这是正确的,那么现在主要的疑问是:我应该将主体 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)

c# - 使用未部署在 Azure 中的应用程序访问 Azure Key Vault 存储的机密 - 堆栈内存溢出

© www.soinside.com 2019 - 2024. All rights reserved.