将映像从容器注册表拉取到另一个 Microsoft Entra 租户中的 AKS 群集

如果一个Microsoft Entra 租户中有一个 Azure Kubernetes 服务(AKS)群集,并且另一个租户中有一个 Azure 容器注册表,则可以配置跨租户身份验证,使 AKS 群集能够从容器注册表拉取映像。 本文逐步讲解如何使用 AKS 服务主体凭据从容器注册表中拉取以启用跨租户身份验证的步骤。

在本文中,我们将包含 AKS 群集的租户称为 租户 A,将包含 Azure 容器注册表的租户称为 租户 B

启用跨租户身份验证的高级步骤包括:

  1. 在租户 A 中创建一个新的多租户应用(服务主体)。

  2. 在租户 B 中预配应用。

  3. 将服务主体配置为从租户 B 的注册表中拉取数据。

  4. 更新 租户 A 中的 AKS 群集,以使用新的服务主体进行身份验证。

    注意

    当群集和容器注册表位于不同的租户中时,无法使用 AKS 托管标识附加注册表并进行身份验证。

先决条件

AKS 群集必须在租户 A 中使用服务主体身份验证进行配置。

至少需要 AKS 群集订阅的 参与者 角色。 还需要容器注册表订阅中基于角色的访问控制管理员和容器注册表参与者和数据访问配置管理员角色(或具有同等或更高访问权限的角色)。

创建多租户 Microsoft Entra 应用程序

  1. 登录到租户 A 中的 Azure 门户

  2. 搜索并选择 Microsoft Entra ID

  3. 在服务菜单的“管理”下,选择“应用注册”

  4. 选择 “+ 新建注册”,然后完成以下步骤:

    1. 输入应用程序的名称。
    2. 在“支持的帐户类型”中,选择“任何组织目录中的帐户”。
    3. 重定向 URI 中,选择 “Web for Platform ”,然后输入 https://www.microsoft.com
    4. 选择“注册”。
  5. 在“概述”页上,记下应用程序(客户端)ID 。 稍后需要此 ID。

    服务主体应用程序 ID

  6. 在服务菜单中的“ 管理”下,选择“ 证书和机密”。

  7. “客户端机密 ”部分中,选择“ + 新建客户端密码”。

  8. 输入“密码”等说明,然后选择“添加”。

  9. 在“客户端机密”中,记下客户端机密的值。 你将使用此值更新 AKS 群集的服务主体。

在 ACR 租户中预配服务主体

  1. 编辑以下链接,其中包含 租户 B 的租户 ID 和多租户应用的应用程序(客户端)ID。

    https://login.chinacloudapi.cn/<Tenant B ID>/oauth2/authorize?client_id=<Multitenant application ID>&response_type=code&redirect_uri=<redirect url>
    
  2. 使用 租户 B 中的管理员帐户打开编辑的链接。

  3. 代表组织选择同意,然后选择“接受”。

将服务主体配置为从注册表中提取

租户 B 中,将正确的角色分配给服务主体,范围限定为目标容器注册表:

  • 对于 已启用 ABAC 的注册表,请分配 Container Registry Repository Reader
  • 对于非 ABAC 注册表,请分配 AcrPull

可以使用 Azure 门户Azure CLI 或其他工具来分配此角色。

使用 Microsoft Entra 应用程序机密更新 AKS 群集

使用多租户应用的应用程序(客户端)ID 和客户端密码 更新 AKS 服务主体凭据

更新服务主体可能需要几分钟才能完成。 更新完成后, 租户 A 中的 AKS 群集可以从 租户 B 中的 Azure 容器注册表拉取映像。