Azure AD - 服务主体能否在 Azure 订阅中为自己分配 RBAC 角色?

Azure AD - Can a Service Principal assign itself RBAC role in an Azure Subscription?

我有一个受 Azure AD 保护的 Web API。我已经为 Web API 创建了一个应用程序注册,它只允许来自该 Azure AD 的用户访问 API(即单租户)。此过程还在该租户中创建了一个服务主体。

我想知道的是,此服务主体是否可以在信任此 Azure AD 的 Azure 订阅中自行分配 RBAC 角色(任何 RBAC 角色)?或者这是用户启动的操作,其中具有适当权限的用户(如 OwnerUser Access Administrator)必须向该服务主体分配适当的角色?

根据我的理解,我认为是后者(即另一个用户必须执行此操作)。不过看起来应该是可以的。

我这么说的原因是当我创建一个新的 Azure 订阅时,我会自动在该 Azure 订阅中分配一个 Owner 角色(我是我的 Azure AD 中的全局管理员)。我想知道这是如何实现的。

如果确实可行,那么应该为服务主体分配什么 Azure AD 角色?

任何对此的见解将不胜感激。

当然可以,但服务主体还需要Microsoft.Authorization/roleAssignments/write权限,例如OwnerUser Access Administrator 为自己分配另一个 RBAC 角色。

如果你的意思是服务主体当前没有RBAC角色,那么它不能,即使它是租户中的全局管理员,它也不能直接将RBAC角色分配给自己.

此外,用户帐户不同于服务主体,如果用户是租户中的全局管理员,他可以简单地为自己Elevate access to manage all Azure subscriptions and management groups(这只适用于用户,而不是服务主体) ,那么他将获得 root 范围内的 User Access Administrator 角色,然后他可以为自己分配任何 RBAC 角色。

如果您的服务主体是全局管理员并且想要将 RBAC 角色分配给自己,您可能需要先将全局管理员角色分配给另一个用户帐户,然后提升访问权限以管理所有 Azure 订阅,然后使用该用户将 RBAC 角色分配给服务主体的帐户。

您是正确的,委托人只有在已经有权授予自己权限时才能授予自己权限。因此,全新的 MSI 委托人不会成为任何组的成员或分配任何 RBAC 角色,因此无法授予自己额外的权利。

在 Azure 订阅的情况下,创建订阅的主体要么有权在现有租户中这样做,要么正在创建新的租户和订阅,并且权限由系统授予用户作为creator/owner.

自动授予新 MSI 权限的一种可能方法是使用 Azure Functions,调用 Microsoft Graph 来查询符合搜索条件的新 MSI,然后授予 MSI 主体所需的权限。该功能必须分配一个 MSI,这需要获得在所需范围内向新 MSI 授予所需权限的权限。