如何在Azure App Service Plan中禁用用户及应用级凭据部署?
解答:Azure App Service部署凭据的管控方案
针对你提出的几个核心问题,我整理了具体的解决方案和细节说明:
1. 能否针对特定App Service Plan禁用用户级凭据部署?
用户级部署凭据是Azure账户全局共享的,无法直接通过App Service Plan来禁用整个Plan下所有App的用户级凭据使用。不过你可以针对单个App Service批量配置,禁止使用依赖用户级凭据的部署方式(比如FTP/FTPS、本地Git),从而间接阻止用户用全局凭据部署到生产环境的App。
如果你的生产环境App都在同一个Plan下,可以用Azure CLI或ARM模板批量执行配置,避免逐个手动操作:
- Azure CLI命令(批量禁用Plan下所有App的FTP和本地Git):
# 获取Plan下的所有App列表 apps=$(az webapp list --resource-group <你的资源组名> --plan <你的App Service Plan名> --query "[].name" -o tsv) # 逐个禁用FTP和本地Git部署 for app in $apps; do az webapp config set --resource-group <你的资源组名> --name $app --ftps-state Disabled az webapp deployment source config-local-git --resource-group <你的资源组名> --name $app --disable done - ARM模板中可以在
Microsoft.Web/sites资源的properties.siteConfig里添加:"siteConfig": { "ftpsState": "Disabled", "localGitEnabled": false }
2. 禁用FTP是否覆盖所有用户级凭据部署方式?
不覆盖。用户级凭据除了用于FTP/FTPS,还支持本地Git部署。所以要完全阻止用户用全局凭据部署,需要同时禁用:
- FTP/FTPS(在App的配置中设置
ftpsState为Disabled) - 本地Git部署(禁用本地Git功能)
另外,如果你之前允许过用用户级凭据连接Azure DevOps的旧部署方式,也需要在DevOps流水线中切换为服务主体或托管标识,彻底切断用户级凭据的使用路径。
3. 能否禁用应用级凭据?
可以。应用级凭据是每个App独立的,你可以直接在Azure门户或通过CLI/ARM模板禁用:
- 门户操作:进入App Service -> 部署中心 -> 部署凭据,选择“禁用应用级凭据”
- Azure CLI命令:
az webapp deployment credential delete --resource-group <你的资源组名> --name <你的App名>
你担心的审计性问题确实存在:应用级凭据属于App本身,审计日志中无法关联到具体操作的用户。因此更推荐的替代方案是使用托管标识或**服务主体(SPN)**来执行部署:
- 对于你正在使用的ARM模板MSDeploy扩展,可以配置为使用系统分配的托管标识,这样部署操作的审计日志会清晰关联到该托管标识,而托管标识的权限可以通过RBAC严格管控。
- 部署槽位的部署凭据默认继承自主应用,所以主应用禁用应用级凭据后,所有槽位也会自动生效,无需单独配置。
额外建议
为了强化生产环境的部署管控,还可以:
- 启用App Service的部署限制,只允许流水线所在的IP范围或Azure服务标签访问部署端点
- 在RBAC中为生产环境资源组设置严格权限,仅允许部署流水线的服务主体/托管标识拥有部署权限,普通用户仅具备只读权限
内容的提问来源于stack exchange,提问作者Alex KeySmith
相关产品推荐
相关产品推荐

