一、简介
不管是防御系统还是进攻系统,强大的底层技术基础都是必不可少的。
从防御的角度来看,只有了解底层技术,我们才能知道如何构建防御体系。
从进攻的角度讲,了解底层技术才能发现漏洞并开发出漏洞利用的方法。
所以,攻击者和防御者都必须清楚对方的运作方式。
二、云技术历史
以前构建系统的时候,需要购买设备、租用数据中心机柜,然后搭建基础设施。
随着处理器的不断进化,虚拟机出现了。它能把一台机器的资源分成多台机器来使用,提高了资源利用率,变得更加灵活可拓展,实现了从裸机基础设施到虚拟化基础设施的转变。
接着,容器化技术登场,进一步提高了效率,实现了服务器、网络和存储的虚拟交付。现在,我们把最新一代的基础设施称为“云”,它可不是单一的技术哦,而是众多技术的集合。
三、云服务
云是一种 IT 基础设施系统,它将资源的创建抽象在容错、地理分布和可扩展的物理基础设施之上。并以服务器的形式按需求交付能力,非常易于使用,可以自动创建服务器、存储、网络等等。
云基础架构必须稳定,不能频繁出现中断。
地理分布的云基础设施能够提高容错能力,而且云必须能够快速扩展,以满足各种需求。
有很多公有云服务商,比如 Amazon Web Services(AWS)、Azure、Google(GCP),还有华为云、腾讯云、阿里云等等。组织可以使用 OpenStack 等工具在自己的数据中心搭建私有云,或者一部分业务运行在私有云中,一部分运行在公有云中。
四、云分类
1. 基础设施即服务(Iaas):就像提供建筑材料和工具,让你可以自己搭建房子。
指的是把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。在这种模式下,云服务提供商负责管理机房基础设施、计算机网络、磁盘柜、服务器和虚拟机等,而用户则可以在此基础上构建自己的应用程序和服务。用户需要自行安装和管理操作系统、数据库、中间件、应用软件和数据信息。
2. 平台即服务(PaaS):类似有了基本框架的房子,你只需进行装修和布置。
PaaS平台通常包括一系列服务和功能,如应用程序开发工具、应用程序运行环境、数据库、消息队列、缓存等。这些服务可以帮助开发者快速部署和扩展应用程序,同时提供自动化管理的功能,如自动扩展、自动备份、自动恢复等,以提高应用程序的可靠性和可用性。
为用户提供了一个基于云端的开发和部署环境。在这个平台上,用户可以开发、测试、部署和管理应用程序,而无需自行构建和维护通常与这些过程相关的复杂基础设施。
3. 软件即服务(SaaS):直接给你一个装修好可以直接入住的房子。
它是一种基于云计算的软件部署模式,在这种模式下,第三方供应商在云基础设施上构建应用程序,并通过互联网向客户提供这些应用程序,客户通常通过订阅的方式按需支付服务费用,而无需购买、安装和运维软件及相关硬件。SaaS应用程序可以在任何有互联网连接和网络浏览器的设备上访问,用户无需在本地设备上安装和运行软件。
五、云架构
1. 虚拟化:把一台机器的资源分成多台虚拟机器,多台裸机汇集形成资源集群,隔离资源的使用,灵活且可扩展资源池。它抽象了硬件安装过程,但仍有改进空间,并非专为云而生。技术栈的灵活性和可定制性提升,促使了容器的出现。
2. 容器:容器就像一个个独立的小空间,允许开发人员与堆栈各部分灵活交互,实现按需生成服务,提高网络抽象程度,方便应用迁移扩展,更高效地使用资源。系统管理和网络工程可以外包给其他公司。云是多种技术的集合。
六、云架构设计
1.组件选择
确定架构(难改),选择绑定/非绑定组件(开发、开源、购买)
云原生组件: 为分布式系统设计,CNCF认证(非必须)、安全编码、开源(部分)
laC:引导介质(Packer)、安装系统(Terraform)、 自动配置(Ansible)、 状态强制
(Monit)
2.集成部署
使用持续集成和持续交付(CICD) 管道来构建环境
包括测试、测量和扫描代码更改的自动化测试和部署(GitOps)
3.弹性可靠
任何单点故障都有故障转移或其他机制,使业务可以持续提供(冗余)
GSLB (智能DNS、GTM)解决客户单访问的单点故障隐患
4.平衡控制
控制保护系统免受漏洞和内部攻击的组件,应平衡控制和可用性
七、云设计模式
云架构设计不必从头开始,采用已检验的设计模式是最佳选择。
1. 微服务架构:为松散耦合、模块化服务而设计,微服务协同工作完成整体服务。每个服务都可以独立修改代码和重用,提高系统整体弹性和容错。
大多数云利用微服务架构,云原生应用被构建充当微服务,便于水平扩展。安全优势是每个微服务应用强化、隔离,单一服务漏洞对整体系统影响小。缺点是调试更复杂,需要跨不同服务跟踪事务;性能可能有短板。
2. 零信任架构:对资源的每个请求都需要验证来源已授权,然后授权短期访问(用令牌)。实现零信任架构的一种常见方法是 Open ID Connect(OIDC)联盟访问。
授权处于活动状态时可以访问任何联合内服务。
密码重置是针对零信任架构的常见攻击方式。
八、安全控制
1. 网络控制:
传统架构用防火墙实现网络控制,云环境网络抽象为 SDN、SD WANSDN 可以对不同的接口(如 API 或 GUI)设置网络规则。
通过 mTLS 不仅能加密流量,还能对客户端进行身份验证,有证书才能访问微服务。不正确的访问管理可导致权限提升,甚至破坏整个基础设施。
现代访问管理系统多使用令牌进行访问控制,提供对服务的短时访问权。
JWT 通常用于访问云端资源,伪造和破解密码是常见攻击手段。
另一种类型的权限控制机制是强制访问控制 MAC。
2. 身份管理:企业通常用 AD、LDAP 进行身份管理。
AWS IAM 是身份和访问管理的公共云服务。
Google 联盟认证 OIDC 经常用于 2FA。
云身份提供者(IdP)作为真实身份来源,是更安全的解决方案,比如 Azure AD。
九、容器与云
虚拟化中每个 VM 需要运行自己的操作系统,大大增加了总体开销。
容器化是更现代的架构,容器共享内核与硬件,更快、更小、更高效。
容器是对虚拟化的补充,而非取代。
容器的系统开销更小,可以进一步分离应用组件,比如搜索、登录、查询、订单功能分开。
容器使用映像作为模板生成,映像相当于计算机硬盘。容器使用不同发行版文件加载内核,运行容器。