我可以邀请用户加入租户。在用户确认邀请并在订阅中分配了角色后,他/她就可以与其他租户的订阅一起查看此订阅。
我可以使用az account list
是否可以对Azure应用程序执行相同的操作?以某种方式邀请它并授予其访问其他租户中的订阅的权限?或者,通常,应用程序如何才能访问不同租户中的资源(不使用Lighthouse)?
答案 0 :(得分:2)
应用程序的安全主体是ServicePrincipal对象(很像用户的安全主体是User对象)。如果将某个应用程序配置为多租户应用程序,则可以在任何其他租户中创建该应用程序的服务主体。一旦创建了该服务主体,就可以授予其角色分配。
使用Azure CLI的示例:
登录到租户A。
$ az login --tenant "{tenant-A-id-or-domain}"
在租户A中,将应用程序注册(应用程序对象)配置为多租户。 (这里我们正在创建一个新的,但是您也可以使用az ad app update
更新一个现有的。)
$ az ad app create --display-name "App in Tenant A" \
--available-to-other-tenants true \
--query "appId"
"74dde9de-56e2-4750-a7cc-5da5f021b897"
登录到租户B。
$ az login --tenant "{tenant-B-id-or-domain}"
为租户B中的应用程序(已在租户A中注册)创建服务主体。请注意,用于id
的值是在步骤2中创建的应用程序注册的appId
$ az ad sp create --id "74dde9de-56e2-4750-a7cc-5da5f021b897" \
--query "{appId:appId,displayName:displayName}"
{
"appId": "4c3e3be1-b735-41b1-a842-f095b9a45849",
"displayName": "App in Tenant A"
}
在这一点上,您可以向服务主体授予访问权限。例如,您可以为其分配Azure订阅中资源的角色。
现在,在向租户B进行身份验证时,您可以使用在应用程序注册中配置的凭据(即证书或客户机密)。
按照我们在此处手动创建的服务主体对象只是一种方法。另一种方法(当应用程序具有某种面向用户的界面(例如,Web应用程序)时特别有用)是使租户B中的用户登录并同意该应用程序。在至少一个用户同意该应用程序之后,该应用程序的服务主体对象将出现在租户B中,并且可以被授予角色分配。