快速入门:授权创建无限数目的应用注册的权限

在本快速入门指南中,你将创建一个有权创建无限次应用注册的自定义角色,然后将该角色分配给某个用户。 分配了该角色的用户随后可以使用 Microsoft Entra 管理中心、Microsoft Graph PowerShell 或 Microsoft Graph API 创建应用程序注册。 与内置的“应用程序开发人员”角色不同,使用此自定义角色可以创建无限次应用程序注册。 “应用程序开发人员”角色授予该能力,但创建的对象总数限制为 250 个,目的是防止达到目录范围的对象配额。 创建和分配 Microsoft Entra 自定义角色所需的最低特权角色是特权角色管理员。

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

先决条件

  • Microsoft Entra ID P1 或 P2 许可证
  • 特权角色管理员
  • 使用 PowerShell 时的 Microsoft Graph PowerShell 模块
  • 将 Graph 浏览器用于 Microsoft Graph API 时需要管理员同意

有关详细信息,请参阅使用 PowerShell 或 Graph 浏览器的先决条件

Microsoft Entra 管理中心

创建自定义角色

提示

本文中的步骤可能因开始使用的门户而略有不同。

  1. 至少以特权角色管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“角色和管理员”>“角色和管理员”

  3. 选择“新建自定义角色”。

    从“角色和管理员”页创建或编辑角色

  4. 在“基本信息”选项卡上输入“应用程序注册创建者”作为角色名称,输入“可以创建无限次应用程序注册”作为角色说明,然后选择“下一步”

    在“基本信息”选项卡上提供自定义角色的名称和说明

  5. 在“权限”选项卡上的搜索框中输入“microsoft.directory/applications/create”,选中所需权限旁边的复选框,然后选择“下一步”。

    在“权限”选项卡上选择自定义角色的权限

  6. 在“查看 + 创建”选项卡上查看权限,然后选择“创建” 。

分配角色

  1. 至少以特权角色管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“角色和管理员”>“角色和管理员”

  3. 选择“应用程序注册创建者”角色,然后选择“添加分配”。

  4. 选择所需的用户,然后单击“选择”将该用户添加到该角色。

完成! 在本快速入门中,你已成功创建一个有权创建无限数目的应用注册的自定义角色,然后将该角色分配给了某个用户。

提示

若要使用 Microsoft Entra 管理中心将角色分配到某个应用程序,请在分配页上的搜索框中输入该应用程序的名称。 应用程序默认不会显示在列表中,但会在搜索结果中返回。

应用注册权限

可以使用两个权限来授予创建应用程序注册的能力,这两个权限各自有不同的行为:

  • microsoft.directory/applications/createAsOwner:分配此权限会导致将创建者添加为所创建应用注册的第一个所有者,创建的应用注册将计入到创建者的“250 个已创建对象”配额。
  • microsoft.directory/applications/create:分配此权限不会导致将创建者添加为所创建应用注册的第一个所有者,创建的应用注册不会计入到创建者的“250 个已创建对象”配额。 请慎用此权限,因为在达到目录级配额之前,没有任何办法阻止分配到此权限的用户创建应用注册。 如果同时分配上述两个权限,此权限优先。

PowerShell

创建自定义角色

使用以下 PowerShell 脚本创建新角色:

# Basic role information
$displayName = "Application Registration Creator"
$description = "Can create an unlimited number of application registrations."
$templateId = (New-Guid).Guid

# Set of permissions to grant
$allowedResourceAction =
@(
    "microsoft.directory/applications/create"
    "microsoft.directory/applications/createAsOwner"
)
$rolePermissions = @{'allowedResourceActions'= $allowedResourceAction}

# Create new custom admin role
$customRole = New-MgRoleManagementDirectoryRoleDefinition -DisplayName $displayName -Description $description -RolePermissions $rolePermissions -TemplateId $templateId -IsEnabled:$true

分配角色

使用以下 PowerShell 脚本分配角色:

# Get the user and role definition you want to link
$user = Get-MgUser -Filter "UserPrincipalName eq 'Adam@contoso.com'"
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Application Registration Creator'"

# Get resource scope for assignment
$resourceScope = '/'

# Create a scoped role assignment
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $resourceScope -RoleDefinitionId $roleDefinition.Id -PrincipalId $user.Id

Microsoft Graph API

创建自定义角色

使用 Create unifiedRoleDefinition API 创建自定义角色。

POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions

正文

{
    "description": "Can create an unlimited number of application registrations.",
    "displayName": "Application Registration Creator",
    "isEnabled": true,
    "rolePermissions":
    [
        {
            "allowedResourceActions":
            [
                "microsoft.directory/applications/create"
                "microsoft.directory/applications/createAsOwner"
            ]
        }
    ],
    "templateId": "<PROVIDE NEW GUID HERE>",
    "version": "1"
}

分配角色

使用 Create unifiedRoleAssignment API 分配自定义角色。 角色分配会将安全主体 ID(可以是用户或服务主体)、角色定义(角色)ID 和 Microsoft Entra 资源范围合并。

POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments

正文

{
    "@odata.type": "#microsoft.graph.unifiedRoleAssignment",
    "principalId": "<PROVIDE OBJECTID OF USER TO ASSIGN HERE>",
    "roleDefinitionId": "<PROVIDE OBJECTID OF ROLE DEFINITION HERE>",
    "directoryScopeId": "/"
}

后续步骤