将密钥和机密存储在Azure密钥库中

时间:2020-01-23 03:09:52

标签: azure-keyvault

由于我们的VM位于Azure云上,因此我们希望将AWS密钥和机密存储在Azure密钥保管库中。

我们想要的只是将AWS秘密和密钥保留在Azure密钥库中,而不是在环境变量中进行设置。

然后,我们想通过代码中的API访问它们。

我对天蓝色钥匙库非常陌生,想知道是否可行?一个简单的示例/参考会很有帮助。

2 个答案:

答案 0 :(得分:2)

可能的是,只需将它们存储在天蓝色的密钥库中,然后通过VM MSI(VM系统分配的托管身份)访问它们。

参考-Use a Windows VM system-assigned managed identity to access Azure Key Vault

完成前提条件并授予对MSI的访问权限,在VM中,您可以获取令牌并使用令牌来获取机密。

请参见下面的powershell示例,您还可以使用其他语言,逻辑相同,这取决于您的要求。

$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"}     
$content = $response.Content | ConvertFrom-Json     
$KeyVaultToken = $content.access_token     
(Invoke-WebRequest -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}).content 

响应:

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

更新

您需要将VM MSI添加到密钥库的Access Policies

enter image description here

答案 1 :(得分:1)

Azure KeyVault具有客户端库,可用于从应用程序与KeyVault进行交互。

例如,这些客户端库可与.NETJavaPythonTypeScript

中的KeyVault Secrets进行交互

以下是使用.NET从KeyVault检索机密的方法:

// Environment variable with the Key Vault endpoint.
string keyVaultUrl = Environment.GetEnvironmentVariable("AZURE_KEYVAULT_URL");

// create the client to interact with the service
var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential());

KeyVaultSecret secretWithValue = await client.GetSecretAsync("mySecret");
Console.WriteLine(secretWithValut.Value);

有关更多详细信息,请查看.NET存储库上的samples页面。