Azure Service Principal究竟是什么?两类定义的关联该如何理解?
服务主体(Service Principal)的两种认知怎么关联?
其实这两种说法本质是一回事,只是从不同角度描述同一个东西:
1. 先搞懂两个核心对象的关系
- 应用对象(Application Object):这是你在Azure AD里注册应用时生成的「全局配置模板」,里面存着应用的所有基础信息——比如允许的权限、认证方式、密钥/证书这些。它是应用的"蓝图",只在你创建它的租户里存在。
- 服务主体(Service Principal):这是应用对象在具体租户里的「实体实例」。当你在自己的租户注册应用时,Azure AD会自动给你创建一个对应的服务主体;如果其他租户要使用你的应用,也得在他们的租户里创建这个应用对象的服务主体(也就是Azure门户里的"企业应用")。
2. 为什么会有两种不同的描述?
- 当你用它来给脚本/程序做身份验证时,它就是「独立的服务账户」:服务主体是一个可以被分配Azure资源权限的身份实体,和普通用户账户一样,但它属于应用而非个人。你可以精准控制它的权限(比如只让它访问某一个存储账户),然后用它的凭据(密钥/证书)让程序自动完成认证,不用依赖个人用户的账户,这就是文档里说的"安全脚本/程序的最优方式"。
- 当你从应用注册和OAuth2.0的角度看时,它就是「应用对象的实例」:服务主体是应用在租户里的"落地身份",所有OAuth2.0的授权流程(比如获取访问令牌、刷新令牌)都是通过服务主体和Azure AD交互完成的。应用对象的配置会同步到服务主体上,比如你改了应用的权限,对应的服务主体的权限也会跟着更新。
一句话总结
服务主体就是应用在具体租户里的可操作身份实体——它既是应用注册后的实例化身份(用来完成OAuth授权),也是一个独立的"服务账户"(用来给程序/脚本做权限受控的身份认证)。
内容的提问来源于stack exchange,提问作者YoavKlein
相关产品推荐
相关产品推荐

