泷羽sec《星河飞雪》--云计算底子

打印 上一主题 下一主题

主题 845|帖子 845|积分 2537


声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
声明:本文主要用作技术分享,全部内容仅供参考。任何使用或依赖于本文信息所造成的法律效果均与本人无关。请读者自行判断风险,并遵照干系法律法规。
   感谢泷羽sec 团队的教学
视频地点:泷羽secB站
公众号:泷羽sec
  

云技术底子

背景

无论是防御照旧打击,强盛的底层技术底子都是必要的
从防御的角度,相识底层技术才能知道如何构建防御体系
从打击的角度,相识底层技术才能发现漏洞而且开发漏洞使用
攻击者和防御者都必须相识对方的运作方式
汗青

从前构建系统必要购买装备,租用数据中央机柜,搭建底子设施
处置惩罚器进化,虚拟机将一台机器的资源分成多台机器
提高资源使用率,灵活可拓展,从裸机底子设施到虚拟化底子设施
容器化进一步提高效率,实现服务器,网络和存储的虚拟交付
最新一代的底子设施我们称为“云”,它不是单一的技术,而是技术的集合。
云服务

云是一种it底子设施系统,它将资源的创建抽象在容错,地理分布和可扩展的物理底子设施上。并将本领以服务器的情势按必要交付
易于使用,可以自动创建,无论是服务器,存储,网络等等
云底子架构必须稳定且无频仍中断
地理分布的云底子设施提高容错本领
云必须能够快速扩展以满足需求
公有云服务商

Amazon web services (AWS)
Azure
google(GCP)
华为云,腾讯云,阿里云…
组织可以使用openStack等工具在自己的数据中央搭建私有云。或者部门业务运行在私有云中,部门运行在公有云中
云分类


  • 底子设施即服务(IaaS)

    • 定义:IaaS 提供虚拟化的计算资源,包括服务器、存储和网络资源,用户可以在这些资源上部署和运行任何操纵系统和应用程序。
    • 用户控制:用户拥有较高的控制权,可以管理操纵系统、应用程序和运行时环境,但不必要管理底层的物理底子设施。
    • 例子:Amazon Web Services (AWS) 的 EC2、Microsoft Azure 的虚拟机、Google Cloud Platform (GCP) 的 Compute Engine。
    • 优势:IaaS 适当必要高度定制和控制的企业和开发人员。

  • 平台即服务(PaaS)

    • 定义:PaaS 提供了一个平台,允许用户开发、运行和管理应用程序,而无需关心底层硬件和操纵系统的维护。
    • 用户控制:用户控制应用程序和应用程序的部署环境,但对底层底子设施的控制有限。
    • 例子:Heroku、Google App Engine、Microsoft Azure App Service。
    • 优势:PaaS 适当渴望专注于应用程序开发和部署,而不想管理底层底子设施的开发者。

  • 软件即服务(SaaS)

    • 定义:SaaS 提供完全托管的应用程序,用户可以直接通过互联网访问和使用这些应用程序,而无需安装和维护任何软件。
    • 用户控制:用户通常只能控制应用程序的数据和某些设置设置,对应用程序自己的控制非常有限。
    • 例子:Google Workspace(包括Gmail、Google Drive等)、Microsoft Office 365、Salesforce。
    • 优势:SaaS 适当必要快速部署和使用应用程序的企业和个人,无需关心应用程序的维护和升级。

共享责任模型

