设置KeyVault权限的AAD应用程序在不同的租户工作在PowerShell中,但ARM模板
问题描述:
我尝试下不同承租人访问权限授予一个AAD应用程序失败,命令如下工作:设置KeyVault权限的AAD应用程序在不同的租户工作在PowerShell中,但ARM模板
Set-AzureRmKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $rg -ApplicationId $appId -objectId $appObjectId `
-PermissionsToSecrets get -PermissionsToCertificates get -BypassObjectIdValidation
但相应的ARM模板实现不:
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2015-06-01",
"name": "[parameters('KeyVaultName')]",
"properties": {
"accessPolicies": {
{
"tenantId": "current-tenant-id",
"objectId": "object-id",
"permissions": {
"secrets": [
"get"
]
}
},
{
"tenantId": "another-tenant-id", /* Raises: An invalid value was provided for 'accessPolicies' */
"objectId": "object-id",
"permissions": {
"secrets": [
"get"
]
}
}
}
有什么我在这里失踪?
答
我尝试下不同承租人访问权限授予一个AAD应用程序,命令如下工作
我注意到,您所指定的BypassObjectIdValidation参数。作为官方document提及BypassObjectIdValidation:
使您能够而无需验证该对象在Azure中的Active Directory存在指定的对象ID。如果要将密钥库的访问权授予指向另一个Azure租户的委派安全组的对象标识,请仅使用此参数。
此外,作为说明指出约Set-AzureRmKeyVaultAccessPolicy的cmdlet:
其中的关键金库所在的Azure订阅的默认目录。
您的Azure帐户有多个目录。 如果您在默认目录以外的目录中注册应用程序,则无法授权该应用程序使用密钥保管库。该应用程序必须位于默认目录中。
根据我的理解,您不能将KeyVault权限设置为不同租户中的AAD应用程序。如果指定BypassObjectIdValidation参数,则需要将objectId
设置为来自另一个Azure租户的委派安全组的对象标识。
此外,您可以利用resources.azure.com获取/更新现有KeyVault的Access policies
。
我会争辩说,它的许可问题 – 4c74356b41
检查这篇博文 - http://blog.codenova.pl/post/azure-key-vault-making-it-right – Kamo