Я экспериментирую с различными функциями Azure и сейчас хочу получить секрет из KeyVault.
Сразу к делу:
Я использую this пакет nuget для взаимодействия с моими azure ресурсами.
Я разработал простое приложение консоли. NET Core и запустил его локально.
У меня есть ресурс KeyVault с одним секретом определено, которое является активным и не истекшим.
Я зарегистрировал приложение в AAD, поэтому оно было отправлено локально. NET Базовое консольное приложение имеет идентификатор в AAD.
Чем я создал «секрет клиента» в этом зарегистрированном приложении в AAD, чтобы использовать его для аутентификации себя как приложения.
После этого я добавил политику доступа в свой ресурс KeyVault, чтобы разрешить операцию GET для секретов для этого зарегистрированного приложения:
Затем я разработал небольшой фрагмент кода, который должен получить желаемый секрет:
public class AzureAuthentication
{
public async Task<string> GetAdminPasswordFromKeyVault()
{
const string clientId = "--my-client-id--";
const string tenantId = "--my-tenant-id--";
const string clientSecret = "--my-client-secret--";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var client = new SecretClient(new Uri("https://mykeyvaultresource.vault.azure.net"), credentials);
var secret = await client.GetSecretAsync("admincreds");
return secret.Value.Value;
}
}
Однако, когда я пытаюсь это сделать Я получаю сообщение об ошибке AccessDenied:
Я упустил что-то до боли очевидное? Или существует некоторая задержка (> 30 минут на данный момент), для которой применяются изменения с экрана политик доступа в ресурсе KeyVault?