Я хочу создать хранилище ключей, в котором будет храниться сертификат TLS. Это хранилище ключей должно быть доступно из задач конвейера Azure, которые будут извлекать указанный сертификат и связывать его со своими приложениями. Microsoft упоминает:
По умолчанию поставщик ресурсов (RP) Microsoft.Azure.WebSites не имеет доступа к хранилищу ключей, указанному в шаблоне, поэтому вам необходимо авторизовать его, выполнив следующие команды PowerShell перед развертыванием шаблона:
Login-AzureRmAccount Set-AzureRmContext -SubscriptionId AZURE_SUBSCRIPTION_ID Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get
Это работает для моего хранилища ключей, когда я делаю это вручную. Однако я хочу автоматизировать это как часть моего основного конвейера. Я пробовал определить эту задачу:
- task: AzurePowerShell@5
displayName: 'Set key vault policy'
inputs:
azureSubscription: …
azurePowerShellVersion: 'LatestVersion'
ScriptType: 'InlineScript'
Inline: |
Set-AzKeyVaultAccessPolicy -VaultName … -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get
Но не получается:
##[error]Operation returned an invalid status code 'Forbidden'
Я также заметил, что этот принципал службы приложений Microsoft Azure даже недоступен для моей задачи; следующее печатает пробел:
$azureAppServicePrincipal = Get-AzADServicePrincipal -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd
Write-Output "azureAppServicePrincipalId = $($azureAppServicePrincipal.Id)"
Есть ли способ сделать этот принципал службы доступным для моего конвейера?
Set key vault policy
, не отдавая-ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd
? - person Krzysztof Madej   schedule 14.10.2020Set-AzKeyVaultAccessPolicy -VaultName … -ServicePrincipalName (Get-AzContext).Account.Id -PermissionsToCertificates get
- person 14207973   schedule 14.10.2020