如何在不存储凭据的情况下连接到 KeyVault?
How can I connect to a KeyVault without storing credentials?
我的 Web 应用程序有许多安全配置元素存储在 KeyVault 中。为了连接到它,我们有一些使用应用程序 ID 和密钥的代码,因为它们允许访问 Key Vault,所以它们是安全凭证。
我可以使用应用程序的身份作为凭据以某种集成安全方式连接到 KeyVault 吗?或者是否有其他方法来保护这些凭据?
我研究过使用加密来保护配置元素,但是还有另一个资产(密钥)必须维护、保护和部署。这比纯文本配置要好,但我正在尝试找出最佳解决方案。
如果您的应用程序 运行 在 Web 应用程序中,Managed Service Identity 会为您的应用程序提供一个身份,您可以使用该身份使用 AAD 访问 Key Vault 和其他资源。
如果您想使用 Azure Active Directory 从 Web 应用程序访问 Key Vault,您可以执行以下操作
- 转到您的 Web 应用程序
转到托管服务标识并向 Azure Active Directory 注册 Web 应用程序(单击 On
按钮,然后单击 Save
),这将创建托管服务标识.
现在转到密钥库并打开 Access policies
选项卡
- 点击新增
- Select
Secret Management
从模板配置
在 Select 主体选项 select 中,托管服务身份是
为您的网络应用程序创建(应命名为您的应用程序)
现在转到密钥权限,至少 select Get
,才能访问
您的密钥(秘密和证书的相同过程)。
完成所有这些步骤后,您可以转到您的网络应用程序代码并获取,例如,如下所示的秘密:
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = await keyVaultClient.GetSecretAsync("https://keyvaultname.vault.azure.net/secrets/secret").ConfigureAwait(false);
您将需要为您的应用程序安装 Microsoft.Azure.Services.AppAuthentication
和 Microsoft.Azure.KeyVault
NuGet 包。
我的 Web 应用程序有许多安全配置元素存储在 KeyVault 中。为了连接到它,我们有一些使用应用程序 ID 和密钥的代码,因为它们允许访问 Key Vault,所以它们是安全凭证。
我可以使用应用程序的身份作为凭据以某种集成安全方式连接到 KeyVault 吗?或者是否有其他方法来保护这些凭据?
我研究过使用加密来保护配置元素,但是还有另一个资产(密钥)必须维护、保护和部署。这比纯文本配置要好,但我正在尝试找出最佳解决方案。
如果您的应用程序 运行 在 Web 应用程序中,Managed Service Identity 会为您的应用程序提供一个身份,您可以使用该身份使用 AAD 访问 Key Vault 和其他资源。
如果您想使用 Azure Active Directory 从 Web 应用程序访问 Key Vault,您可以执行以下操作
- 转到您的 Web 应用程序
转到托管服务标识并向 Azure Active Directory 注册 Web 应用程序(单击
On
按钮,然后单击Save
),这将创建托管服务标识.现在转到密钥库并打开
Access policies
选项卡- 点击新增
- Select
Secret Management
从模板配置 在 Select 主体选项 select 中,托管服务身份是 为您的网络应用程序创建(应命名为您的应用程序)
现在转到密钥权限,至少 select
Get
,才能访问 您的密钥(秘密和证书的相同过程)。
完成所有这些步骤后,您可以转到您的网络应用程序代码并获取,例如,如下所示的秘密:
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = await keyVaultClient.GetSecretAsync("https://keyvaultname.vault.azure.net/secrets/secret").ConfigureAwait(false);
您将需要为您的应用程序安装 Microsoft.Azure.Services.AppAuthentication
和 Microsoft.Azure.KeyVault
NuGet 包。