共享责任模型(Shared Responsibility Model)是云计算中用来描述云服务提供商和客户在安全和合规方面各自承担的责任的框架。这个模型有助于明确双方在保护数据和应用程序安全方面的脚色和责任。以下是共享责任模型的一些关键点:

  • 云服务提供商的责任

    • 物理安全:云服务提供商负责数据中央的物理安全,包括数据中央的访问控制、监控和安全步伐。
    • 底子设施安全:提供商负责云底子设施的安全,包括网络、服务器和存储的安全。
    • 服务可用性:提供商答应服务的可用性和可靠性,确保服务的一连性和容错本领。
    • 数据加密:虽然某些提供商会提供数据加密服务,但这通常是在客户控制的层面上进行的。

  • 客户的责任

    • 数据安全:客户负责保护存储在云中的数据,包括数据的加密、访问控制和数据备份。
    • 访问管理:客户必要管理对云资源的访问,包括用户认证和授权。
    • 应用程序安全:客户负责开发和部署安全的应用程序,包括代码的安全和应用程序的漏洞管理。
    • 设置管理:客户负责云资源的设置,包括网络设置和安全组的设置。

  • 责任划分的例子

    • AWS:AWS 对数据中央的物理安全负责,如果由于数据中央的物理安全问题导致客户数据被盗,AWS 会承担责任。但如果是由于客户应用程序的漏洞导致数据泄漏,责任则由客户承担。
    • Azure 和 GCP:其他主要云服务提供商也有类似的责任划分模型,夸大了客户在数据和应用程序安全方面的责任。

  • 重要性

    • 共享责任模型夸大了云安全是一个共同的责任,必要云服务提供商和客户共同努力。这种模型有助于客户理解他们在云安全中的脚色,并接纳适当的步伐来保护他们的数据和应用程序。同时,它也提示客户不能完全依赖云服务提供商来包管全部方面的安全,特别是在数据和应用程序层面。

云架构


  • 虚拟化
    虚拟化技术是云计算的基石之一,它允许单个物理服务器被分割成多个虚拟机(VMs),每个虚拟机都可以独立运行自己的操纵系统和应用程序。这种技术带来了以下优势:


  • 资源使用率提拔:通过虚拟化,一台服务器的资源可以被多个虚拟机共享,从而提高了硬件资源的使用率。
  • 灵活性和可扩展性:虚拟机可以根据必要快速创建、删除或修改,使得资源管理更加灵活和可扩展。
  • 隔离性:每个虚拟机都是相互隔离的,一个虚拟机的问题不会直接影响到其他虚拟机。
  • 抽象硬件:虚拟化抽象了硬件安装过程,使得在不同硬件上部署和管理应用程序变得更加简单。
  • 云原生:虽然虚拟化技术并非专为云而生,但它为云计算的发展提供了底子,而且随着技术的发展,虚拟化技术也在不绝改进以更好地顺应云环境。

  • 容器
    容器技术是云计算中的另一种重要技术,它提供了一种轻量级、高效的应用隔离和打包方式。容器的关键特点包括:


  • 轻量级:容器共享宿主机的操纵系统内核,不必要为每个应用运行完整的操纵系统,因此比虚拟机更轻量级。
  • 启动速率快:由于容器不必要启动完整的操纵系统,容器的启动速率通常比虚拟机快得多。
  • 可移植性:容器可以将应用程序及其依赖打包在一起,确保应用程序在不同环境中的一致性。
  • 微服务架构:容器非常适当微服务架构,每个容器可以运行一个微服务,便于开发、测试和部署。
  • 资源效率:容器可以更高效地使用系统资源,由于它们不必要为每个应用维护一个完整的操纵系统。
  • 网络抽象:容器技术提高了网络抽象程度,使得容器间的网络通信更加灵活和高效。
  • 扩展性:容器使得应用的扩展变得更加轻易,可以根据需求快速增加或减少容器实例。
