Azure中通过Python部署微调后的GPT模型时遭遇403 Forbidden错误的解决方法
遇到这种UI能正常部署但代码返回403权限错误的情况确实挺让人头疼的,咱们结合你提供的信息一步步来排查解决:
先明确核心问题
错误提示里的AuthorizationFailed已经说得很清楚了:你的账号没有对目标部署路径执行Microsoft.CognitiveServices/accounts/deployments/write操作的权限,或者scope无效。但你能通过UI部署,说明账号本身是有权限的,问题大概率出在代码里用的访问令牌或者Cloud Shell的环境配置上。
具体排查和解决步骤
1. 确认Cloud Shell的账号和UI操作的账号是同一个
有时候我们可能在Azure里有多个账号或者身份,先在Cloud Shell里跑下面的命令,核对输出的订阅ID、租户ID和你UI里操作的是否完全一致:
az account show
如果不一致,用az account set --subscription <正确的订阅ID>切换到正确的订阅,再重新登录:
az login
2. 获取带正确权限范围的访问令牌
你用az account get-access-token拿到的令牌,可能默认的资源范围不对。因为你调用的是Azure管理API(management.azure.com),需要明确指定资源参数来获取对应权限的令牌:
az account get-access-token --resource https://management.azure.com/
拿到新的令牌后替换代码里的token值再试试。另外你可以把拿到的令牌放到jwt.io上解码,确认aud字段是https://management.azure.com/,并且exp字段显示的过期时间还没到。
3. 确认账号在资源上的角色权限
虽然UI能操作,但还是要确认Cloud Shell里的账号在你的Cognitive Services资源上有足够的权限。在Cloud Shell里运行下面的命令(替换成你的邮箱、资源组和资源名称):
az role assignment list --assignee <你的邮箱地址> --resource-group <你的资源组名称> --resource-type Microsoft.CognitiveServices/accounts --name <你的Cognitive Services资源名称>
如果输出里没有Contributor、Owner或者Cognitive Services Contributor这类角色,就需要给账号添加对应的角色:
- 登录Azure UI,找到你的Cognitive Services资源
- 进入「访问控制(IAM)」→「添加」→「添加角色分配」
- 选择「Cognitive Services Contributor」角色,然后添加你的账号,保存后等待几分钟生效,再重新获取令牌尝试部署。
4. 刷新凭据并重试
错误提示里提到如果刚授权了要刷新凭据,你可以在Cloud Shell里重新登录一次,确保令牌是最新的:
az login
然后重新获取令牌,替换到代码里再运行。
最后再核对代码里的参数
再检查一遍代码里的subscription、resource_group、resource_name、model_deployment_name这些参数,确保和UI里的完全一致,特别是资源名称和部署名称,别打错字。
备注:内容来源于stack exchange,提问作者Franck Dernoncourt

