Azure密钥保管库访问策略不适用于组

时间:2016-02-23 21:56:49

标签: azure azure-keyvault azure-active-directory

通过Azure Key Vault上的组访问策略似乎不起作用。

如果我创建一个新的密钥库

 New-AzureRmKeyVault -VaultName $vaultName

并检查键(当前没有任何键)

 Get-AzureKeyVaultKey -VaultName $vaultName 

有效。

如果我添加对当前用户是

成员的组的访问权限
$group = (Get-AzureRmADGroup -SearchString 'All Developers')[0].Id
Set-AzureRmKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $resourceGroupName -ObjectId $group -PermissionsToKeys all -PermissionsToSecrets all

并删除直接访问

Remove-AzureRmKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $resourceGroupName -UserPrincipalName $upn

列表操作现在失败

Get-AzureRmKeyVault -VaultName $vaultName -ResourceGroupName $resourceGroupName

Get-AzureKeyVaultKey : Operation "list" is not allowed

我如何获得团体许可?

3 个答案:

答案 0 :(得分:2)

我今天发现它适用于权限组对象中的用户。不适用于这些组中的服务主体。

换句话说,如果我使用客户端ID和客户端密钥进行身份验证,则关联的服务主体必须在密钥保管库上直接设置访问策略。如果我允许安全组,则该组中的用户实际上可以访问密钥保管库。我想这与JWT如何在用户中包含安全组而不是服务主体有关...

答案 1 :(得分:1)

向组添加访问策略的原因是它不受支持。如果您查看Set-AzureRmKeyVaultAccessPolicy的帮助,就会有ObjectId

的帮助
-ObjectId <Guid>
    Specifies the object ID of the user or service principal in Azure Active Directory for which to grant permissions.

    Required?                    true
    Position?                    named
    Default value                none
    Accept pipeline input?       true(ByPropertyName)
    Accept wildcard characters?  false

如您所见,ObjectId仅支持服务主体或用户。

这反映在Set-AzureRmKeyVaultAccessPolicy的{​​{3}}的参数中,并在发布到

source code的链上方进一步向上
    https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{vault-name}?api-version={api-version}

有效负载包含objectId参数,该参数定义为

  

指定Vault的Azure Active Directory租户中的用户或服务主体的对象ID。必须将ID指定为GUID。

我认为将来会在某个时候添加此功能,但目前还不可能。

答案 2 :(得分:0)

当应用添加到 Azure Active Directory 组之前向 Key Vault 发出请求时,也可能发生此 Access Denied / 403 Forbidden 错误。

也许这与缓存应用服务实例上的服务主体信息有关?我找不到这方面的文档。

解决方案:重启应用服务。