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

Jef*_*eff 5 azure azure-active-directory azure-keyvault

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

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

 New-AzureRmKeyVault -VaultName $vaultName
Run Code Online (Sandbox Code Playgroud)

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

 Get-AzureKeyVaultKey -VaultName $vaultName 
Run Code Online (Sandbox Code Playgroud)

这样可行.

如果我添加对当前用户所属的组的访问权限

$group = (Get-AzureRmADGroup -SearchString 'All Developers')[0].Id
Set-AzureRmKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $resourceGroupName -ObjectId $group -PermissionsToKeys all -PermissionsToSecrets all
Run Code Online (Sandbox Code Playgroud)

并删除直接访问

Remove-AzureRmKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $resourceGroupName -UserPrincipalName $upn
Run Code Online (Sandbox Code Playgroud)

列表操作现在失败

Get-AzureRmKeyVault -VaultName $vaultName -ResourceGroupName $resourceGroupName

Get-AzureKeyVaultKey : Operation "list" is not allowed
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得团体许可?

Jef*_*eff 5

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

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


Mic*_*l B 4

向组添加访问策略的原因是不支持它。如果你看一下帮助,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
Run Code Online (Sandbox Code Playgroud)

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

这反映在发布到REST API时的源代码参数Set-AzureRmKeyVaultAccessPolicy以及 REST API 链的更上层。

    https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{vault-name}?api-version={api-version}
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 你的答案实际上是不正确的。我今天发现它适用于许可组对象中的用户。不适用于这些组中的服务主体。 (2认同)
  • 现在可以将组分配到 Key Vault,但文档尚未更新。:) (2认同)