You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure多租户应用:创建仅单subscription权限的用户/Service Principal

如何创建仅拥有单个Azure订阅访问权限的账号?

当然可以!你完全可以为第二个系统创建一个仅具备特定订阅访问权限的Service Principal(服务主体)——这不仅能满足单订阅管理的需求,还能遵循最小权限原则,降低安全风险。下面给你两种可行的方案,以及你之前操作没达预期的原因说明:

方案一:创建全新的限定订阅权限的SP(推荐)

这是最清晰的权限隔离方式,专门为第二个系统打造独立的身份:

  • 用Azure CLI快速创建
    执行以下命令,替换占位符为你的实际信息:
    az ad sp create-for-rbac --name "SecondSystem-Subscription-SP" --role "Contributor" --scopes "/subscriptions/{目标订阅ID}"
    
    这里的关键是--scopes参数,直接把SP的权限范围锁定在目标订阅上;--role可以根据实际需求调整,比如只读访问用Reader,需要全管理用Owner,或者自定义角色。执行后会返回appId、password、tenantId等凭据,把这些交给第二个系统用来认证即可。
  • 验证权限(可选但推荐)
    可以用这个SP登录测试,确认只能访问目标订阅:
    az login --service-principal -u {appId} -p {password} --tenant {tenantId}
    # 尝试列出目标订阅的VM,应该能正常返回
    az vm list --subscription {目标订阅ID}
    # 尝试访问其他订阅,会提示权限不足
    az vm list --subscription {其他订阅ID}
    

方案二:调整现有SP的权限范围(不推荐,除非必须复用)

如果你坚持要用已有的SP,那需要修改它的角色分配,把权限范围缩小到单个订阅:

  1. 先查看现有SP的所有角色分配,找出需要移除的宽范围权限:
    az role assignment list --assignee {现有SP的appId}
    
  2. 删除不需要的角色分配(比如全局或多订阅范围的):
    az role assignment delete --assignee {appId} --role {原有角色名} --scope {原有权限范围}
    
  3. 添加目标订阅的角色分配:
    az role assignment create --assignee {appId} --role "Contributor" --scopes "/subscriptions/{目标订阅ID}"
    

关于你之前操作的补充说明

你提到“为已创建的Service Principal设置密码”,其实SP的密码(客户端密钥)只是身份认证凭据,用来证明这个SP的身份,和它能访问哪些资源是两回事。权限的控制核心是角色分配+作用域(scopes)——之前的操作只设置了认证凭据,但没调整权限范围,所以才没达到仅访问单订阅的效果。

另外提醒下:如果是跨租户场景(第二个系统管理的是客户租户下的订阅),要确保客户已经授予这个SP对其订阅的访问权限;如果是同租户,直接按上面的步骤操作即可。

内容的提问来源于stack exchange,提问作者Michael Sabin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:04:15