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

Azure Data Factory无法加载密钥加密的HDFS二进制数据问题求助

解决ADF通过SHIR加载密钥加密HDFS文件时的403 Forbidden错误

问题场景

使用HDFS链接服务和Windows管理员凭据时,可正常复制未加密HDFS文件,但加载密钥加密的HDFS文件时失败,报错如下:

Source=Microsoft.DataTransfer.Common,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Failed to read a 'Hdfs' file. File path:abc/xyz/fgh
Type=System.Net.WebException,Message=The remote server returned an error: (403) Forbidden.,Source=System

复制活动配置如下:

{
    "source": {
        "type": "BinarySource",
        "storeSettings": {
            "type": "HdfsReadSettings",
            "recursive": true,
            "deleteFilesAfterCompletion": false
        },
        "formatSettings": {
            "type": "BinaryReadSettings"
        }
    },
    "sink": {
        "type": "BinarySink",
        "storeSettings": {
            "type": "AzureBlobFSWriteSettings"
        }
    },
    "enableStaging": false,
    "skipErrorFile": {
        "dataInconsistency": false
    },
    "validateDataConsistency": true,
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Info",
            "enableReliableLogging": false
        }
    }
}

关键背景:用户可直接查询加密数据,但通过ADF(SHIR)加载时失败。

可能的原因及解决步骤

1. SHIR运行账户缺少加密密钥访问权限

虽然链接服务配置了Windows管理员凭据,但SHIR作为本地Windows服务,默认使用本地系统账户或指定服务账户运行,该账户可能未获得HDFS加密密钥的访问权限:

  • 确认SHIR服务运行账户:打开服务管理器,找到Azure Data Factory Integration Runtime服务,查看登录身份。
  • 授予密钥访问权限:联系Hadoop集群管理员,确保SHIR运行账户能访问加密文件对应的密钥(如Hadoop KMS中的密钥)。

2. 凭据未正确传递密钥访问上下文

即使链接服务使用管理员凭据,ADF通过SHIR访问时可能未正确传递密钥权限上下文:

  • 切换SHIR运行账户:将SHIR服务的登录身份改为你用来直接查询加密数据的Windows管理员账户,重启服务后重试复制活动。
  • 配置Kerberos约束委派(若集群使用Kerberos认证):确保SHIR账户被授权委派访问HDFS和KMS服务,避免权限上下文丢失。

3. HDFS加密区域权限限制

加密文件所在的HDFS加密区域可能有额外ACL限制:

  • 检查加密区域ACL:确认SHIR运行账户对加密区域文件拥有read权限,同时对加密密钥拥有decrypt权限。
  • 本地命令行验证:用SHIR运行账户登录到SHIR所在服务器,执行hdfs dfs -cat abc/xyz/fgh命令,若同样报403,说明问题出在账户权限而非ADF配置。

4. ADF读取设置缺失加密配置

当前HdfsReadSettings未包含加密相关参数,部分Hadoop集群需明确指定密钥信息:

  • 在storeSettings中添加加密配置(需匹配集群支持的参数):
"storeSettings": {
    "type": "HdfsReadSettings",
    "recursive": true,
    "deleteFilesAfterCompletion": false,
    "encryptionSettings": {
        "type": "HdfsEncryptionSettings",
        "keyName": "your-encryption-key-name"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:01:06