AWS云SaaS应用安全策略全解析

本文详细介绍了针对AWS云SaaS应用程序的应用安全策略和路线图,涵盖应用安全核心支柱、AWS基础设施安全最佳实践,以及如何将安全工程集成到SDLC中,帮助团队构建持续改进的安全防护体系。

AppSec Strategy for AWS Cloud SaaS

图片来源: Patrick Tomasso @ Unsplash

作者: Jason Taylor
发布日期: 2021年6月24日
阅读时间: 8分钟

目的

本文档旨在概述针对AWS云SaaS应用程序的应用安全策略和路线图,涵盖应用安全关注点以及AWS特定基础设施。这是一篇清单式文章,旨在帮助启动对话,并提供信息以供进一步研究。文中引用了其他白皮书和进一步阅读材料。

应用安全

一个有效的应用安全程序将减少与代码开发相关的安全风险,同时将对正常SDLC流程的干扰降至最低。理想情况下,这应在促进AppSec专业人员与整个开发团队之间合作与透明的环境中完成。如果整个团队在应用安全目标及实现成熟度的旅程中保持一致,那么安全团队可以作为一个服务组织运作,其目标是赋能,而不是作为一个以治理为目标的警务组织。

应用安全团队做出的每个决策都应符合以下标准:

  • 该决策是否符合业务目标?
  • 该决策是否与现有文化(或您试图实现的文化)相匹配?换句话说,它是否设定了不良先例或产生不利副作用?
  • 该决策是否维护了所有相关方的尊严?

另请参阅:如何扩展应用安全程序

风险评估、分析和减少是这些测试之上的一个层次,最终是您试图实现的目标。然而,目的不能证明手段的正当性,因此AppSec团队可以使用这些问题不仅实现目标,而且以最佳方式实现目标。最小干扰。最大影响。使用胡萝卜,而不是大棒。

每个成功的应用安全程序都由以下支柱组成:

政策和标准

  • 政策将业务需求与工程团队的安全要求联系起来。
  • 标准(例如架构、编码、SDLC和赋能技术)将政策转化为团队可操作的规范性指导。

教育

  • 教育与政策和标准直接相关,因此高度专注于赋能。
  • 为团队提供实现这些目标所需的知识和动力。

评估和测量

  • 这包括所有评估活动,包括威胁建模、架构审查、代码审查、渗透测试、威胁情报等。
  • 使用这些测量来确定是否需要更新政策和标准,然后教育团队这些变化,并继续循环评估。

这些支柱共同创建了一个持续改进的良性循环。

以下策略将这些一般原则转化为基于云的SaaS应用程序的可操作游戏计划。

了解部署的应用程序

  • 使查看所有组件部分变得容易。将安全集成到开发人员的工作流程中。尽可能自动化。

了解应用程序部署方法

  • 持续可见性。不要依赖调查、电子表格、仪表板。基于依赖关系、互联网暴露、涉及资产自动化服务风险排名。将精力集中在最高风险的服务上。

设置政策和标准

隔离

  • 减少攻击面。减少移动敏感数据的需要(例如令牌保险库)。

清理和验证所有输入

  • 数据馈送、文件、事件、cookie、用户输入、所有数据存储、命令行、环境变量、系统属性。
  • 检查格式、范围、大小、类型。
  • 尽可能使用允许列表验证,必要时回退到拒绝列表,但要小心。

永远不要在代码或配置中存储秘密

  • 凭据、令牌、密钥等。
  • 使用工具扫描,政策强制执行,并找出另一个位置/保险库进行秘密存储。
  • 使用保险库服务,如AWS KMS或Hashicorp Vault。

测试第三方和开源代码中的漏洞

  • 扫描具有已知漏洞的依赖项。
  • 保持依赖项最新。

强制执行安全身份验证

  • 定义满足业务需求的安全密码复杂性要求。
  • 使用最佳实践存储密码(scrypt或Argon2,具有升级能力)
  • 在特别敏感的操作之前重新认证(减少CSRF)。
  • TLS客户端身份验证。

强制执行最小权限

  • 指定每个角色所需的最少授权量。
  • 创建单元测试,尝试使用较低权限角色执行较高权限操作。

保护敏感数据

  • 对数据进行分类并了解需要保护的资产。
  • 确定数据使用的位置。
  • 确定数据暴露的位置(事件日志等)。
  • 加密静态敏感数据(哈希密码)。
  • 小心内存中的数据(例如,不要在Java中使用不可变数据类型)。
  • 加密所有传输中的数据。
  • 安全会话数据:使用sessionID并将会话信息存储在服务器上;加密cookie,使用HttpOnly标志拒绝脚本访问,使用Secure标志确保cookie仅通过HTTPS发送,并使用SameSite仅允许访问您的域,并设置过期时间。
  • 防范OWASP Top 10。输入验证、HTML编码、参数化查询。
  • 安全部署/配置标准和模板。

识别关键漏洞

  • 对于对您的平台重要的每个漏洞,创建开发标准和缓解计划。

