1.云原生架构是什么
云原生架构是一种设计和构建应用程序的现代方法,以微服务、容器化、持续集成和持续部署(CI/CD)等技术为基础,使应用能够在云环境中动态运行。云原生架构强调解耦合、弹性和自动化,开发团队在独立的环境中开发和部署,能够并行工作,快速迭代新功能。
今天分享两个在云原生架构中的核心原则。
1.1 研发过程自动化原则
1.1.1 概念
研发过程自动化原则指的是通过自动化工具和流程提升软件开发交付的效率和质量。这一原则强调持续集成、持续交付(CI/CD)与基础设施即代码(IaC)等实践,自动化构建、测试和集成代码,确保变更能够及时被检测,实现代码的自动化部署。
1.1.2 配置方法
通过采用 IaC(Infrastructure as Code)、GitOps、OAM(Open Application Model)、Kubernetes operator 及其他自动化交付工具,标准化企业内部的软件交付过程,通过配置数据自描述和面向终态的交付过程,让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化。
1.1.2.1 基础设施即代码(IaC)
IaC 是一种管理和配置基础设施的方式,通过代码来定义和提供基础设施,无需手动配置服务器或服务。
- 示例工具:Terraform、Ansible、CloudFormation。
- 实践:建议将基础设施的配置文件放在版本控制系统中,可以方便地追踪和管理所有变化。
1.1.2.2 GitOps
GitOps 是一种运维模型,将所有的系统状态和应用配置保存在 Git 仓库中,实现持续集成和持续交付。
- 流程:开发者通过提交代码到 Git 触发 CI/CD 流程,自动化工具根据 Git 中的声明式配置进行环境的更新和应用的部署。
- 优势:提供了一种清晰的审计和回滚机制,使操作变得更为一致。
1.1.2.3 开放应用模型(OAM)
OAM是一种用于微服务管理的标准框架,它的核心理念是提供一个抽象层,使开发者和运维团队能够定义和管理微服务的部署及其运行时需求,而不必过多关心底层基础设施的具体实现。
- 结构:通过组件(Component)和场景(Trait)来定义应用,组件描述了应用的基本构成,场景则定义了它的运行时配置和策略。
- 优势:开发人员可以更专注于业务逻辑,运维人员则可以统一管理不同组件的运行状态和变更。
1.1.2.4 Kubernetes 操作员
Kubernetes 操作员是一种在 Kubernetes 集群中运行的自定义控制器,其主要目的是管理云原生应用的生命周期。使用操作员时,用户可以以声明的方式配置应用的期望状态,操作员根据这个配置监督和维护实际的状态,根据定义的期望状态对实际状态进行调整。
- 功能:通过编写业务逻辑,Kubernetes Operator 实现了应用的自动化管理,包括部署、升级、备份等反馈机制。
- 优势:融入 Kubernetes 的原生特性,使复杂应用的管理变得简单高效。
1.1.3 特征意义
自动化研发可以引入标准化流程,降低因操作不当而引起的错误,加速软件的构建、测试和部署过程,符合云原生的快速响应和高频迭代的特性,还可以保持不同环境和阶段的一致性,减少环境配置和版本不兼容带来的挑战,让最终交付的应用在不同的云环境中表现一致。通过集成监控和反馈机制,开发团队能够迅速获取应用在生产环境中的运行状态,及时发现和解决问题。
在云原生架构中,资源管理和调度是一个重要的考虑因素。研发过程的自动化可以结合CI/CD(持续集成和持续部署)工具,更有效地管理云资源。
1.1.4 小结
云原生架构通常依赖容器、微服务和大量第三方组件,这些技术在带来灵活性和可扩展性的同时,往往也会增加整体的技术复杂性,整体增大了软件技术栈的复杂度和组件规模,需要充分遵循研发过程自动化原则,才能让应用最大程度发挥云原生的技术优势。
2.1零信任原则
2.1.1定义
在云原生技术中,零信任原则(Zero Trust Principle)是一种网络安全模型,它主张无论是在内部还是外部网络,任何请求都不应被默认信任。所有访问请求都必须经过严格的验证和授权才能被允许。这个原则的核心思想是“永不信任,总是验证”。
2.1.2 核心要素
零信任安全针对传统边界安全架构思想进行了重新评估和审视,并对安全架构思路给出了新的建议,默认情况下不应该信任网络内部和外部的任何人 / 设备 / 系统,需要基于认证和授权重构访问控制的信任基础,诸如 IP 地址、主机、地理位置、所处网络等均不能作为可信的凭证。零信任对访问控制进行了范式上的颠覆,引导安全体系架构从“网络中心化”走向“身份中心化”,其本质诉求是以身份为中心进行访问控制。
零信任第一个核心问题就是身份(Identity),赋予不同的 Entity 不同的 Identity,解决是谁在什么环境下访问某个具体的资源的问题。在研发、测试和运维微服务场景下,Identity 及其相关策略不仅是安全的基础,更是众多(资源,服务,环境)隔离机制的基础;在员工访问企业内部应用的场景下,Identity 及其相关策略提供了灵活的机制来随时随地接入服务。
2.1.3 关键要素
- 身份验证:
- 用户验证:所有用户在访问系统前必须进行强身份验证。这通常包括多因素认证(MFA)。
- 设备验证:确保访问请求来自经过验证的设备,包括设备健康检查和合规性检测。
- 最小权限原则:
- 细粒度权限控制:根据用户的角色和需要授予最小权限,确保用户只能访问所需的资源。
- 动态权限管理:权限应根据实时风险和用户行为动态调整。
- 网络微分段:
- 分段隔离:将网络分成多个小的隔离区段,以限制潜在攻击者的活动范围。
- 内部流量控制:即使在内部网络中,流量也应进行严格控制,防止横向移动。
- 全面监控和审计:
- 实时监控:持续监控所有用户活动和系统行为,检测异常和潜在威胁。
- 审计日志:记录所有访问和操作日志,以便于后续的分析和审计。
- 基于策略的访问控制:
- 策略驱动:访问控制策略应基于上下文(如用户身份、设备状态、请求位置等)进行动态调整。
- 自动化响应:根据策略自动调整访问权限,处理异常活动。
在云原生技术中,零信任原则通过确保无论是内部还是外部用户和设备都需要经过严格验证,避免了传统网络边界的依赖,要求持续验证和最小权限访问,能够有效防止数据泄露和网络攻击。此外,零信任架构与云原生环境的自动化和动态特性高度契合,支持实时监控和响应,使安全管理更加灵活高效。