Azure KeyVault:SPN KeyVault访问被拒绝

Azure KeyVault:SPN KeyVault访问被拒绝,azure,azure-devops,azure-keyvault,Azure,Azure Devops,Azure Keyvault,我正在VSTS中使用低于Azure Powershell的命令 (Get-AzureKeyVaultSecret -vaultName "debugkv" -name "CoreConfig-StorageAccount-AccessKey") 在VSTS中运行时,我收到了##[error]拒绝访问错误,但它运行正常 我已经在KV的访问策略中添加了SPN,还添加了获取和设置机密权限 需要故障排除方面的帮助。要将VST链接到,您需要让服务主体(构成VST中的服务端点)访问密钥库;你已经知道了 令

我正在VSTS中使用低于Azure Powershell的命令

(Get-AzureKeyVaultSecret -vaultName "debugkv" -name "CoreConfig-StorageAccount-AccessKey")
在VSTS中运行时,我收到了##[error]拒绝访问错误,但它运行正常

我已经在KV的访问策略中添加了SPN,还添加了获取和设置机密权限


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

要将VST链接到,您需要让服务主体(构成VST中的服务端点)访问密钥库;你已经知道了

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

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

正在运行已登录Azure Powershell会话:

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

Set-AzureRmKeyVaultAccessPolicy -VaultName <VaultName> -ObjectId $spObjectId -PermissionsToSecrets Get,Set
$spObjectId=Get-AzureRmAdServicePrincipal-SearchString | Foreach对象{$\uUbject.Id}
设置AzureRmKeyVaultAccessPolicy-VaultName-ObjectId$spObjectId-PermissionsToSecrets获取,设置
如果您想查看访问策略的更多详细信息(objectid、权限等),还可以通过Powershell获取这些信息:

Get-AzureRmKeyVault -VaultName <VaultName> | Foreach-Object {$_.AccessPolicies} 
Get-AzureRmKeyVault-VaultName | Foreach对象{$\u.accessPolicys}

您正在VSTS或Azure PowerShell中运行PowerShell吗。应该是后者。Azure Powershell,实际上在KV中,我看到两个条目同名,我认为Powershell在访问策略中注册了错误的条目,因此不确定如何选择正确的条目。在RCA之后,我发现我必须从aad提供企业应用程序对象id,而不是应用程序注册id,你的回答帮助我排除了故障。谢谢