云上数据安全新范式:Apache Doris IAM Assume Role 解锁无密钥访问 AWS S3 数据

一、传统 AK/SK 方式访问 AWS 资源存在的问题

密钥管理困境:

■ **长期暴露风险:**静态 AK/SK 需硬编码于配置文件中,一旦因代码泄露、误提交或恶意窃取导致密钥扩散,攻击者可永久获得等同于密钥所有者的完整权限,引发持续性的数据泄露、资源篡改及资金损失风险;

■ **审计盲区:**多用户 / 多服务共享同一组密钥时,云操作日志仅记录密钥身份而无法关联具体使用者,无法追溯真实责任人或业务模块;

■ **运维成本高:**密钥轮换灾难,需手动轮换业务模块密钥,容易出错触发服务中断;

■ **权限管理失控:**账户管理不清晰,授权无法满足服务 / 实例级的最小权限管控需求。

二、AWS IAM Assume Role 机制介绍

AWS Assume Role 是一种安全身份切换机制,允许一个可信实体(如 IAM 用户、EC2 实例或外部账号)通过 STS(安全令牌服务)临时获取目标角色的权限。其运作流程如下:

使用 AWS IAM Assume Role 方式访问的优点:

■ 动态令牌机制(15 分钟~12 小时有效期)替代永久密钥

■ 通过 External ID 实现跨账号安全隔离,并且可通过 AWS 后台服务进行审计

■ 基于角色的最小权限原则(Principle of Least Privilege)

AWS IAM Assume Role 访问 S3 Bucket 的鉴权过程:

阶段 1:源用户身份验证

1、权限策略检查

■ 源用户发起 AssumeRole 请求时,源账户的 IAM 策略引擎首先验证:该用户是否被授权调用 sts:AssumeRole 操作?

■ 检查依据:附着在源用户身份上的 IAM Permissions Policies

2、信任关系校验

■ 通过 STS 服务向目标账户发起请求:源用户是否在目标角色的信任策略白名单中?

■ 检查依据:目标角色绑定的 IAM Trust Relationships Policies(明确允许哪些账号 / 用户担任该角色)

阶段 2:目标角色权限激活

3、临时凭证生成

■ 若信任关系验证通过,STS 生成三要素临时凭证

复制代码
{  "AccessKeyId": "ASIA***",   "SecretAccessKey": "***",   "SessionToken": "***" // 有效期 15min-12h }

4、目标角色权限验证

■ 目标角色使用临时凭证访问 AWS S3 前,目标账户的 IAM 策略引擎校验:该角色是否被授权执行请求的 S3 操作? (如 s3:GetObject、s3:PutObject 等)

■ 检查依据:附着在目标角色上的 IAM Permissions Policies(定义角色能做什么)

阶段 3:资源操作执行

5、访问存储桶

■ 全部验证通过后,目标角色才可执行 S3 API 操作。

三、Apache Doris 如何应用 AWS IAM Assume Role 鉴权机制

1、Doris 通过将 FE、BE 进程所部署的 AWS EC2 Instances 绑定到 Source Account ,利用 AWS IAM 的 Assume Role 功能获取跨账户访问权限,从而安全地访问目标账户中的 AWS 资源。具体配置可参考文末的官网文档,主要流程如下图所示:

2、完成配置后 Doris FE/BE 进程会自动获 EC2 Instance 的 Profile 进行执行 Assume Role 操作和访问 Bucket 操作,扩容时 BE 节点会自动检测新的 EC2 Instance 是否成功绑定 IAM Role,防止出现漏配的情况;

3、Doris 的 S3 Load、TVF、Export、Resource、Repository、Storage Vault 等功能在 3.0.6 版本之后均支持了 AWS Assume Role 的方式使用,并且在创建时会进行连通性检测,S3 Load SQL 举例如下:

复制代码
 LOAD LABEL s3_load_demo_202508  (  DATA INFILE("s3://your_bucket_name/s3load_example.csv")  INTO TABLE test_s3load  COLUMNS TERMINATED BY ","  FORMAT AS "CSV"  (user_id, name, age)  )  WITH S3  (  "provider" = "S3",  "s3.endpoint" = "s3.us-east-1.amazonaws.com",  "s3.region" = "us-east-1",  "s3.role_arn" = "arn:aws:iam::543815668950:role/test-role1",  "s3.external_id" = "1001" -- 可选参数  )  PROPERTIES  (  "timeout" = "3600"  ); 

其中 "s3.role_arn" 对应填入 AWS IAM Account2 下的 Iam role2 的 arn 值,"s3.external_id" 对应填入 Trust Relationships Policies 中配置的 externalId 的值(可选配置)。

4、Doris 当前仅支持了 AWS IAM Assume Role 的机制,未来会逐步实现其他云厂商的类似鉴权机制。

# 参考资料

■ 官网文档:++https://doris.apache.org/zh-CN/docs/3.0/admin-manual/auth/integrations/aws-authentication-and-authorization++

■ 演示视频:++https://www.bilibili.com/video/BV1U3uezjEPW/++

相关推荐
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
Hello.Reader3 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
智驱力人工智能4 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
七夜zippoe4 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥4 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端