#azure #azure-functions #access-token #azure-keyvault
#azure #azure-функции #токен доступа #azure-keyvault
Вопрос:
Я использую функцию Azure для выполнения действия, в этом действии мне нужно получить секрет из keyvault. Я использую этот код для того, чтобы получить секрет
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient((authority, resource, scope) => azureServiceTokenProvider.GetAccessTokenAsync(resource));
var secret= await keyVaultClient.GetSecretAsync($"https://{KeyVaultName}.vault.azure.net/", "SecretName");
Когда я запускаю его локально, это работает, но когда я запускаю функцию в Azure, я получаю сообщение об ошибке «Запрещено».
Как я могу получить секрет из KeyVault внутри моей функции Azure?
Спасибо!
Комментарии:
1. Для доступа к KeyVault. RTM вашему приложению требуются разрешения. joonasw.net/view /…
2. PS: Согласно документу , который вы не должны использовать
AzureServiceTokenProvider
, смотрите Это для альтернатив.
Ответ №1:
Запрещенный может указывать на то, что идентификатор, принятый функцией Azure, не имеет прав доступа к конкретному хранилищу ключей Azure.
С портала Azure или через CLI / API перейдите в соответствующий ресурс хранилища ключей Azure -> Политики доступа -> Добавить политику доступа -> Назначить идентификатор функции Azure со следующими разрешениями:
- Секретный список
- Секретное получение
Ответ №2:
Вместо того, чтобы использовать клиент KeyVault внутри вашей функции, вы можете сделать это намного проще, если вы можете использовать настройки приложений, на которые ссылается KeyVault (немного зависит, конечно, от вашего сценария, если это возможно). https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references
Затем вы можете просто использовать секрет, как и любой другой параметр, и прочитать его как переменную Env.