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

C#使用Azure Key Vault解密下载加密Azure Blob出现Forbidden错误

错误产生原因
  • 授权身份不匹配:你在Key Vault中配置权限的安全主体,和代码中GetToken方法获取Token对应的身份(服务主体、托管标识、本地开发账号等)不是同一个主体,导致访问被拒绝。
  • 缺少Unwrap Key操作权限:加密Blob时仅需要密钥的Wrap Key权限,解密时需要调用Unwrap Key接口解包数据加密密钥,即使你勾选了全部权限也可能存在权限未生效、或者使用Azure RBAC模式时分配的角色不包含Unwrap Key操作权限的情况。
  • Key Vault网络访问限制:Key Vault开启了防火墙规则,你当前运行代码的客户端IP、或者代码部署的虚拟网络不在Key Vault的允许访问列表中,触发403拒绝。
  • 密钥状态异常:你使用的密钥已被禁用、已过有效期,或者加密时使用的密钥版本已被删除,无法执行解密操作。
解决方案
  • 核对授权身份:首先确认代码GetToken方法获取的身份标识,和Key Vault访问策略(或Azure RBAC角色)中分配权限的主体完全一致,避免错给其他账号/服务主体授权。
  • 补全解密权限:
    • 如果你使用Key Vault访问策略模式:找到对应授权主体的密钥权限,确认已勾选Unwrap Key权限,保存配置后等待3-5分钟生效再重试。
    • 如果你使用Azure RBAC权限模式:给对应身份分配Key Vault加密用户角色,该角色默认包含加解密所需的Wrap/Unwrap密钥权限。
  • 排查网络限制:临时将Key Vault的网络访问设置调整为允许所有网络访问,测试解密是否正常。如果测试通过,再将你运行代码的公网IP、或部署环境所在的虚拟网络子网添加到Key Vault的允许访问列表即可。
  • 确认密钥状态:进入Key Vault密钥管理页面,确认你使用的密钥处于启用状态,没有过期,且加密时使用的密钥版本仍存在未被删除。

另外你代码中通过ResolveKeyAsync获取的drsa对象并未实际使用,属于冗余代码,不影响解密逻辑,可直接删除。

内容的提问来源于stack exchange,提问作者Atul Takekar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:57:01