Храните ключ и секрет в Azure хранилище ключей - PullRequest
1 голос
/ 23 января 2020

Мы хотим хранить наш AWS ключ и секрет в azure хранилище ключей, потому что наши виртуальные машины находятся в облаке Azure.

Все, что мы хотим, - это хранить AWS в секрете и ключе в хранилище ключей Azure вместо установки их в переменной окружения.

Затем мы хотим получить к ним доступ через API в нашем коде.

Я очень плохо знаком с хранилищем ключей azure и хотел знать, возможно ли это или нет? Простой пример / справка очень помог бы.

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Возможно, просто сохраните их в azure keyvault и получите к ним доступ через VM MSI (назначенный системой виртуальный идентификатор, назначенный системой).

Ссылка - Используйте систему Windows VM назначенный управляемый идентификатор для доступа к Azure хранилищу ключей

Выполнены предварительные условия и предоставлен доступ для MSI, в ВМ вы можете получить токен и использовать токен для получения секрета.

См. Образец powershell ниже, вы также можете использовать другие языки, логика c такая же, зависит от ваших требований.

$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"}} 

Обновление :

Вам необходимо добавить MSI виртуальной машины к Access Policies keyvault.

enter image description here

1 голос
/ 05 февраля 2020

Azure В KeyVault есть клиентские библиотеки, которые вы можете использовать для взаимодействия с KeyVault из своего приложения.

Например, это клиентские библиотеки для взаимодействия с секретами KeyVault в . NET, Java, Python и TypeScript

Вот как вы можете извлечь секрет из KeyVault, используя. NET :

// 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);

Для получения дополнительной информации посетите страницу samples на репозитории. NET repo.

...