前言
我最近与朋友讨论了创办新公司的事宜。我们探讨了一家公司应该经历哪些阶段才能在现代市场中变得成熟和安全。本文将概述这些阶段。建议的方法基于以下原则:
- 默认安全
- 设计安全
- 识别、认证和授权
- 职责分离
您可以按照这个流程操作,假设您是从零开始创建产品,没有任何现有的虚拟网络、身份提供商或母公司网络。但是,如果您拥有任何这些资源,则必须相应地调整流程。
以下是我们将在本文中使用的一些术语定义:
- SIEM - 用于监控网络和应用程序中异常的方法和工具
- SOAR - 获取SIEM产生的事件并应用相应自动化响应的工具
准备阶段
您有一个想法和几位充满热情的开发人员,但至少您希望从安全角度感到安心。您已经设想了财务模型并拥有产品愿景;您几乎准备好投入时间和资金。第一步是选择身份提供商。
为什么?
迟早,您的开发团队会壮大,跨多个未集成服务管理身份将变得令人头疼。您可以选择:
- 公共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模型
- 建立安全审计流程,包括定期渗透测试、红队和蓝队练习等
如果您希望持续打击网络犯罪,设置蜜罐并向数据库报告滥用是个好主意。
结语
如您所见,构建安全的初创公司并不像看起来那么复杂,而且在早期阶段这样做可以避免财务和声誉损失。