Powershell 如何将非默认目录中的客户端授权给KeyVault

Powershell 如何将非默认目录中的客户端授权给KeyVault,powershell,azure,azure-active-directory,azure-keyvault,Powershell,Azure,Azure Active Directory,Azure Keyvault,我在我的Azure订阅中创建了一个KeyVault,在我的一个Azure广告目录中创建了一个客户端应用程序。但是,客户端应用程序未在订阅的默认目录中注册 当我运行以下PowerShell cmdlet时,它尝试在订阅的默认目录中查找服务主体,但未能找到它 PS > Set-AzureKeyVaultAccessPolicy -VaultName <vaultname> -ServicePrincipalName <principal guid> -P

我在我的Azure订阅中创建了一个KeyVault,在我的一个Azure广告目录中创建了一个客户端应用程序。但是,客户端应用程序未在订阅的默认目录中注册

当我运行以下PowerShell cmdlet时,它尝试在订阅的默认目录中查找服务主体,但未能找到它

PS > Set-AzureKeyVaultAccessPolicy -VaultName <vaultname> 
       -ServicePrincipalName <principal guid> -PermissionsToSecrets Get
PS>设置AzureKeyVaultAccessPolicy-Vault名称
-ServicePrincipalName-权限获取机密
我在管理门户中找到了如何更改订阅的默认目录的描述,但想知道如何使用PowerShell执行相同的操作

“”cmdlet似乎不支持更改默认目录。
“”也不支持参数来指示它应该在哪个目录中查找。

密钥库只能授权在与Azure订阅关联的目录中注册的应用程序(客户端),并且是唯一的方式(当前)更改与订阅关联的“主”目录是通过Azure管理门户进行的。

我认为这是设计的行为,无法想象它会如何/为什么改变

Azure订阅已附加Azure Active Directory,这是它在有人尝试访问资源时用于进行身份验证的目录

虽然您可以创建对其他活动目录的信任,但创建新的AAD不会自动使该域受Azure信任

密钥库的设计目的是只有经过身份验证的用户才能访问,它的设计目的是为这些用户提供安全的数据。由于您创建的多个目录之间没有身份验证机制,因此密钥库没有确定这些目录属于谁的机制


密钥保管库需要通过连接到其运行的订阅的Active Directory(无论是直接通过该目录,还是通过其信任的另一个域)来解析服务原则。其他任何东西都会产生额外的攻击向量,并大大削弱产品

这是相当有限的,特别是在开发场景中,有多个目录并不少见。你知道是否有计划来解决这个问题吗?@MvdD我不知道有任何计划被广泛分享。获取团队反馈的最佳方式是使用Azure反馈论坛。这已经有一个项目了,所以只需增加投票:有趣的是,如果您成功地在默认目录中设置了access,然后使用相同的clientID和secret更改默认目录加密和解密,那么在我的测试中,secret仍然有效。显然,这只是授予默认目录访问权限的步骤。虽然我理解你的观点(这是有效的),但有很多情况(想想有企业协议的大公司)这将为向需要单独访问其LOB应用程序密钥库的内部实体提供订阅提供有效的业务案例。需要一个目录来容纳数百个潜在的LOB应用程序,这给EA团队带来了一场管理和维护的噩梦。当然,微软可以想出一种安全机制,允许来自“关联”AAD的应用程序根据密钥库进行身份验证。