Как получить токен доступа пользователя keyvault из скрипта powershell в интерактивном режиме без модуля az cli или pwsh az - PullRequest
0 голосов
/ 11 ноября 2019

Я автоматизирую процессы для определенных коллег. В одном случае использования должен быть выполнен сценарий ps1, который получает необходимые секреты от azure kezvault.

Это работает очень хорошо, если на ПК установлен модуль powershell az или az cli, потому что пользовательский журналв требуется только изначально. Это дело моей машины.

Но на компьютере моих коллег установка модуля az cli или az powershell может быть недоступна в качестве опции.

Как лучше всего их аутентифицировать (для получения токена доступа к keyvault)) без необходимости вручную вводить учетные данные во время выполнения?

Приветствия

1 Ответ

0 голосов
/ 11 ноября 2019

Простейший подход к получению секрета хранилища ключей заключается в использовании rest api при проверке подлинности субъекта службы.

Вот шаги для достижения того же:

Вот подробная статья для достижения этой цели, котораяВы можете найти здесь:

https://medium.com/@anoopt/accessing-azure-key-vault-secret-through-azure-key-vault-rest-api-using-an-azure-ad-app-4d837fed747

https://github.com/anoopt/GetKeyVaultData

Для получения токена Azure AD с помощью powershell вы можете просто сослаться на этот код:

$tenantId = "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX" 
$clientId = "XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX" 
$clientSecret = "MYCLENTSECRETHERE"

$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tenantId 
$resourceURL = "https://management.core.windows.net/";

$Body = @{
        'resource'= $resourceURL
        'client_id' = $clientId
        'grant_type' = 'client_credentials'
        'client_secret' = $clientSecret
}

$params = @{
    ContentType = 'application/x-www-form-urlencoded'
    Headers = @{'accept'='application/json'}
    Body = $Body
    Method = 'Post'
    URI = $TokenEndpoint
}

$token = Invoke-RestMethod @params

Write-Output $token.access_token

https://social.msdn.microsoft.com/Forums/en-US/f98e029a-8c3e-417b-830b-9157bcbecc1e/getting-access-tokenjwt-token-for-azure-ad-using-powershell?forum=WindowsAzureAD

Надеюсь, это поможет.

...