freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

企业安全之浅谈云原生下的安全风险
Notadmin 2023-10-08 17:04:50 396647

前言

前面看了一些关于devops方面的知识,很多文章都提到了云原生。但我对云原生一直都是很迷糊,所以有了这篇文章。

由于本人水平有限,文章中可能会出现一些错误,欢迎各位大佬指正,感激不尽。如果有什么好的想法也欢迎交流~~

云原生安全是什么?

现在云原生很火,好像你还不懂云原生,就真的out了。每个人对于云原生都能说上两句,但是你要问他云原生的明确定义是什么,那么大部分人可能都回到不上来,这是因为云原生本来就没有一个明确的定义,随着时间其定义也在不断地变化。

从字面上看云原生(CloudNative)包含两个方面:云,原生。云很好理解,就是表示应用上云,那么到底原生指的是什么?

云:表示应用程序位于云中,而不是传统的数据中心

原生:表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势

云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。

总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

云原生也是在不断地变化中,不同的时期对其的定义可能也不同。用一句话来说,云原生就是为了适应云环境而出现的一种技术架构,可以充分利用云环境进行弹性扩展收缩(其实未必是说一定要k8s+docker)

云原生与devops

云原生经常和devops两个放到一起说,那么这两者到底有什么区别?

DevOps是一种开发理念,强调的是快速集成快速部署。devops不强调一定要上云,用容器。而云原生一定是与云,容器相关联的。

云原生关键技术

云原生的代表技术包括容器、服务网格(Service Mesh)、微服务、不可变基础设施和声明式API。

容器:容器使得应用服务能从底层架构中分离出来,实现了完全的可移植性(在任何操作系统或环境上运行应用的能力),当应用程序有很多独立组件构成,也可以为每个组件分配一个容器。为快速的部署提供了有力的支持。容器的代表就是docker。

服务网格:服务网格被设计用来保障服务与服务之间进行迅速、可靠和安全的通信。服务网格提供了诸如服务发现、负载均衡、加密、身份鉴定、授权、熔断器模式(Circuit Breaker Pattern)以及其他一系列功能。

微服务:云原生下可以说都采用了微服务的架构,为解决传统单体应用缺点而诞生。在微服务架构下,每个微服务都是通过独立的进程运行的,且微服务间通过轻量级的通信机制进行通信,如RESTful API。微服务架构强调每个微服务都聚焦于某个具体的业务,与具体业务场景相关,因此开发团队可以通过微服务快速响应业务场景的变更(比如业务逻辑变更)。此外,每个微服务都可以独立地开发和部署,且能够弹性扩展,可以有效应对业务量的变化。

不可变基础设施:不可变基础设施不同于传统的运维,服务器在部署后永远不会被修改。如果需要以任何方式更新,如版本升级或是参数配置,需要构建新服务器以替换旧服务器。在不可变基础设施中,服务器的构建通常是以镜像(Image)的方式提供的,任何一个更改都对应一个镜像。这个概念感觉比较难以理解,我认为就是服务所依赖的环境被打包成一个整体,这个整体一般情况下是不会进行改变的,在部署应用时直接通过使用这个整体。

声明式API:API一般分为两种,声明式API和命令式API。命令式的API是给出每一个操作步骤,目标系统只需要按照步骤进行执行,目标系统将结果返回给调用者,调用者对结果进行处理;声明式API是给出一个最终的状态,目标系统对资源进行操作,以到达要求,调用者不需要进行干预。声明式API的优势在于让分布式系统之间的交付变的简单。我们不需要关心任何过程细节。声明式的方式能够大量地减少使用者的工作量,极大地增加开发的效率,这是因为声明式能够简化需要的代码,减少开发人员的工作,如果我们使用命令式的方式进行开发,虽然在配置上比较灵活,但是带来了更多的工作。

1696755101_65226d9def298f88b5b89.png!small?1696755102448

云原生下安全性分析

上面了解了云原生的关键技术,与传统安全相比,这些技术的引入也增加了新的安全风险。大概可以分为下面的几类:

1)容器安全/镜像安全

2)编排工具安全

3)微服务安全

4)服务网格安全

1696755116_65226dac962c41e43338a.png!small?1696755117058

容器安全/镜像安全

容器技术

容器是一种轻量级的虚拟化方式,将应用与必要的执行环境打包成容器镜像,使得应用程序可以直接在宿主机(物理机或虚拟机)中相对独立地运行。

虚拟机通常包括整个操作系统和应用程序,里面运行的是一个真实的操作系统。本质上虚拟机是Hypervisor虚拟化出来的硬件上安装不同的操作系统,而容器是宿主机上运行的不同进程。从用户体验上来看,虚拟机是重量级的,占用物理资源多,启动时间长。容器则占用物理资源少,启动迅速。相对地,虚拟机隔离的更彻底,容器则要差一些。

容器建立在两项关键技术之上:Linux Namespace和Linux Cgroups。

Namespace

Namespace创建一个近乎隔离的用户空间,并为应用程序提供系统资源(文件系统、网络栈、进程和用户ID)。目前大概分为下面的6中隔离机制:

·PID Namespace:不同容器就是通过pid名字空间隔离开的,不同名字空间中可以有相同的pid。
·Mount Namespace:mount允许不同名称空间的进程看到的文件结构不同,因此不同名称空间中的进程所看到的文件目录就被隔离了。另外,每个名称空间中的容器在/proc/mounts的信息只包含当前名称的挂载点。
·IPC Namespace:容器中进程交互还是采用Linux常见的进程交互方法(interprocess communication -IPC),包括信号量、消息队列和共享内存等。
·Network Namespace:网络隔离是通过Net实现,每个Net有独立的网络设备,IP地址,路由表,/proc/net目录。这样每个容器的网络就能隔离开来。
·UTS Namespace:UTS(UNIX Time-sharing Syste
可试读前30%内容
¥ 9.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# 企业安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Notadmin 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
企业安全建设
kkk
相关推荐
Notadmin LV.6
微信公众号:信安路漫漫
  • 88 文章数
  • 155 关注者
安卓7以上系统如何用burp抓包
2025-04-15
浅谈SSO认证原理及常见安全问题
2025-03-25
微信小程序测试技巧总结
2025-03-13
文章目录