azure - 无法在 Azure Devops 上运行的 powershell 脚本中访问 Azure Key Vault secret

标签 azure powershell azure-devops azure-resource-manager azure-keyvault

我有一个 powershell 脚本,它尝试使用此命令检索存储在 Azure key 保管库中的 secret 。

$password = (Get-AzureKeyVaultSecret -vaultName $vaultName -name $secretName).SecretValueText

当我在本地执行 powershell 脚本时,它工作得非常好。但是,当我尝试在 Azure Devops 上执行相同操作时,它失败并给出以下错误。

[error]Operation returned an invalid status code 'Forbidden'

我觉得这不是访问策略问题,因为我能够使用本地运行的 powershell 脚本成功地在我的保管库上执行读/写操作。

最佳答案

我很确定这是一个访问策略问题。

转到 DevOps 项目设置 - 管道 - 服务连接,然后单击“更新服务连接”(使用对话框的完整版本)。您可以在其中找到订阅 ID 和服务主体 ID。

然后您必须向此 SPN 授予显式权限:

Login-AzureRmAccount -subscription <YourSubscriptionID>
$spn= Get-AzureRmADServicePrincipal -spn <YourSPN>
Set-AzureRmKeyVaultAccessPolicy -VaultName <YourVaultName> -ObjectId $spn.Id -PermissionsToSecrets get,list;

关于azure - 无法在 Azure Devops 上运行的 powershell 脚本中访问 Azure Key Vault secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367071/

相关文章:

azure - 无法将纯文本 (JSON) 连接到 Azure 机器学习中的数据集

powershell - -ErrorAction 参数被忽略以支持 $ErrorActionPreference

azure-devops - 如何在本地将工作项从 VSTS 迁移到 TFS 2015?

python - AzureML 推理架构中出现 "list index out of range"错误

azure - Powershell:将 Get-AzTableRow 的结果传递给函数

azure - Azure 网站可以跨多个可用区扩展吗

visual-studio - 如何将手动创建的 WebJobs 发布到 Azure

html - Powershell-帮助将哈希表转换为HTML

regex - 选择字符串以仅显示返回行的特定部分

azure - 如何构建外部类库以与 Azure DevOps 中的 CI 管道中的解决方案一起使用?