【问题标题】:Azure KeyVault: SPN KeyVault Access DeniedAzure KeyVault:SPN KeyVault 访问被拒绝
【发布时间】:2018-08-14 15:09:42
【问题描述】:

我在 VSTS 中使用下面的 Azure Powershell 命令。

(Get-AzureKeyVaultSecret -vaultName "debugkv" -name "CoreConfig-StorageAccount-AccessKey")

我在 VSTS 中运行它时收到 ##[error]Access denied 错误,但在本地它工作正常。

我已经在 KV 的访问策略中添加了 SPN,还具有对机密的 GET 和 SET 权限。

在故障排除方面需要帮助。

【问题讨论】:

  • 您是通过 VSTS 中的 PowerShell 还是 Azure PowerShell 运行。应该是后者。
  • Azure Powershell,实际上在 KV 中我看到两个具有相同名称的条目,我认为 PowerShell 在访问策略中注册了错误的一个,因此不知道如何选择正确的一个。

标签: azure azure-devops azure-keyvault


【解决方案1】:

要将 VSTS 链接到您需要向服务主体(在 VSTS 中构成服务端点)授予对 Key Vault 的访问权限;你已经知道了。

可能令人困惑的是,您可以根据您的用例分配应用程序和服务主体以访问密钥保管库。因此,您必须确保将正确的对象分配给访问策略。

确保分配正确对象的最佳方法是通过 Azure Powershell 进行。

运行已登录的 Azure Powershell 会话:

$spObjectId = Get-AzureRmAdServicePrincipal -SearchString <ServicePrincipalName> | Foreach-Object {$_.Id}

Set-AzureRmKeyVaultAccessPolicy -VaultName <VaultName> -ObjectId $spObjectId -PermissionsToSecrets Get,Set

如果您想查看访问策略的更多详细信息(objectid、权限等),您也可以通过 Powershell 获取这些信息:

Get-AzureRmKeyVault -VaultName <VaultName> | Foreach-Object {$_.AccessPolicies} 

【讨论】:

  • 在 RCA 之后,我发现我必须提供来自 aad 的企业应用程序对象 id 而不是应用程序注册 id,您的回答帮助我进行了故障排除。谢谢
猜你喜欢
  • 2019-11-28
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 2017-05-17
  • 2015-11-23
  • 1970-01-01
相关资源
最近更新 更多