如何将Azure应用注册绑定到订阅并分配对应权限?
解决Azure服务主体登录"Subscription is not found"问题及权限配置
一、将应用注册绑定到目标订阅
命令行操作步骤
- 用拥有订阅管理权限的账号登录Azure CLI:
az login - 查询目标订阅的ID(替换为你的订阅名称):
az account list --query "[?name=='你的订阅名称'].id" -o tsv - 将应用注册(服务主体)关联到该订阅:
注:若应用注册已存在,az account set --subscription 你的订阅ID az ad sp create --id 19e4f82f-2010-4d91-a64d-7e599805e4d9az ad sp create会返回已存在的提示,不影响后续操作
Azure Portal操作步骤
- 登录Azure Portal,进入订阅页面,选中目标订阅
- 左侧菜单点击访问控制(IAM)
- 点击添加 → 添加角色分配
- 在成员页签,选择用户、组或服务主体,点击选择成员,搜索你的应用注册名称并选中
- 选择一个基础角色(如参与者)完成分配,此操作会自动将应用注册绑定到当前订阅
二、为应用注册分配订阅级权限
命令行操作步骤
- 分配订阅级别的参与者权限(替换订阅ID和服务主体ID):
az role assignment create --assignee 19e4f82f-2010-4d91-a64d-7e599805e4d9 --role "参与者" --scope "/subscriptions/你的订阅ID" - 若需细粒度权限(仅针对目标App Service),修改
--scope为App Service资源ID:az role assignment create --assignee 19e4f82f-2010-4d91-a64d-7e599805e4d9 --role "网站参与者" --scope "/subscriptions/你的订阅ID/resourceGroups/你的资源组名/providers/Microsoft.Web/sites/你的App Service名"
Azure Portal操作步骤
- 进入目标订阅(或直接进入目标App Service)的**访问控制(IAM)**页面
- 点击添加 → 添加角色分配
- 选择对应权限角色(如参与者、网站参与者),选中你的应用注册作为成员,完成分配
三、GitLab CI/CD部署到Azure App Service的其他实现方式
- 登录时直接指定订阅:
在服务主体登录命令后追加订阅设置命令,避免默认订阅不匹配问题:az login --service-principal -u 19e4f82f-2010-4d91-a64d-7e599805e4d9 -p 69f809f5-f428-4349-8f8b-9f50013ddb64 --tenant 你的租户ID && az account set --subscription 你的订阅ID - 使用GitLab预定义Azure模板:
在.gitlab-ci.yml中直接使用GitLab提供的Azure App Service部署模板,只需在GitLab项目设置中配置Azure相关变量(租户ID、订阅ID、服务主体ID、密钥),无需手动编写登录逻辑 - 借助Azure DevOps中转:
通过GitLab webhook触发Azure DevOps Pipeline,利用Azure原生工具链完成App Service部署,适合已有Azure DevOps环境的场景
内容的提问来源于stack exchange,提问作者Semen Shekhovtsov
相关产品推荐
相关产品推荐

