如何将角色分配给来自不同订阅的Azure服务主体?

Gan*_*Pol 5 azure azure-active-directory

目前的问题陈述
,我正在借助 azure terraform 在不同订阅中创建/修改 azure 资源。

错误

Principal <appid> does not exist in the directory {destination-tenant-id-for which contribution role required}
Run Code Online (Sandbox Code Playgroud)

考虑以下场景。
我们希望在一个订阅中创建 Azure AKS 集群,并在同一执行中,我们希望更新另一订阅中的 DNS 定义。如果我们在同一个订阅中同时拥有 ie DNS 区域和 aks 集群,则此过程运行良好,但如果这两个资源位于不同的订阅中,则此过程将不起作用。

采取的步骤
创建服务主体而不分配

az ad sp create-for-rbac -n sp-terraform-001 --skip-assignment
Run Code Online (Sandbox Code Playgroud)

为当前订阅的当前 SP 分配贡献者角色

az role assignment create --assignee <appid>  --role Contributor --scope /subscriptions/<sub-id>
Run Code Online (Sandbox Code Playgroud)

*为不同订阅的当前 sp 分配贡献者角色。它将失败并显示 *

az role assignment create --assignee <appid>  --role Contributor --scope /subscriptions/<diff-sub-id>/<resource-group>....
Run Code Online (Sandbox Code Playgroud)

请让我知道访问其他订阅中的资源的正确步骤

Sam*_*gan 6

您可以将服务主体的权限分配给多个订阅,这不是问题,因为 SP 位于订阅之外,它位于 Azure AD 中。

但是,您无法将对服务主体所在的不同 Azure AD 租户中的资源的权限分配给服务主体,这听起来像是您正在尝试在此处执行的操作。