7

通过 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

我怎样才能按组许可?

4

3 回答 3

3

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

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

于 2016-02-25T13:15:48.003 回答
3

向组添加访问策略的原因是它不受支持。如果您查看帮助,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 仅支持服务主体或用户。

这反映在源代码的参数中,并在发布到REST APISet-AzureRmKeyVaultAccessPolicy时进一步向上链

    https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{vault-name}?api-version={api-version}

有效载荷包含objectId定义为的参数

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

我想这个功能会在未来的某个时候被添加,但目前这是不可能的。

于 2016-02-24T01:48:18.920 回答
0

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

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

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

于 2021-03-09T07:20:05.183 回答