产品派
返回

Netflix为EMR Spark打通AWS IAM与内部身份认证

后端InfoQ 中文站2026/11/3 14:01:39
AI 导读

Netflix为运行在Amazon EMR上的Apache Spark任务设计了新的工作负载认证机制。任务可以用短期内部工作负载身份替代云端执行身份访问内部服务,整个过程不需要手动注入凭据。该方案把AWS IAM与内部Metatron PKI连接起来,由私有PKI通过双向TLS签发短效X.509证书。

Netflix同时维护两套身份体系:AWS IAM为托管计算任务提供执行角色,Metatron则负责内部服务身份认证。作为数据访问权限和身份边界的Data Project,需要将云端任务身份与内部身份对应起来。为此,每个Data Project都会关联一个专用IAM角色;考虑到项目数量可能达到数万,这些角色会确定性地分布在多个专用AWS账户组成的角色池中,而不是集中到单一账户。

任务提交时,Netflix控制平面先验证请求、解析目标Data Project对应的IAM角色,并生成带签名的工作负载元数据。只有控制平面有权创建这类声明。随后,Spark驱动程序使用执行角色凭据,向AWS安全令牌服务STS的GetCallerIdentity接口发送预签名请求。身份服务从STS获取该请求,并据此确认实际签署请求的IAM角色。

身份服务会将AWS返回的角色信息与控制平面签署的元数据进行交叉校验。前者证明请求方持有预期的IAM角色,后者说明该请求对应的目标工作负载;两项信息相互匹配后,服务才会签发Metatron证书,从而建立一条可独立验证的AWS身份与内部身份可信链路。

该设计还针对Spark执行器数量庞大的扇出场景进行了优化。Netflix不让数千个执行器分别完成认证,而是由驱动程序完成一次认证,再通过已认证且加密的Spark RPC分发凭据。这样可以避免认证请求量随执行器数量线性增长,但同时也让驱动程序承担了额外的凭据分发信任边界。

证书初次获取与后续续期被分开处理。短效证书即将过期前,驱动程序会周期性重新认证,执行器则不单独续期。Netflix认为,长期运行的任务必须具备可重复认证能力。该模式将内部工作负载身份与云计算提供商解耦,同时保留云端身份作为加密证明,也可推广到其他托管环境,用于为已拥有云身份的任务建立独立组织身份。

工作负载认证AWS IAM云安全身份管理

本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。

阅读原文