云架构计划


  • 组件选择
    在云架构计划中,选择合适的组件是至关重要的,由于这些选择将直接影响到系统的灵活性、可扩展性和安全性。以下是一些关键考虑因素:


  • 架构确定性:一旦架构确定,后续更改可能会非常困难和昂贵。因此,必要细致规划和选择合适的组件。
  • 绑定与非绑定组件:选择组件时,必要考虑它们是否与特定的云服务提供商绑定。非绑定组件可以提供更好的灵活性和可移植性。
  • 开发、开源或购买:组织可以根据自己的需求和本领,选择自己开发组件、使用开源解决方案或购买贸易产物。
  • 云原生组件:云原生组件专为分布式系统计划,可以更好地顺应云环境的动态性和可扩展性。云原生存算基金会(CNCF)提供了许多云原生技术,但CNCF认证并不是选择组件的唯一标准。
  • 安全编码:安全性是云架构计划中的一个关键考虑因素。必要确保全部组件都遵照安全编码的最佳实践,以减少安全漏洞的风险。
  • 开源组件:使用开源组件可以降低成本,同时使用社区的力量进行创新和改进。但也必要考虑开源组件的安全性和维护问题。

  • 底子设施即代码(IaC)
    IaC是一种将底子设施管理自动化的方法,它允许底子设施被声明性地定义为代码,从而实现版本控制、复现和自动化管理。以下是一些常用的IaC工具:


  • 引导介质(Packer):Packer是一个开源工具,用于创建虚拟机的镜像。它允许定义镜像的设置为代码,并自动生成多种类型的镜像文件。
  • 安装系统(Terraform):Terraform是一个流行的IaC工具,允许使用HCL(HashiCorp设置语言)定义底子设施,并支持多种云服务提供商。Terraform可以自动化底子设施的创建、更新和销毁。
  • 自动设置(Ansible):Ansible是一个开源的自动化工具,用于设置管理、应用部署和任务执行。它使用YAML格式的脚本,可以通过推送方式自动化设置管理和应用部署。
  • 状态强制(Monit):Monit是一个开源的监控工具,用于管理Unix系统上的进程和服务。它可以确保进程和服务按照预期运行,并在出现问题时自动规复。
集成部署


  • 持续集成和持续交付(CI/CD)

    • 持续集成(CI):开发人员频仍地将代码变更集成到主分支。每次集成都通过自动化测试来验证,以便尽早发现集成错误。
    • 持续交付(CD):在持续集成的底子上,CI/CD管道自动将软件变更部署到测试、暂存和生产环境。这使得软件发布更加速速和可靠。

  • 自动化测试和部署(GitOps)

    • GitOps:是一种使用Git仓库来管理底子设施和应用设置的方法。在GitOps流程中,全部的变更都是通过提交到Git仓库来完成的,然后自动触发CI/CD管道进行测试和部署。

  • 弹性和可靠性

    • 冗余:系统计划时必要考虑到冗余,确保任何单点故障都有备份或故障转移机制,以包管业务的持续运行。
    • 故障转移:当主系统发生故障时,自动切换到备用系统,以最小化服务中断。

  • 全球负载均衡(GSLB)

    • GSLB:通过在全球范围内分配流量,GSLB可以提高应用的可用性和响应速率。它通过智能DNS或全局流量管理(GTM)等技术,根据用户位置和服务器负载情况,将用户请求路由到最近的数据中央。

  • 均衡控制和可用性

    • 安全控制:在保护系统免受漏洞和内部攻击的同时,也必要确保系统的可用性和用户体验不受影响。这可能涉及到实施访问控制、安全监控和入侵检测系统等安全步伐。
    • 合规性:确保安全控制符合行业标准和法规要求,如GDPR、HIPAA等。

  • 单点故障(SPOF)

    • 避免SPOF:在系统计划中,必要识别并消除单点故障,以提高系统的弹性。这可能涉及到使用多个数据中央、多个服务实例和数据备份等策略。

