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

Azure中加密范围加密的Blob如何归档/转换存储层?

解决加密范围加密的Blob无法转换存储层的问题

核心原因

报错的本质是:用自定义加密范围加密的Blob,在执行存储层变更操作时,必须在请求里明确指定对应的加密范围,否则存储服务没法完成Blob的解密与重新加密流程。


可行解决方法

1. 转换存储层时显式指定加密范围

针对单个Blob操作,在命令或API请求中添加加密范围参数:

  • Azure CLI:
    az blob set-tier --account-name <你的存储账户名> --container-name <容器名> --name <目标Blob名> --tier Archive --encryption-scope <Blob所属的加密范围名称>
    
  • PowerShell:
    $storageContext = New-AzStorageContext -StorageAccountName <你的存储账户名> -StorageAccountKey <账户密钥>
    Set-AzBlobTier -ContainerName <容器名> -Blob <目标Blob名> -Tier Archive -EncryptionScope <Blob所属的加密范围名称> -Context $storageContext
    
  • REST API:
    在请求头中加入 x-ms-encryption-scope: <加密范围名称>,再发送存储层变更请求。

2. 批量处理时自动匹配加密范围

如果要批量转换大量Blob,先获取每个Blob的加密范围信息,再批量执行操作:

  • Azure CLI批量处理示例:
    # 列出容器内所有Blob及其加密范围,循环执行存储层转换
    az blob list --account-name <你的存储账户名> --container-name <容器名> --query "[].{name:name, scope:properties.encryptionScope}" --output tsv | while read blobName scopeName; do
        az blob set-tier --account-name <你的存储账户名> --container-name <容器名> --name $blobName --tier Archive --encryption-scope $scopeName
    done
    

3. 验证操作身份的加密范围权限

确保执行操作的账号(用户/服务主体)拥有对应加密范围的使用权限:

  • 权限名称:Microsoft.Storage/storageAccounts/encryptionScopes/use/action
  • 可通过Azure门户的存储账户IAM页面,检查该身份是否被分配了包含此权限的角色(比如自定义角色或内置的存储Blob数据所有者/参与者)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:15