# 云原生技术栈

#### 供应层 <a href="#toc1155649343" id="toc1155649343"></a>

<figure><img src="/files/bNv9fY0XYjx6Qwtbf5LL" alt=""><figcaption></figcaption></figure>

供应层是整个云原生最底层，提供构建云原生基础设施的工具，包括了基础设施的创建、管理、配置流程的自动化、容器镜像扫描、签名和存储等，也跟安全相关提供了一些工具可用于设置和实施策略，将身份验证和授权内置到应用程序和平台中。

**自动化和配置**

自动化和配置工具可加快计算资源的创建和配置过程，例如创建虚拟机、网络、防火墙规则、负载均衡器等。主要解决的问题是缩短开发周期

[Automation & Configuration](https://landscape.cncf.io/card-mode?category=automation-configuration\&grouping=category)

热门项目

* &#x20;Chef
* &#x20;Puppet
* &#x20;Ansible
* &#x20;SaltStack
* &#x20;Terraform
* &#x20;KubeEdge

Ansible服务器：关注/etc/ansible/hosts文件

SaltStack远程命令执行（CVE-2020-11651/CVE-2020-11652）

**Container Registry**

主要是负责统一集中存储和提分发容器镜像，使开发者访问。

本质上是一种Web API，允许容器存储和检索镜像，也可以使容器扫描/签名工具来增强所存储的镜像安全性。

[Container Registry](https://landscape.cncf.io/card-mode?category=container-registry\&grouping=category)

热门项目：

* &#x20;Docker Hub
* &#x20;Harbor
* &#x20;AWS/Azure/GCP 托管注册表
* &#x20;artifactory

Docker Hub供应链攻击

Harbor任意管理员注册（CVE-2019-1609）

**安全和合规**

为平台和应用程序加强、监控和实施安全性，使容器和Kubernetes环境中设置策略用于合规性，捕获错误配置，并加固容器和集群。

一些工具很少会被直接使用，例如Trivy、Claire会被Container Registry工具调用。

* &#x20;审计和合规
* &#x20;生产环境
  * &#x20;代码扫描
  * &#x20;漏洞扫描
* &#x20;镜像签名
* &#x20;策略制定和执行
* &#x20;网络层安全

[Security & Compliance](https://landscape.cncf.io/card-mode?category=security-compliance\&grouping=category)

热闹项目：

* &#x20;Falco
* &#x20;in-toto
* &#x20;Notary
* &#x20;Open Policy Agent (OPA)

国内项目有，青藤云安全、探真科技、小佑科技

**密钥和身份管理**

用于安全存储密码和其他secrets

* &#x20;安全分发secret或密钥的方法
* &#x20;身份谁和授权的服务或规范

[Key Management](https://landscape.cncf.io/card-mode?category=key-management\&grouping=category)

热门项目：

* &#x20;Vault
* &#x20;Spiff
* &#x20;OAuth2

#### 运行时层 <a href="#toc1156404333" id="toc1156404333"></a>

<figure><img src="/files/VcxWr2FQSg3DejsAZe6j" alt=""><figcaption></figcaption></figure>

运行时层包含了容器在云原生环境中运行所需的一切。

**云原生存储**

* &#x20;为容器提供云原生存储
* &#x20;标准化容器与存储提供者之间的接口
* &#x20;通过备份和还原操作提供数据保护

[Cloud Native Storage](https://landscape.cncf.io/card-mode?category=cloud-native-storage\&grouping=category)

热门项目：

* &#x20;Minio
* &#x20;CSI
* &#x20;Ceph+Rook
* &#x20;Velero

Minio：默认口令，特权管理不恰当

Ceph：linuxfoundation ceph 认证机制不恰当

**容器运行时**

主要解决的问题：

* &#x20;标准化
* &#x20;安全
* &#x20;隔离

CRI-O、gVisor运行时强化了它们的安全性边界，运行时还为容器设置了资源限制

[Container Runtime](https://landscape.cncf.io/card-mode?category=container-runtime\&grouping=category)

热门项目：

* &#x20;Containerd
* &#x20;CRI-O
* &#x20;Kata
* &#x20;gVisor
* &#x20;Firecracker

Containerd：（CVE-2020-15257）/（RunC/CVE-2019-5736）

CRI-O任意代码执行：（CVE-2022-0811）

**云原生网络**

容器通过云原生网络实现相互之间及和基础设施层之间的通信。

[Cloud Native Network](https://landscape.cncf.io/card-mode?category=cloud-native-network\&grouping=category)

热门项目：

* &#x20;Calico
* &#x20;Weave Net
* &#x20;Flannel
* &#x20;Antrea
* &#x20;NSX-T

#### 编排和管理层 <a href="#toc960619381" id="toc960619381"></a>

<figure><img src="/files/tVPf4wTIWFQZbq2L3gdn" alt=""><figcaption></figcaption></figure>

各层组件必须相互识别以进行通信，并通过协调实现共同的目标。

编排和管理层的工具可实现自动化和弹性伸缩，基于此云原生应用程序天然具有可扩展性。

**编排和调度**

编排和调度是指在集群中运行和管理容器，集群是通过网络连接的一组机器。

容器编排器大多数是指Kubernetes，容器和Kubernetes是云原生架构的核心

Kubernetes 做的事情是“期望状态协调”：将集群中容器的当前状态与期望状态匹配。

该状态需持续与实际状态进行比较。如果预期状态与实际状态不匹配，Kubernetes 会通过创建或销毁对象来进行协调

目的是允许将多个不同的计算机作为一个资源池进行管理，并以声明式方式管理它们

Kubernetes不是CNCF唯一的编排器，另外两个孵化项目：Crossplane、Volcano

[Scheduling & Orchestration](https://landscape.cncf.io/card-mode?category=scheduling-orchestration\&grouping=category)

热门项目：

* &#x20;Kubernetes
* &#x20;Docker Swarm
* &#x20;Mesos

Kubernetes：（CVE-2018-1002105/远程特权提升漏洞）

**协调和服务发现**

现代应用程序由多个单独的服务组成，这些服务之间需要相互协作才能为最终用户提供价值。

云原生架构是动态的，总是在不断变化,服务发现工具可提供一个公共的位置来查找和识别单个的服务。

在 Kubernetes 中，为了使 Pod 可达，引入了一个称为“Service”的新抽象层。Service 为动态变化的 Pod 组提供了单一稳定的地址。

在 Kubernetes 中，当你创建了一个 Service （抽象），你就创建了一组 Pod，这些 Pod 一起通过单一 endpoint （入口）提供一个服务（功能）。

* &#x20;名称解析工具：CoreDNS

[Coordination & Service Discovery](https://landscape.cncf.io/card-mode?category=coordination-service-discovery\&grouping=category)

热门项目：

* &#x20;CoreDNS
* &#x20;Etcd
* &#x20;Zookeeper
* &#x20;Eureka

Etcd：授权不当、API未授权

**远程进程调用**

远程进程调用（RPC，Remote Procedure Call）是一种使应用程序相互通信的特殊技术。它代表了应用程序相互之间构建通信的一种方法。

RPC 为服务之间的通信提供了高度结构化且紧密耦合的接口。gRPC 是非常流行的 RPC 实现，已被 CNCF 采

[Remote Procedure Call](https://landscape.cncf.io/card-mode?category=remote-procedure-call\&grouping=category)

热门项目：

* &#x20;gRPC

&#x20;

**服务代理**

服务代理的本质是一种“中间人”，收集网络流量的信息并对其应用规则。

服务代理的工作原理是拦截服务之间的流量，对它们执行一些逻辑，然后可能会允许流量继续前进。

代理收集关键数据，管理路由（在服务之间平均分配流量或在某些服务发生故障时重新路由），加密连接和缓存内容（减少资源消耗）。

[Service Proxy](https://landscape.cncf.io/card-mode?category=service-proxy\&grouping=category)

热门项目：

* &#x20;Envoy
* &#x20;Contour
* &#x20;nginx

&#x20;

**API网关**

API 网关允许组织将关键功能（例如授权或限制应用程序之间的请求数量）移动到集中管理的位置。

API 网关的工作原理是拦截对后端服务的调用，执行某种增值活动，例如验证授权、收集指标或转换请求，然后执行它认为适当的操作。

同时为团队提供了可以注入业务逻辑以处理授权，速率限制和拒绝请求的地方。

[API Gateway](https://landscape.cncf.io/card-mode?category=api-gateway\&grouping=category)

热门项目：

* &#x20;Kong
* &#x20;Mulesoft
* &#x20;Ambassador

Kong：JWT任意用户登录、API未授权访问

**服务网格**

服务网格技术成为云原生技术栈中最关键的部分

服务网格在平台层的所有服务之间统一增加了可靠性，可观察性和安全性，而无需触及应用程序代码。它们与任何编程语言兼容，使开发团队可以专注于编写业务逻辑。

[Service Mesh](https://landscape.cncf.io/card-mode?category=service-mesh\&grouping=category)

热门项目：

* &#x20;Linkerd
* &#x20;Consul
* &#x20;lstio

Consul：API远程命令执行、未授权访问

&#x20;

#### 应用程序定义和开发层 <a href="#toc347878321" id="toc347878321"></a>

聚焦在帮助工程师构建应用程序并使其运行的工具上

**数据库**

帮助其他应用程序高效地存储和检索数据

[Database](https://landscape.cncf.io/card-mode?category=database\&grouping=category)

热门项目：

* &#x20;Postgres
* &#x20;MySQL
* &#x20;Redis

Postgres：JDBC驱动远程代码执行、弱密码

Redis：未授权、主从RCE

&#x20;

**数据流和消息传递**

消息传递和数据流传输系统为编排系统进行通信提供了一个中心位置。

[Streaming & Messaging](https://landscape.cncf.io/card-mode?category=streaming-messaging\&grouping=category)

热门项目：

* &#x20;Spark
* &#x20;Kafka
* &#x20;RabbitMQ
* &#x20;Nats

Spark：管理员后台未授权、命令注入

RabbitMQ：弱口令

**应用程序定义和镜像构建**

* &#x20;聚集于开发的工具
* &#x20;聚集于运维的工具

[Application Definition & Image Build](https://landscape.cncf.io/card-mode?category=application-definition-image-build\&grouping=category)

* &#x20;Helm
* &#x20;Buildpacks
* &#x20;Tilt
* &#x20;Okteto

**持续集成和持续交付**

持续集成（CI）和持续交付（CD）工具可通过嵌入式质量保证实现快速高效开发过程。

CI/CD 系统必须通过各种测试或验证来决定该过程是继续还是失败。

云原生 CI/CD 系统能够利用 Kubernetes 本身来构建、运行和管理 CI/CD 流程（通常称为流水线）。

[Continuous Integration & Delivery](https://landscape.cncf.io/card-mode?category=continuous-integration-delivery\&grouping=category)

* &#x20;Argo
* &#x20;Flagger
* &#x20;Spinnaker
* &#x20;Jenkins

Jenkins：反序列化、远程代码执行、任意文件读取、任意文件写入

#### 平台层 <a href="#toc1340453913" id="toc1340453913"></a>

将每个层的工具捆绑在一起。

**Kubernetes发行版**

发行版是指供应商以 Kubernetes 为核心（采用未经修改的开源代码，尽管有些人对其进行了修改）并将其打包以进行重新发行

[Platform](https://landscape.cncf.io/card-mode?category=platform\&grouping=category)

* &#x20;AgorKube
* &#x20;Canonical
* &#x20;OpenShift

**托管Kubernetes**

由云服务商提供k8s集群一部分。

* &#x20;Azure
* &#x20;Alibaba Cloud

#### 贯穿所有层 <a href="#toc1905458761" id="toc1905458761"></a>

它贯穿并观察所有层，因此在整个全景图的侧面而不是嵌在某一层。

此类别中的工具包括日志记录 (logging)、监控 (monitoring)、追踪（tracing) 和混沌工程（chaos engineering)。

**日志记录**

日志记录工具将收集、存储和分析这些消息，以追溯错误报告和相关数据。

日志代表应用程序有意输出的消息，它们不一定能查明给定问题的根本原因。

[Logging](https://landscape.cncf.io/card-mode?category=logging\&grouping=category)

* &#x20;Fluentd
* &#x20;Fluentbit
* &#x20;Elastic Logstash

**监控**

监控是指对应用程序进行检测，收集、聚合和分析日志和指标，以增进我们对应用程序行为的理解。

[Monitoring](https://landscape.cncf.io/card-mode?category=monitoring\&grouping=category)

* &#x20;Prometheus
* &#x20;Cortex
* &#x20;Thanos
* &#x20;Grafana

Grafana：任意文件读取、SSRF、弱密码

**追踪**

追踪是日志记录的一种专门用法，可以跟踪请求在分布式系统中移动的路径。

[Tracing](https://landscape.cncf.io/card-mode?category=tracing\&grouping=category)

* &#x20;Jaeger
* &#x20;Open Tracing

**混沌工程**

混乱工程工具以一种可控的方式在系统中引入故障，并针对应用程序的特定实例运行特定的实验。

[Chaos Engineering](https://landscape.cncf.io/card-mode?category=chaos-engineering\&grouping=category)

* &#x20;Chaos Mesh
* &#x20;Litmus Chaos


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lzcloudsecurity.gitbook.io/yun-an-quan-gong-fang-ru-men/di-liu-zhang-yun-yuan-sheng-gong-fang/yun-yuan-sheng-ji-shu-zhan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
