构建安全飞轮:Amazon RDS如何通过SELinux实现持续安全增强

本文详细介绍了AWS安全团队如何通过SELinux强制访问控制技术为Amazon RDS的PL/Rust扩展构建安全防护体系,包括策略配置、遥测监控、事件响应流程,并通过真实安全事件验证了该方案的有效性。

构建安全飞轮:稳步提升Amazon RDS安全性的实践

三年前,我作为首席安全工程师加入亚马逊云科技(AWS),首个项目就是负责Amazon Relational Database Service(Amazon RDS)中PL/Rust扩展的安全工作。该扩展允许用户使用Rust语言为PostgreSQL编写自定义函数,这些函数会被编译成本地机器码。虽然这种函数具有高性能优势,但从安全工程师视角看,“编译成本地机器码”就像指向Rust工具链的警示灯,提示这里需要重点防护。

系统架构剖析

PL/Rust的核心是Rust标准库postgrestd,其设计包含防止数据库逃逸的机制。但由于该库当时较新,尚未经过大规模生产环境考验。更复杂的是,PL/Rust需要在数据库实例本地编译扩展,这就要求完整工具链必须本地可用。

完整的工具链存在潜在风险:构造不当的扩展可能影响数据库或主机实例,攻击者可能尝试绕过安全控制或破坏容器的写或执行(W^X)模型。为安全提供PL/Rust功能,我们需要部署一系列风险缓解措施。

技术方案抉择

在AWS,我们始终关注系统运维方式,强调自动化与韧性。经验表明,简单往往是更优选择——大规模运维已足够复杂,不应额外增加难度。

SELinux作为强制访问控制方案长期备受争议。它通过内核特性和工具对Linux子系统实施强制访问控制,能够精确规定系统允许的操作。即使进程拥有文件权限,SELinux仍可基于策略阻断操作,这是一种确保特定操作不会发生的确定性方法。

虽然SELinux会降低系统灵活性且配置复杂,但其安全增益对PL/Rust场景意义重大。经过团队深度讨论和可行性推演,我们最终决定采用SELinux方案。

完整解决方案构建

工程团队首先构建了SELinux环境并制定强制访问控制策略,但更关键的是后续工作:我们将策略拒绝消息接入遥测系统,利用AWS丰富的遥测数据持续优化系统运行。

通过与蓝队合作,我们为Amazon RDS团队制定了专门的事件响应手册,并每季度举行红蓝对抗演练。演练后多方团队共同分析响应过程,识别改进点,快速成熟化响应流程。

至此,我们形成了降低PL/Rust风险的三重保障:强化的安全方案、深度系统监控和经过充分测试的事件响应流程。

实战验证

功能上线后,监控系统会为每个SELinux拒绝消息自动生成高优先级工单。这种跟踪机制既确保控制措施有效运行,又为系统潜在风险提供实时洞察。

去年10月,系统基于SELinux拒绝消息自动生成高优先级工单。在确认监控规则无误后,红队、蓝队和安全团队立即启动响应——尽管访问尝试已被阻断,我们仍坚持深入调查原因。

调查发现该活动源自Varonis Threat Labs研究团队,我们主动联系并提议合作。研究人员在BlackHat 2025分享了此次案例,证明我们的安全策略成功阻断了其测试行为。这种实际验证让安全工程师倍感欣慰——既确认了控制措施的有效性,又体现了对客户的实际价值。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计