使用应用注册在租户之间共享映像

但是,如果要在 Azure 租户外部大规模共享映像,则应创建一个应用注册以方便共享。 使用应用注册可实现更复杂的共享方案,例如:

  • 当一家公司收购另一家公司并且 Azure 基础结构分布在不同租户中时,管理共享映像。
  • Azure 合作伙伴会代表其客户管理 Azure 基础结构。 映像自定义会在合作伙伴租户中完成,但基础结构部署将在客户的租户中进行。

创建应用注册

创建一个应用程序注册,这两个租户将使用该注册来共享映像库资源。

  1. 打开 Azure 门户中的“应用注册(预览版)”
  2. 从页面顶部的菜单中选择“新建注册”。
  3. 在“名称”中,键入“myGalleryApp”。
  4. 在“支持的帐户类型”中,选择“任何组织目录中的帐户”。
  5. 在“重定向 URI”中,从“选择平台”下拉列表中选择“Web”,键入 https://www.microsoft.com,然后选择“注册”。 创建应用注册后,会打开概览页。
  6. 在概览页上,复制“应用程序(客户端) ID”并保存供以后使用。
  7. 选择证书和机密,然后选择新建客户端密码
  8. 在“说明”中,键入“跨租户共享映像库应用机密”。
  9. 在“过期”中,将默认值“6 个月(推荐)”更改为“12 个月”,然后选择“添加”。
  10. 复制机密的值并将其保存到安全位置。 离开此页后,将无法检索该值。

向应用注册授予使用共享映像库的权限。

  1. 在 Azure 门户中,选择要与其他租户共享的共享映像库。
  2. 选择“选择访问控制(标识和访问管理)”,然后在“添加角色分配”下选择“添加”。
  3. 在“角色”下,选择“读者”。
  4. 在“将访问权限分配给:”下,将此项保留为“Azure AD 用户、组或服务主体”。
  5. 在“选择成员”下键入“myGalleryApp”,当它出现在列表中时将其选中。 完成操作后,选择“查看 + 分配”。

授予租户 2 访问权限

授予租户 2 访问应用程序的权限,允许其通过浏览器请求登录。 请将“<租户 2 ID>”替换为要与其共享映像库的租户的租户 ID。 请将“<应用程序(客户端) ID>”替换为创建的应用注册的应用程序 ID。 完成替换后,将 URL 粘贴到浏览器中,并按照登录提示登录到租户 2。

https://login.chinacloudapi.cn/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F 

Azure 门户中以租户 2 身份登录,并向应用注册授予对特定资源组(需在其中创建 VM)的访问权限。

  1. 选择该资源组,然后选择“访问控制(标识和访问管理)”。 在“添加角色分配”下,选择“添加”。
  2. 在“角色”下,键入“参与者” 。
  3. 在“将访问权限分配给:”下,将此项保留为“Azure AD 用户、组或服务主体”。
  4. 在“选择成员”下键入“myGalleryApp”,然后,当它出现在列表中时将其选中。 完成操作后,选择“查看 + 分配”。

注意

需等待映像版本彻底生成并复制完毕,然后才能使用同一托管映像来创建另一映像版本。

使用 Azure CLI 创建规模集

使用租户 1 的 appID、应用密钥以及 ID 登录到租户 1 的服务主体。 可以根据需要使用 az account show --query "tenantId" 获取租户 ID。

az account clear
az login --service-principal -u '<app ID>' -p '<Secret>' --tenant '<tenant 1 ID>'
az account get-access-token 

使用租户 2 的 appID、应用密钥以及 ID 登录到租户 2 的服务主体:

az login --service-principal -u '<app ID>' -p '<Secret>' --tenant '<tenant 2 ID>'
az account get-access-token

创建规模集。 请将示例中的信息替换为你自己的。

az vmss create \
  -g myResourceGroup \
  -n myScaleSet \
  --image "/subscriptions/<Tenant 1 subscription>/resourceGroups/<Resource group>/providers/Microsoft.Compute/galleries/<Gallery>/images/<Image definition>/versions/<version>" \
  --admin-username azureuser \
  --generate-ssh-keys

后续步骤

如果遇到任何问题,可以对共享映像库进行故障排除