设置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" 
      ] 
      } 
     } 
} 

有什么我在这里失踪?

+0

我会争辩说,它的许可问题 – 4c74356b41

+0

检查这篇博文 - http://blog.codenova.pl/post/azure-key-vault-making-it-right – Kamo

我尝试下不同承租人访问权限授予一个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