使用Azure Key Vault解密时出现403 Forbidden Access错误如何解决
问题根因排查方向
- 补全密钥解密权限
你当前加密操作可以正常执行,说明已经拥有密钥的Encrypt权限,解密失败403大概率是访问策略中未给当前身份分配Decrypt权限。进入Key Vault的「访问策略」配置页,找到你当前使用的身份对应的策略,在密钥权限的「加密操作」分类下,勾选Decrypt权限后保存配置。 - 确认身份匹配正确性
本地开发使用DefaultAzureCredential时,会优先读取Visual Studio/VS Code/Azure CLI当前登录的Azure账号信息,请确认你本地登录的账号,和Key Vault访问策略中配置的身份为同一个主体,避免出现跨租户、登错账号的情况。 - 匹配访问模型的权限配置
如果你的Key Vault使用的是Azure RBAC访问控制模型而非经典访问策略模型,需要给当前账号分配Key Vault Crypto User角色,该角色默认包含加解密所需的所有操作权限;如果使用经典访问策略,按第一条说明补全权限即可。 - 验证密钥状态有效性
确认你调用的RSA密钥未被禁用、未过期,且密钥类型为RSA(仅RSA密钥支持非对称加解密操作)。
代码次要优化点
你当前代码中已经从Secret中取出了加密后的密文,但解密时直接使用了内存中存储的encryptResult.Ciphertext,若需要验证从Key Vault读取密文后的解密流程,可以调整解密逻辑:
var encryptedSecret = secretClient.GetSecret("Temp"); byte[] cipherTextFromSecret = Convert.FromBase64String(encryptedSecret.Value.Value); DecryptResult decryptResult = cryptoClient.Decrypt(EncryptionAlgorithm.RsaOaep256, cipherTextFromSecret);
内容的提问来源于stack exchange,提问作者Eshwar Bychanahalli
相关产品推荐
相关产品推荐

