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

使用Azure Key Vault和Blob Storage配置数据保护加密时授权报错

Azure Data Protection 配置授权错误排查

已完成的配置操作

  • 在Key Vault中创建密钥
  • 在Blob Storage中创建容器,为托管标识分配Storage Blob Data Contributor角色
  • 生成具备读取、写入、创建权限的SAS令牌及URL
  • 将Linux VM的IP地址添加到Blob Storage容器和SAS的允许访问列表中

配置代码(Program.cs)

builder.Services.AddDataProtection()
        .PersistKeysToAzureBlobStorage(new Uri(blobUriWithSasToken))
        .ProtectKeysWithAzureKeyVault(new Uri(keyIdentifier), new DefaultAzureCredential());

报错信息

System.Security.Cryptography.CryptographicException: 尝试加密提供的数据时出错。请参考内部异常了解详细信息。---> Azure.RequestFailedException: 此请求未被授权执行此操作。

已尝试的解决动作

  • 重新生成密钥和SAS令牌,问题未解决
  • 在SAS URL中添加comp=list&restype=container,解决了最初的签名不匹配报错

排查建议

  1. 核对SAS令牌权限与资源范围:确认SAS令牌除了写入、创建权限外,是否包含删除权限——Data Protection更新密钥文件时可能需要删除旧版本资源。同时确保SAS的资源类型为容器(restype=container),而非单个Blob。
  2. 确认角色分配生效状态:Azure角色分配通常需要5-15分钟生效,检查托管标识的Storage Blob Data Contributor角色是否已超过生效时间,且该标识确实关联到运行应用的Linux VM。
  3. 验证DefaultAzureCredential身份链:DefaultAzureCredential会依次尝试环境变量、托管标识、Azure CLI等身份源。可在VM上执行az login --identity测试托管标识能否正常访问Key Vault和Blob Storage,排除身份 fallback 到无权限账号的情况。
  4. 检查Blob容器访问策略:确认容器访问级别为默认的私有,避免与SAS或角色权限冲突。同时核对IP地址规则,确保填写的是VM的正确公网/私网IP(根据访问方式选择),无拼写错误。
  5. 检查Key Vault访问策略:确认托管标识在Key Vault中拥有密钥加密和密钥解密权限——ProtectKeysWithAzureKeyVault需要对密钥执行这两类操作。
  6. 查看Azure活动日志:在Blob Storage和Key Vault的活动日志中搜索失败请求,获取具体错误代码和原因,比如IP限制未命中、权限不足的具体资源等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:02:15