问题
I have created a Key Vault in Azure DevOps using ARM and I now want to write a secret to it within the same pipeline.
I created an Azure PowerShell task with the following inline PowerShell:
$secretvalue = ConvertTo-SecureString $(Secret) -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName $(VaultName) -Name $(SecretName) -SecretValue (ConvertTo-SecureString $(Secret) -AsPlainText -Force)
The key vault gets created fine, but I get the following error when trying to write the secret:
[error]Access denied
If I run Set-AzureKeyVaultSecret
on my local machine it works fine.
EDIT
Here are some screenshots of what I've done. In Azure DevOps I created a Service Connection and verified it:
Here's what my Azure PowerShell task looks like to write the secret to the vault:
Key Vault permissions:
Do I need a separate Service Principal or do I need to create an App Registration?
回答1:
Pretty sure you gave rights to the wrong entity. To find the proper entity do this.
Click Manage
link in the Azure Subscription
field, it will navigate you to a new blade. Click Manage Service Principal
there. It will take you to the application page in Azure AD. After that you can copy name under Managed application in local directory
field and use that name to grant it Key Vault permissions.
回答2:
Check your permissions for the service connection to ARM and permissions in your vault. Steps to check are here: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-key-vault?view=vsts
来源:https://stackoverflow.com/questions/52910591/how-to-write-a-secret-to-azure-key-vault-from-azure-devops-pipeline