将安全工程构建到SDLC中

  • 将安全目标定义为需求和设计的一部分
  • 威胁建模
  • 安全和架构设计审查
  • 安全代码审查
  • 内部和第三方渗透测试
  • 安全作为单元测试和集成测试的一部分
  • 部署和配置审查

采用持续评估

  • 运行SAST。
  • 在CI/CD管道中运行内联扫描,但保持简短。
  • 每次部署后运行基础设施和DAST扫描。
  • 使用云安全态势管理器(CSPM)来发现错误配置,检测过于宽松的账户权限,监控云环境中的政策违规,并获得自动修复某些错误配置的能力。

培训团队安全

  • 安全政策
  • 架构和代码的安全标准和最佳实践
  • 午餐和学习讨论漏洞、利用、缓解、违规
  • 代码级缓解指导
  • 实践式培训以创建对漏洞影响的情感连接

AWS基础设施安全

以下步骤将支柱转化为AWS基础设施的可操作游戏计划。(改编自:AWS安全成熟度路线图 - Summit Route

库存

  • 识别所有账户。

  • 将所有AWS账户集成到AWS组织中。

    这有助于合并账单、创建新账户和使用服务控制策略(SCPs)。

  • 拥有一个安全AWS账户

    用于日志收集。 结果至少有三个账户:业务、安全和一个用于AWS组织。

拥有备份

  • 创建定期、离线、受保护的备份,这样您就不会重蹈Code Spaces公司的覆辙。他们在攻击者删除所有数据和备份后倒闭。
  • 备份应发送到不同区域的单独AWS账户 - 或完全脱离AWS。
  • 使用AWS备份和S3复制策略。

可见性和初始修复

  • 打开CloudTrail、GuardDuty和Access Analyzer,将日志发送到安全账户。

    可以通过组织根目录完成,以应用于所有账户。

  • 在每个账户上创建IAM角色,允许安全账户查看访问权限。

  • 运行一次性扫描工具进行战术修复。

    CloudMapper、Prowler或ScoutSuite。 查找:包含敏感内容的公共存储桶、公共AWS管理的ElasticSearch服务器、运行应私有的公开可访问服务的EC2(例如ElasticSearch、数据库等)。

  • 打开S3阻止公共访问。

    禁用存储桶被公开。

  • 开发账户初始化脚本和新账户流程。

    确保新账户的安全基线。

检测

  • 从日志和事件中检测问题。

    集成到SIEM中进行监控和警报。 确保您可以:从任何区域任何账户的GuardDuty警报接收通知,对AccessDenied错误发出警报,搜索主体在时间段内采取的所有操作。

  • 执行定期扫描和评估。

    捕捉您的日志和警报无法捕捉的内容。

  • 记录您的安全指南。

    确保团队知道他们将被标记的内容。

安全IAM访问

  • 使用SSO进行访问。

    对所有人类用户使用SSO。允许集中管理,并在受损时能够滚动凭据。 通过您的SSO提供商强制执行强密码和MFA。

  • 删除所有IAM用户。

    IAM用户密钥永不过期,并且经常最终出现在GitHub或其他可以被发现的地方。改用IAM角色。

  • 删除未使用的IAM角色。

    审计一段时间内未使用的角色。

  • 将服务角色的权限减少到必要的服务。

    使用访问顾问确定最小权限。

  • 实施预提交钩子进行秘密检测。

    检查正在提交到源代码仓库的秘密。 一个解决方案是detect-secrets项目。

减少攻击面并缓解泄露

可重复性和所有权

  • 使用基础设施即代码(IaC)。

    只允许通过IaC(如Terraform或CloudFormation)进行更改。 要求对所有影响基础设施的更改进行代码审查。

  • 控制AMI和软件包来源。

    记录关于在您的环境中允许哪些Amazon Machine Images的指南(白名单)。 记录允许的实例类型和操作系统。 或者您可以构建自己的AMI,不允许使用公共AMI。

  • 应用标记策略。

    确保所有资源都标记有所有者。

增强检测

自动修复和权限细化

  • 实施自动修复。

    这可以包括删除未使用的IAM角色、更改过于开放的安全组、每晚终止测试环境中的EC2等。

  • 细化IAM策略。

    花时间审查和细化IAM策略以进一步限制它们。

安全网络通信

  • 将所有非公共资源移动到私有子网中。

    通过代理中继出站流量。

  • 限制出口网络流量。

    使用AWS PrivateLink限制对资源的访问仅来自某些VPC,并限制对Internet的调用。

事件准备

  • 限制爆炸半径。

    将服务分解成部分,以便如果一个被泄露,影响将减轻。

  • 练习响应。

    识别、理解和反应需要多长时间。


请订阅我们的新闻通讯。每月我们发送一份新闻通讯,包含新闻摘要和我们最近几篇文章的链接。不要错过!

另请参阅

分享与讨论

归档于: 领导力, 培训, 指导, 云


Joe Basirico & Jason Taylor © 2023

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