Субъект-служба получает несанкционированный доступ при выполнении Get-AzureKeyVaultSecret

Так что это странно. Я создал KeyVault. Я добавил субъект-службу в политику доступа этого KV, предоставив ему все разрешения.

Я запускаю свой выпуск инфраструктуры из VSTS. В нем есть шаг, на котором выполняется командлет Get-AzureKeyVaultSecret для получения секрета из KV. На этом шаге настроено подключение субъекта-службы, и оно работает.

Я запускал это вчера, и это работало нормально. Мне нужно было снова запустить инфраструктуру, так как я внес изменения в шаблон ARM. Но когда он добрался до части Get-AzureKeyVaultSecret, это не удалось, и я получил эту ошибку:

Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: операция вернула недопустимый код состояния «Не авторизовано»

Это не имеет никакого смысла. Этот точно такой же субъект-служба делал это раньше. Ничего не изменилось. Приложение до сих пор находится в политике доступа КВ. Соединение с VSTS все еще работает.

Что происходит?


person Edward Rixon    schedule 23.11.2017    source источник


Ответы (2)


Вы используете Azure AD? Вы можете получить приложение примерно так:

$application = Get-AzureRmADApplication | ? { $_.DisplayName -match "xxx" }
Get-AzureRmADServicePrincipal | ? { $_.DisplayName -match "xxx" }
Get-AzureRmADAppCredential -ApplicationId $application.ApplicationId

Это должно определить, правильно ли настроено приложение, не истек ли срок действия учетных данных принципала и т. д.

Если это выглядит хорошо, вам нужно проверить, что разрешения на хранилище ключей назначены ObjectId принципала (а не приложения).

Если это также верно, то проблема может заключаться в том, что код не работает с учетными данными, которые, по вашему мнению, есть. Вы можете попробовать включить ведение журнала для хранилища ключей (в разделе «Журналы диагностики» на портале Azure), что должно дать вам некоторую информацию о том, что происходит.

person Daniel Morritt    schedule 23.11.2017

Как сказал Дейнел, вы должны проверить правильность идентификатора объекта вашего пользователя. Это похоже на этот вопрос о SO.

Вы можете найти идентификатор объекта на Enterprise applications - All applications, а не на App registrations.

введите здесь описание изображения

Вы также можете получить идентификатор объекта с помощью Power Shell.

Get-AzureADServicePrincipal
person Shui shengbao    schedule 24.11.2017
comment
Привет, у тебя работает? Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь. - person Shui shengbao; 06.12.2017