使用Azure KeyVault我按照本指南设置了ResourceGroup,KeyVault和Key:
https://azure.microsoft.com/en-gb/documentation/articles/key-vault-get-started/
我在Active Directory中设置了应用程序客户端。但是当我尝试使用时:
Set-AzureKeyVaultAccessPolicy
授予服务主体帐户的权限时出现以下错误:
“无法在租户' tenantId '中找到Active Directory对象' clientId '。请确保您授权的应用服务主体的用户已在当前订阅的Azure Active目录。“
clientId是正确的,因为它是从门户网站中的应用程序配置页面复制的。租户ID是当前订阅的租户ID ..但不是活动目录。
问题似乎是Active Directory的租户ID与我正在使用的订阅的租户ID不同。如何更改Azure门户中Active Directory的租户ID以匹配订阅租户ID?
答案 0 :(得分:3)
租户ID是指Azure AD目录的唯一标识符。每个Azure订阅都与目录(或"租户")相关联。
听起来您已经在与您创建密钥保管库的Azure订阅相关联的目录的不同目录中创建了该应用程序。
注册应用程序时,当您转到" Active Directory"在Azure管理门户的一部分中,请确保选择与您订阅的目录(创建Azure密钥库的订阅)相关联的目录。
答案 1 :(得分:2)
1)-ServicePrincipalName参数不应该(如链接中的示例所示)是客户端ID(Guid),而是AD应用标识符Uri(您可以在AD应用的属性页面上找到它)
2)如果您未使用门户创建AD应用程序,但是已从Powershell Azure Resource Manager脚本创建AD应用程序,则尚未为您的AD应用程序创建服务主体。在运行Set-AzureRmKeyVaultAccessPolicy之前,必须使用New-AzureRmADServicePrincipal cmdlet执行此操作。
总的来说,你应该
$app = New-AzureRmADApplication -DisplayName "Test" -HomePage "http://myapp.contoso.com" -IdentifierUris "http://myapp.contoso.com" -Password "password"
New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
Set-AzureRmKeyVaultAccessPolicy -VaultName "vaultname" -ServicePrincipalName "http://myapp.contoso.com" -PermissionsToSecrets Get
上找到对此进行重新讨论的讨论