前言
最近我与朋友讨论了创办新公司的话题。我们探讨了公司需要经历哪些阶段才能在现代市场中成熟安全地运营。本文将概述这些阶段。建议的方法基于以下原则:
- 默认安全
- 设计安全
- 身份识别、认证和授权
- 职责分离
如果您是从零开始创建产品,没有现有的VNET、IDP或母公司网络,可以遵循此流程。但如果存在这些要素,则需要相应调整流程。
以下是本文使用的术语定义:
- SIEM(安全信息和事件管理) - 用于监控网络和应用程序异常的方法和工具。
- SOAR(安全编排、自动化和响应) - 获取SIEM产生的事件并应用相应自动化响应的工具。
准备阶段
您有一个创意和几位充满热情的开发人员,但至少希望从安全角度感到安心。您已经设想了财务模型并拥有产品愿景,几乎准备好投入时间和资金。第一步是选择身份提供商(IDP)。
为什么? 开发团队迟早会成长,跨多个非集成服务管理身份将变得棘手。您可以选择:
- 公共IDP,如Azure目录服务和AWS IAM
- 托管IDP,如MS AD、Simple AD、开源LDAP服务等
选择将显著影响需要完成的任务工具和顺序。对于通用情况,假设使用公共IDP提供商。大多数情况下,IDP工具规定了实施访问控制策略的方法;如果没有,您需要在RBAC、GBAC、ABAC或其他选项中选择。
下一步是制定环境计划、网络规划和网络地图。
为什么重要? 网络隔离不仅对负责维护应用程序的运营团队和负责部署的DevOps团队很重要,对安全也很重要:您需要限制网络访问并实施SIEM/SOAR系统。没有明智的网络规划,这些系统将失效。
在此步骤中,我们将开始为产品构建封闭边界。只有经过认证和授权的用户才能访问。
因此,需要为每个环境选择公共、私有或封闭子网,指定隧道范围(如果适用),并定义VPN子网。我们还需要部署VPN服务器并将其配置为使用我们的IDP作为真相源。在此阶段,我们已准备好开始开发MVP。
POC/MVP/演示阶段
应用程序部署基于其逻辑结构的子网中。但是构建/部署引擎无法从外部网络访问编排或数据库端点。有三种解决方法:
- 在网络内部部署构建引擎和构建代理
- 部署构建代理并使用拉取模型配置管理
- 使用GitOps方法
现在有了代码库,是时候进行SAST(静态应用程序安全测试)和DAST(动态应用程序安全测试)了。可以使用SAST工具(如SonarQube、Snyk和Fortify SCA)以及DAST工具(如Veracode、Acunetix和Burp Suite)。其中一些工具具有交叉功能,可以扮演两种角色,区别仅在于应用阶段。
经过几个冲刺周期,产品将开发到可以向演示用户展示或向投资者展示的相当质量。
上线阶段
您的产品现已准备好上线。我们有一个与生产环境具有相同网络和应用程序的部署阶段。此时需要配置防火墙规则、NACL或任何其他限制非QA/安全/运营或任何其他指定团队成员访问的方法。
这是必要的,因为我们的应用程序之前位于封闭边界内,没有外部负载均衡器、CDN或WAF。因此,必须一致地推出、配置、检查和测试这些组件。确定潜在实时用户后,我们将部署SIEM系统来跟踪子网内的恶意活动。这将帮助我们在早期阶段预防网络攻击。
企业与初创企业的一个显著区别是SSO的实施。虽然成本可能较高且存在集成挑战,但它标准化了登录方法并保护了认证端点。
上线后安全
我省略了安全加固和法律要求的问题,因为它们因行业和国家而异,直接进入生产后想法。
我们的产品受到监控和保护,是时候采取主动行动了:
- 部署SOAR系统以减轻安全团队负担
- 建立端到端加密
- 基于SIEM/SOAR报告的安全问题学习AI模型
- 建立安全审计流程,包括定期渗透测试、红队和蓝队演练等
如果要持续打击网络犯罪,设置蜜罐并向数据库报告滥用是个好主意。
结语
如您所见,构建安全的初创企业并不像看起来那么复杂,在早期阶段这样做可以避免财务和声誉损失。