云计划模式


  • 微服务架构
    微服务架构是一种将应用程序分解为一组小型、松散耦合的服务的方法,每个服务实现特定的业务功能,并可以独立部署和扩展。


  • 松散耦合:微服务之间通过定义良好的API进行通信,减少了服务间的依赖,使得每个服务可以独立开发和部署。
  • 模块化:每个微服务都是一个独立的模块,专注于单一的业务功能,这使得系统更加模块化,易于理解和维护。
  • 独立修改和重用:由于服务的独立性,可以对单个服务进行修改和重用,而不影响其他服务。
  • 弹性和容错:微服务架构提高了系统的弹性和容错本领,由于单个服务的故障不会导致整个系统的瓦解。
  • 程度扩展:微服务可以程度扩展,即通过增加更多的实例来处置惩罚更多的负载。
  • 安全优势:每个微服务可以独立进行安全加固和隔离,减少了单一服务漏洞对整个系统的影响。
  • 调试复杂性:由于服务间的交互增多,调试变得更加复杂,必要跨服务跟踪事件和日志。
  • 性能问题:服务间的网络通信可能导致性能瓶颈,必要通过缓存、服务发现和负载均衡等技术来优化。

  • 零信任架构
    零信任架构是一种安全模型,它假设网络内部和外部都是不可信的,对每个请求都进行验证和授权。


  • 验证和授权:在零信任架构中,对资源的每个请求都必要验证请求来源是否已授权,然后授予短期访问权限。
  • Open ID Connect(OIDC):OIDC是一种实现零信任架构的常见方法,它提供了一种基于令牌的身份验证和授权机制。
  • 联盟访问:在零信任架构中,用户在授权期间可以访问任何联合内服务,这要求有一个集中的身份提供者(IdP)来管理身份和访问控制。
  • 暗码重置攻击:零信任架构必要特别注意暗码重置的安全性,由于这是攻击者常用的攻击方式之一。
采用这些计划模式可以帮助组织构建更加灵活、可扩展和安全的云应用程序。微服务架构适当必要高度灵活性和可扩展性的系统,而零信任架构则提供了一种全面的安全方法,实用于对安全性要求较高的环境。通过联合这些计划模式,组织可以构建出既高效又安全的云系统。
安全控制

“安全控制”是云计算中至关重要的一部门,涉及到保护云资源和数据免受未授权访问和攻击的策略和技术。以下是对这两个关键领域的详细表明:

  • 网络控制
    网络控制在云安全中扮演着重要脚色,确保只有授权的流量和用户能够访问云资源。


  • 软件定义网络(SDN):SDN是一种网络架构,允许网络管理员通过软件来控制网络流量,而不是传统的硬件路由器和交换机。这使得网络管理更加灵活和可编程。
  • 软件定义广域网(SD-WAN):SD-WAN是一种技术,它使用软件来管理广域网(WAN)的流量,优化网络性能和成本。
  • 网络规则:SDN允许对不同的接口(如API或GUI)设置网络规则,提供更细粒度的访问控制。
  • mTLS(双向TLS):mTLS是一种安全协议,它不但加密客户端和服务器之间的流量,还对双方进行身份验证。这确保了只有拥有有效证书的客户端才能访问微服务。
  • 访问管理:不正确的访问管理可能导致权限提拔和安全漏洞,甚至可能破坏整个底子设施。现代访问管理系统通常使用令牌(如JWT)来提供对服务的短期访问权。
  • JWT(JSON Web Tokens):JWT是一种令牌标准,用于在网络应用环境间安全地通报声明。它通常用于身份验证和信息交换。
  • 强制访问控制(MAC):MAC是一种安全模型,其中访问权限由系统管理员或系统策略强制执行,而不是由数据全部者控制。

  • 身份管理
    身份管理是确保正确用户或系统能够访问正确资源的关键。


  • AD(Active Directory) 和 LDAP(轻量级目录访问协议):这些是传统的企业身份管理解决方案,用于集中管理用户身份和访问权限。
  • AWS IAM(Identity and Access Management):AWS IAM是AWS提供的一种服务,允许用户控制对AWS资源的访问。它允许创建用户、组和脚色,并分配权限。
  • Google OIDC(OpenID Connect):OIDC是一种身份验证协议,建立在OAuth 2.0之上,用于以安全和可扩展的方式进行身份验证。它常用于实现单点登录(SSO)和双因素认证(2FA)。
  • 云身份提供者(IdP):云身份提供者是一种服务,它作为真实身份的来源,提供身份验证和授权。比方,Azure AD是一种云身份提供者,它允许用户使用单一身份登录到多个应用程序和服务。
