Azure Key Vault下载证书PFX文件出错,原因分析是什么?

摘要:本文聚焦于 Azure Key Vault 服务的一个常见权限陷阱:用户即便拥有证书(Certificate)的完整操作权限,在尝试下载 PFX 格式证书文件时,仍会遭遇 403 Forbidden 错误。
问题描述 使用Azure Key Vault服务来对证书进行管理和存储。 但是,却在下载PFX证书的时候,发生了错误。 错误信息: File download error,Failed to dynamically fetch target download uri. 而它旁边的功能“下载CER证书",却能成功。 这种情况是什么原因呢? 问题解答 是的,最开始面对这个问题,非常的疑惑。如果没有读取/下载的权限,正常理解,操作的时候会提示权限不足的信息。而且,当前登录Azure的账号拥有操作证书(Certificate)的全部权限: Get, List, Update, Create, Import, Delete, Recover, Backup, Restore, Manage Contacts, Manage Certificate Authorities, Get Certificate Authorities, List Certificate Authorities, Set Certificate Authorities, Delete Certificate Authorities 基于当前错误信息简单,无法帮助定位问题,有效的排查思路是: 打开浏览器开发者模式, 查看“下载PFX证书文件”时,浏览器的Network Trace中全部请求的状态,观察请求中是否有错误, 如果有错误,查看请求响应内容,进一步根据内容分析问题原因。 结果非常有效,观察到在执行下载操作的时候,Get请求报错403 Forbidden。非常明显,这就是错误原因。 详细的请求状态和错误消息: Request URL :https://xxxx.vault.azure.cn/secrets/mytest-com-cn/b7605b*****************cf41d?api-version=7.5&_=1773663092181 Request Method :GET Status Code :403 Forbidden Response: {"error": { "code": "Forbidden", "message": "The user, group or application 'appid=***-***-***-***-***;oid=***-***-***-***-***;numgroups=13;iss=https://sts.chinacloudapi.cn/***-***-***-***-***/' does not have secrets get permission on key vault '******;location=chinanorth3'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287", "innererror": {"code": "ForbiddenByPolicy"} } } 根据这个错误提示,我们当前操作的用户虽然有全部的证书(Certificate)的权限,但是没有机密(Secrets)的GET权限。的确,我们只是操作证书,何必需要机密的权限了!困惑中 ~~~ 但为了解决下载PFX证书问题,我们还是根据提示为当前操作用户添加了机密的GET权限。 添加权限之后,再次下载证书,问题解决了。 查看报错和解决问题的步骤截图: 【完】 请教AI大模型,它帮忙解释了这个现象: Q1:为什么从 Azure Key Vault 下载 PFX 证书需要 Get Secrets 权限? A: 因为在 Azure Key Vault 中,包含私钥的完整 PFX 证书是以 Secret 的形式存储的。当您下载 PFX 文件时,Key Vault 实际上是在读取对应的 Secret,而不是 Certificate 对象,因此需要 secrets/get 权限。 Q2:Certificate 权限和 Secret 权限有什么区别? A:Certificate 权限:用于管理和读取证书的元数据和公钥信息 Secret 权限:用于访问敏感数据,例如包含私钥的 PFX 内容 仅授予 Certificate 相关权限时,只能获取公钥,无法下载包含私钥的 PFX 文件。 Q3:为什么 Azure Key Vault 要这样设计? A: 这是出于安全考虑的分层设计。
阅读全文