注册 Microsoft Entra 应用并创建服务主体
在本文中,你将了解如何创建可以与基于角色的访问控制 (RBAC) 配合使用的 Microsoft Entra 应用程序和服务主体。 在 Microsoft Entra ID 中注册新应用程序时,系统会自动为应用注册创建服务主体。 服务主体是应用在 Microsoft Entra 租户中的标识。 资源访问权限受分配给服务主体的角色限制,可用于控制哪些资源可以访问以及在哪个级别进行访问。 出于安全原因,始终建议将服务主体与自动化工具配合使用,而不是允许它们使用用户标识进行登录。
此示例适用于在一个组织内使用的业务线应用程序。 还可以使用 Azure PowerShell 或 Azure CLI 来创建服务主体。
重要
请考虑使用 Azure 资源的托管标识作为应用程序标识,而不是创建服务主体。 如果代码在支持托管标识的服务上运行并访问支持 Microsoft Entra 身份验证的资源,则托管标识是更好的选择。 若要详细了解 Azure 资源的托管标识(包括当前支持它的服务),请参阅什么是 Azure 资源的托管标识?。
有关应用注册、应用对象和服务主体之间关系的详细信息,请参阅 Microsoft Entra ID 中的应用程序对象和服务主体对象。
先决条件
若要在 Microsoft Entra 租户中注册应用程序,需要:
- 一个 Microsoft Entra 用户帐户。 如果还没有帐户,可以免费创建一个帐户。
- 具有足够的权限向 Microsoft Entra 租户注册应用程序,并向应用程序分配 Azure 订阅中的角色。 若要完成这些任务,需要
Application.ReadWrite.All
权限。
向 Microsoft Entra ID 注册应用程序并创建服务主体
提示
本文中的步骤可能因开始使用的门户而略有不同。
至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
浏览到“标识”>“应用程序”>“应用注册”,然后选择“新建注册”。
为应用程序命名,例如“example-app”。
在“支持的帐户类型”下,选择“仅此组织目录中的帐户” 。
在“重定向 URI”下,选择“Web”作为要创建的应用程序类型。 输入访问令牌将发送到的 URI。
选择注册。
向应用程序分配角色
若要访问订阅中的资源,必须将角色分配给应用程序。 判定哪个角色能为应用程序提供适当的权限。 若要了解可用角色,请参阅 Azure 内置角色。
可将作用域设置为订阅、资源组或资源级别。 较低级别的作用域会继承权限。
登录 Azure 门户。
选择要将应用程序分配到的范围级别。 例如,若要在订阅范围内分配角色,搜索并选择“订阅”。 如果未看到所需订阅,请选择“全局订阅筛选器”。 请确保已为该租户选择所需的订阅。
选择“访问控制 (IAM)”。
依次选择“+ 添加”和“添加角色分配” 。
在“角色”选项卡中,选择要分配给列表中的应用程序的角色。
选择下一步。
在“成员”选项卡上,对于“将访问权限分配到”,请选择“用户、组或服务主体”。
选择“选择成员”。 默认情况下,可用选项中不显示 Microsoft Entra 应用程序。 若要查找应用程序,请按名称搜索它。
选择“选择”按钮,然后选择“查看 + 分配”。
服务主体已设置完毕。 可以开始使用它运行脚本或应用。 若要管理服务主体(权限、用户同意权限、查看已同意的用户、查看权限、查看登录信息等),请访问“企业应用程序”。
下一部分演示如何获取以编程方式登录时所需的值。
登录应用程序
以编程方式登录时,请在身份验证请求中传递目录(租户)ID 和应用程序(客户端)ID。 还需要一个证书或身份验证密钥。 获取目录 ID 和应用程序 ID:
- 打开 Microsoft Entra 管理中心主页。
- 浏览到“标识”>“应用程序”>“应用注册”,然后选择应用程序。
- 在应用的概述页上,复制“目录(租户) ID”值并将其存储在应用程序代码中。
- 复制“应用程序(客户端) ID”值并将其存储在应用程序代码中。
设置身份验证
服务主体可以使用两种类型的身份验证:基于密码的身份验证(应用程序机密)和基于证书的身份验证。 建议使用证书颁发机构颁发的受信任证书,但你也可以创建应用程序机密或创建自签名证书来进行测试。
选项 1(推荐):上传由证书颁发机构颁发的受信任证书
若要上传证书文件,请执行以下操作:
- 浏览到“标识”>“应用程序”>“应用注册”,然后选择应用程序。
- 选择“证书和机密”。
- 依次选择“证书”、“上传证书”和要上传的证书文件。
- 选择“添加” 。 上传证书后,将显示指纹、开始日期和到期日期值。
在应用程序注册门户中将证书注册到应用程序后,请启用机密客户端应用程序代码以使用该证书。
选项 2:仅测试:创建和上传自签名证书
(可选)可以创建自签名证书,仅限测试目的。 打开 Windows PowerShell 并使用以下参数运行 New-SelfSignedCertificate,以在计算机上的用户证书存储中创建自签名证书:
$cert=New-SelfSignedCertificate -Subject "CN=DaemonConsoleCert" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature
使用可从 Windows 控制面板访问的管理用户证书 MMC 管理单元将此证书导出到文件。
- 从“开始”菜单中选择“运行”,然后输入“certmgr.msc” 。 此时会显示当前用户的证书管理器工具。
- 若要查看证书,请在左窗格中的“证书 - 当前用户”下,展开“个人”目录。
- 右键单击创建的证书,选择“所有任务”>“导出”。
- 按证书导出向导的要求操作。
若要上传证书,请执行以下操作:
- 浏览到“标识”>“应用程序”>“应用注册”,然后选择应用程序。
- 选择“证书和机密”。
- 依次选择“证书”、“上传证书”,然后选择证书(现有证书或已导出的自签名证书)。
- 选择 添加 。
在应用程序注册门户中将证书注册到应用程序后,请启用机密客户端应用程序代码以使用该证书。
选项 3:创建新的客户端密码
如果选择不使用证书,则可以创建新的客户端密码。
- 浏览到“标识”>“应用程序”>“应用注册”,然后选择应用程序。
- 选择“证书和机密”。
- 选择“客户端密码”,然后选择“新建客户端密码”。
- 提供机密的说明和持续时间。
- 选择 添加 。
保存客户端密码后,将显示客户端密码的值。 此值仅显示一次,因此请复制此值并将其存储在应用程序可以检索它的位置,通常是应用程序保存 clientId
等值的位置,或是源代码中的 authority
。 你将提供机密值以及应用程序的客户端 ID,以作为应用程序登录。
在资源上配置访问策略
你可能需要对应用程序需要访问的资源配置额外权限。 例如,你还必须更新密钥保管库的访问策略,以使应用程序能够访问密钥、机密或证书。
配置访问策略:
登录 Azure 门户。
选择自己的密钥保管库,然后选择“访问策略”。
选择“添加访问策略”,然后选择要授予应用程序的密钥、机密和证书权限。 选择之前创建的服务主体。
选择“添加”以添加访问策略,然后选择“保存”。
相关内容
- 了解如何使用 Azure PowerShell 或 Azure CLI 创建服务主体。
- 若要了解如何指定安全策略,请参阅 Azure 基于角色的访问控制 (Azure RBAC)。
- 有关可对用户授予或拒绝的可用操作的列表,请参阅 Azure 资源管理器资源提供程序操作。
- 有关使用 Microsoft Graph 处理应用注册的信息,请参阅应用程序 API 参考。