通过实施这些安全控制步伐,组织可以保护其云环境免受内部和外部的威胁,确保数据和资源的安全。这些步伐必要定期检察和更新,以应对不绝变革的安全威胁。
容器与云

“容器与云”夸大了容器技术在云计算中的重要性和优势。以下是对容器技术及其与云计算关系的详细表明:

  • 容器化的优势
    容器化技术提供了一种轻量级、高效的应用隔离和打包方式,与虚拟机相比具有以下优势:


  • 更小的开销:每个容器不必要运行完整的操纵系统,因此比虚拟机更轻量级,启动更快,资源使用率更高。
  • 更快的启动时间:由于容器共享宿主机的操纵系统内核,它们可以几乎刹时启动,而虚拟机必要启动完整的操纵系统。
  • 更高的效率:容器可以更高效地使用系统资源,由于它们不必要为每个应用维护一个完整的操纵系统。

  • 容器与虚拟化的互补关系


  • 增补而非取代:容器技术并不是要取代虚拟化技术,而是提供了另一种选择,特别是在必要快速部署和管理大量应用实例的场景中。
  • 不同的使用场景:虚拟机适当于必要完整操纵系统隔离的场景,而容器适当于微服务架构和应用组件的隔离。

  • 容器的系统开销


  • 更小的系统开销:容器由于共享宿主机的操纵系统内核,所以系统开销更小,这使得它们在资源受限的环境中体现更好。

  • 应用组件的分离


  • 微服务架构:容器技术使得应用可以被分解成更小的、独立的服务,每个服务都可以独立部署、扩展和维护,这符合微服务架构的原则。
  • 功能分离:容器化允许将应用的不同功能(如搜索、登录、查询、订单处置惩罚)分离到不同的容器中,提高了应用的可维护性和可扩展性。

  • 容器映像和运行


  • 容器映像:容器使用映像作为模板生成,映像包含了运行应用所需的代码、运行时环境、系统工具、系统库等。
  • 计算机硬盘的比喻:可以将容器映像比作计算机硬盘,它包含了启动容器所需的全部内容。
  • 不同发行版文件:容器可以使用不同的操纵系统发行版文件来加载内核,这使得容器可以在不同的环境下运行相同的应用。
容器技术与云计算的联合,特别是在云原生应用的开发和部署中,提供了极大的灵活性和可扩展性。容器化技术已经成为现代云架构中不可或缺的一部门,它使得应用的部署、管理和扩展变得更加轻易和高效。
容器的原形

“容器的原形”显现了Linux容器技术的本质和汗青发展。以下是对这些关键点的进一步表明:
容器的本质

在Linux中,容器并不是一个单一的特性,而是由一系列内核特性组合而成的,这些特性共同工作以提供进程和资源的隔离。这些特性包括:


  • 命名空间(Namespaces):Linux命名空间允许多个进程组共享相同的网络、文件系统、进程ID等资源,但每个组都认为自己是独立的。这是实现容器隔离的核心特性。
  • 控制组(cgroups):cgroups允许对一组进程的资源使用进行细粒度的控制和监控,比方限制内存和CPU使用量。这有助于实现资源的配额和限制。
容器的汗青

