【Azure Key Vault】在 Logic App 中调用 Key Vault 的 Key 进行加密/解密操作时权限报错问题

简介: Logic App调用Key Vault密钥加解密时403报错,常因密钥级权限未开启:即使访问策略已授权,仍需单独为该密钥勾选“Encrypt/Decrypt”等Permitted operations,否则操作被拒。

问题描述

在 Logic App 中调用 Key Vault 的 Key 进行加密/解密操作时,可能遇到的权限报错问题:

"body": {
    "status": 403,
    "message": "Operation failed because client does not have permission to perform the operation on the key vault. Please check your permissions in the key vault access policies https://docs.microsoft.com/en-us/azure/key-vault/general/assign-access-policy-portal.\r\nclientRequestId: xxxxxxxxxx",
    "error": {
        "message": "Operation failed because client does not have permission to perform the operation on the key vault. Please check your permissions in the key vault access policies https://docs.microsoft.com/en-us/azure/key-vault/general/assign-access-policy-portal."
    },
    "source": "keyvault-xxx.azconn-xxx-xxx.p.chinacloudsites.cn"
}

错误截图:

image.png

令人困惑的是,在 Key Vault 的 Access policy 中,已经为 Logic App 的标识(Identity)赋予了 Key 操作的全部权限,为什么仍然会出现权限不足的报错呢?

问题解答

根据错误提示中的链接(https://docs.microsoft.com/en-us/azure/key-vault/general/assign-access-policy-portal),排查方向通常是检查访问标识(Logic App 中使用的 SP 或 Identity)是否具备加密、解密等权限。

反复确认:相关权限确实已经在 Access policy 中授予。既然如此,为什么还会继续报权限错误呢?

image.png

问题的关键,其实藏在更靠里的一层:Key 本身的权限设置。

在单独查看某一个具体 Key 的配置时,会发现它还可以单独设置 Permitted operations(允许的操作),包括 Encrypt、Decrypt、Sign、Verify、Wrap Key、Unwrap Key 等。

也就是说,即使 Key Vault 的 Access policy 已经为 Logic App 的标识授予了权限,如果具体 Key 本身没有勾选相应的允许操作,调用时仍然会持续报权限不足。这一点很容易被忽略,也正是这个问题最令人困惑的地方。

image.png

当为这个 Key 勾选 Decrypt 后,再次运行 Logic App,问题得到解决。

附录一:证书生成的 Key 无法加密/解密

Key Vault 中的 Certificates 会默认生成一个 Key,但这个 Key 在门户中不可见。不过,在 Logic App 的 Actions 中可以看到它。如果在加密/解密任务中选择了这个 Key,同样会遇到权限报错。

原因是:这个由证书生成的 Key 没有启用加密/解密功能,而且用户无法修改它的 Permitted operations。

如果一定要使用证书生成的 Key,可以先下载证书的 pfx/pem 文件,再通过 Key 的方式重新上传证书文件,创建一个新的 Key。这样创建出来的 Key 就可以配置加密/解密权限了。

image.png

参考资料

Azure Key Vault Docs:https://docs.azure.cn/zh-cn/key-vault/keys/about-keys

相关文章
|
22天前
|
人工智能 自然语言处理 API
【Azure AI Search】Index的字段使用默认Analyzer(standard.lucene) 和 en.microsoft 有什么不同?
Azure AI Search英文检索因词形差异(如brief/briefs)无法匹配,根源在于analyzer选择:默认standard.lucene不处理词形还原,而en.microsoft支持lemmatization,可将变体还原为基本形式。需通过新增字段并配置en.microsoft analyzer解决,兼顾检索质量与业务需求。
237 124
|
21天前
|
人工智能 自然语言处理 API
【Azure AI Search】 stopword 是什么,为什么它会影响搜索结果?
本文解析 Azure AI Search 中搜索 "in brief" 返回结果过多的问题,指出根源在于 analyzer 对停用词(如 "in")的处理差异:默认 `standard.lucene` 保留停用词导致泛匹配,而 `en.microsoft` 会过滤停用词,使结果更精准。关键在于根据业务语义选择合适 analyzer。
219 121
|
3月前
|
人工智能 监控 网络协议
【App Service】常规排查 App Service 启动 Application Insights 无数据的步骤 (.NET版本)
本文详解Application Insights在Azure App Service中无日志数据的三大原因及排查方法:1)网络连通性(验证到AI端点的443端口访问);2)w3wp.exe进程是否成功加载AI模块;3)DLL冲突(检查并移除重复的Microsoft.ApplicationInsights等组件)。
184 10
|
3月前
|
NoSQL 网络协议 Cloud Native
【Azure Redis】云原生环境下的 Redis 超时之谜:为什么 15 分钟后应用才恢复?
云原生中Redis短暂不可用后应用持续超时15分钟?问题不在Redis,而在Linux TCP默认重传机制(tcp_retries2=15)与长连接模型的错位。需三管齐下:调低内核重传次数、客户端显式配置超时与自动重连、应用层引入断路器与弹性重试。
254 20
|
3月前
|
网络协议 虚拟化 Docker
【Azure Developer】.NET Aspire 启动报错:listen tcp bind: An attempt was made to access a socket in a way forbidden by its access permissions
.NET Aspire在Windows启动时因Hyper-V端口保留机制,导致DCP代理无法绑定53209等端口(报错“访问被拒绝”)。虽端口未被占用,但已被系统保留。推荐方案:修改launchSettings.json,将服务端口改为7xxx等安全范围;或临时重启winnat服务、永久排除指定端口。
480 21
|
3月前
|
前端开发 应用服务中间件 Linux
【Azure App Service】PHP页面上传文件413错误的解决方案
在使用 Azure App Service(Linux + PHP) 部署 Web 应用时,如果上传文件大于1MB,就会遇到 HTTP 413(Request Entity Too Large) 错误。 # 问题解答 ### 一、HTTP 413 错误的本质含义 413 Request Entity Too Large 是标准 HTTP 状态码,表示: > 客户端提交的请求体(Request Body)大小超过了服务器当前允许的最大限制。 在 Azure App Service(Linux)环境中,这个错误并不一定来自前端网关(Frontend),而更常见的来源是 App...
1025 13
|
4天前
|
人工智能 数据挖掘 测试技术
阿里云 Qoder 全系接入千问 Qwen3.7:夜间 Night Plan 折扣全解析
2026年阿里云完成Qoder全系产品对Qwen3.7系列模型的适配接入,并同步推出Night Plan夜间错峰计费机制,依托低谷空闲算力给出高额折扣,其中旗舰Qwen3.7 Max夜间仅2折,Qwen3.7 Plus夜间4折,使用最高可节省80%算力消耗成本。同时百炼平台面向新用户开放100万免费Tokens额度,个人开发者、企业团队可结合免费额度与夜间双重优惠,大幅降低代码重构、数据分析、长文档处理等高消耗任务开销。
141 0
|
9月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
606 6
|
10月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
419 4
|
11月前
|
API C++
【Azure 环境】VS Code登录China Azure(Function)报错 An error occurred while signing in: invalid_request - AADSTS65002
An error occurred while signing in: invalid_request - AADSTS65002: Consent between first party application 'c27c220f-ce2f-4904-927d-333864217eeb' and first party resource '797f4846-ba00-4fd7-ba43-dac1f8f63013' must be configured via preauthorization - applications owned and operated by Microsoft mus
502 13