Azure经典诊断设置中UserObjectId与AuthorizationDetail的principalId有何差异
二者均为该版本诊断日志中与请求身份关联的字段,核心差异如下:
- 定义与来源差异
UserObjectId是Azure AD内发起请求的交互式登录普通用户的唯一对象ID,仅当请求主体为真实自然人用户时才会返回有效值,非用户发起的请求中该字段为空。principalId是Azure授权校验模块记录的所有参与请求授权的主体ID,无论主体类型是普通用户、服务主体、系统托管身份、Azure内置服务账号,只要参与了本次请求的授权流程就会被记录,不存在空值情况。
- 覆盖场景差异
UserObjectId仅覆盖人工用户主动发起的操作场景:例如用户通过Azure Portal修改资源配置、使用个人Azure AD账号登录CLI执行命令等。principalId覆盖全量需要授权的操作场景:除人工操作外,还包括托管身份访问存储资源、服务主体调用资源API、Azure后台服务执行合规性扫描等所有非人工操作场景,都可通过该字段定位到操作主体。
- 取值逻辑差异
- 仅由单个普通用户发起的请求中,
UserObjectId的取值与principalId中对应用户条目的ID完全一致。 - 当请求涉及多个授权主体时(例如用户通过服务主体模拟执行操作、操作请求经过多层服务代理授权),
principalId会列出所有关联主体的ID,而UserObjectId仅会记录发起操作的原始自然人用户ID。
- 仅由单个普通用户发起的请求中,
内容的提问来源于stack exchange,提问作者Santhosh Chakka
相关产品推荐
相关产品推荐