容器技术的发展履历了几个重要的阶段:


  • chroot(1970年代):chroot允许进程将根目录改变到指定的目录,从而限制进程对文件系统的访问。虽然chroot提供了肯定程度的隔离,但它并不美满,由于它不能隔离网络和其他系统资源。
  • FreeBSD Jails(1999年):FreeBSD引入了Jails,这是一种更为严酷的隔离机制,可以在chroot的底子上提供更多的安全限制。然而,Linux并没有直接支持Jails。
  • 命名空间(2002年):Linux引入了命名空间,这是一种更为强盛的隔离机制,可以分离内核资源,如网络、进程ID等。
  • cgroups(2006年):谷歌引入了cgroups,这是一种控制组机制,用于限制和监控进程组的资源使用。联合命名空间和cgroups,Linux容器(LXC)项目得以发布。
Linux中的用户命名空间

Linux支持多种用户命名空间,每种命名空间都提供了不同层面的隔离:


  • 挂载(Mount):隔离文件系统的挂载点。
  • 进程ID(PID):隔离进程ID空间。
  • 网络(Network):隔离网络资源和装备。
  • 进程间通信(IPC):隔离进程间通信资源。
  • UTS:隔离主机名和域名。
  • 用户ID(User):隔离用户和组ID。
  • 控制组(Cgroup):隔离资源控制组。
  • 时间(Time):隔离时间干系的资源。
  • syslog:隔离系统日志。
通过这些命名空间,Linux容器可以在不同层面上实现隔离,同时共享宿主机的内核。这种计划使得容器既轻量级又高效,成为现代云计算和微服务架构中的关键技术。
Capabilities

“Capabilities”是Linux内核安全机制的一个重要组成部门,它允许更细粒度的权限控制,特别是在容器和特权分离的上下文中。以下是对Linux Capabilities的进一步表明:
Capabilities的概念

Linux Capabilities是一种安全特性,它允许进程拥有一部门而不是全部的root权限。这使得非特权进程能够执行特定的系统级任务,而不必要拥有完整的root权限,从而提高了系统的安全性。
Docker与Capabilities

Docker容器通常不运行在完全的root权限下,而是通过Capabilities来赋予容器内进程特定的权限。这样做的好处是:


  • 减少攻击面:容器纵然被攻击者入侵,攻击者也无法获得宿主机的完全控制权,由于他们只能访问特定的系统功能。
  • 隔离性:Capabilities强化了容器的隔离性,使得容器内的应用举动更加受限。
常见的Capabilities

以下是一些常见的Linux Capabilities及其用途:


  • CAP_CHOWN:允许进程改变文件的全部者和群组。
  • CAP_NET_ADMIN:允许进程执行网络干系的管理任务,如设置网络接口。
  • CAP_NET_BIND_SERVICE:允许进程绑定到1025以下的端口,这些端口通常用于系统服务。
  • CAP_NET_RAW:允许进程使用原始套接字发送和吸取数据包,通常用于网络诊断和测试。
  • CAP_SYS_ADMIN:提供广泛的系统管理权限,类似于root用户。
  • CAP_SYS_BOOT:允许进程重启系统。
  • CAP_SYS_MODULE:允许加载和卸载内核模块。
  • CAP_SYS_TIME:允许进程设置系统时间。
  • CAP_SYS_CHROOT:允许使用chroot命令改变当前工作目录到指定的根目录。
  • CAP_AUDIT_WRITE:允许写入审计日志。
安全考虑

尽管Capabilities提供了更细粒度的权限控制,但提拔进程的权限仍然存在安全隐患。如果攻击者能够使用这些权限,他们可能会:


  • 破坏系统:通过执行恶意操纵来破坏宿主机或容器的稳定性。
  • 窃取敏感信息:访问或修改敏感数据。
  • 完全控制系统:获得足够的权限来完全控制宿主机或容器。
因此,在使用Capabilities时,必要谨慎选择哪些权限授予容器,以确保不会偶尔中增加安全风险。通常,最佳实践是仅授予容器执行其任务所必需的最小权限集。
垂纶

https://www.bilibili.com/video/BV1BtD6YCEgA?spm_id_from=333.788.videopod.sections&vd_source=e1b579cedee90179a46536a903ce6529

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表