应用程序管理员 AD 角色未提供正确的权限



我正在尝试将"应用程序管理员"角色应用于服务主体,以允许它在 AD 中创建其他服务主体。我本以为能够管理应用注册等的各个方面,如此处文档中的说明:https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/active-directory/users-groups-roles/directory-assign-admin-roles.md 允许我这样做,但我仍然无法以这种方式创建新的服务主体?

在查看 AD 应用注册时看起来好像已创建,但权限不足时出错

我已经通过bash和powershell尝试了几种方法,尝试先创建AD应用程序,然后从该应用程序ID创建服务主体,还尝试使用"全局管理员"角色,并且按预期工作,但是我们试图尽可能多地限制。

我尝试在 bash 中运行的命令是

az ad sp create-for-rbac -n $spn_name --skip-assignment

和电源外壳中的等效物

New-AzAdServicePrincipal -ApplicationId $appid

从仅分配了"应用程序管理员"角色的 SPN。

为 appid "http://test-spn1"创建服务主体失败。跟踪如下: {跟踪 JSON} 权限不足,无法完成操作。

若要授予应用程序创建、编辑和删除应用的所有方面(应用程序对象和 ServicePrincipal 对象,分别在门户中的"应用注册"和"企业应用"下表示)的能力,应考虑以下两个仅限应用的权限(而不是目录角色):

  • Application.ReadWrite.All- 创建应用程序和 ServicePrincipal 对象并管理任何应用程序和 ServicePrincipal 对象。
  • Application.ReadWrite.OwnedBy- 创建应用程序和 ServicePrincipal 对象(并自动设置为所有者),并管理其所有者的应用程序和服务主体对象(因为它创建了它们,或者因为它被指定为所有者)。

这些权限非常接近应用程序管理员目录角色允许用户的权限。它们可用于Azure AD Graph API(Azure CLI,Azure AD PowerShell模块(AzureAD)和Azure PowerShell模块(Az)使用的API)和Microsoft图形API(不应将其用于生产方案,因为应用程序和servicePrincipal授权仍处于测试阶段)。权限记录在此处: * https://learn.microsoft.com/graph/permissions-reference#application-resource-permissions

警告:这两个权限都是非常高的权限。通过能够管理应用程序和 ServicePrincipal 对象,他们可以为这些对象(keyCredentialspasswordCredentials)添加凭据,并在这样做时行使已授予这些其他应用程序的任何访问权限。如果授予Application.ReadWrite.All的应用程序遭到入侵,则几乎所有应用程序都会受到威胁。

最新更新