您现在的位置: 首页> 观点 > 正文
一文搞懂基于 Kubescape 进行 Kubernetes 安全加固
发布时间:2023-02-15 10:16:49 来源:腾讯云

Hello folks! 今天我们介绍一款开源容器平台安全扫描工具 - Kubescape。作为第一个用于测试 Kubernetes 集群是否遵循 NSA-CISA 和 MITREATT&CK 等多个框架安全部署规范的开源工具,Kubescape 在整容器编排生态中具有举足轻重的意义。在这篇文章中,我们将解析什么是 Kubernetes 加固以及如何基于 Kubescape 工具进行 Kubernetes 生态体系加固。


(相关资料图)

Kubernetes 加固概述

随着云原生理念的不断普及、生态体系的不断完善,越来越多的企业开始迈入云化之路,无论是基于何种缘由。然而,在实施过程中,我们中的大多数人只考虑到如何将现有的业务系统平滑迁移至 Kubernetes 平台,其中有多少人考虑过 Kubernetes 集群的安全性?

根据 RedHat 报道,“人为错误” 是 Kubernetes 安全事故的主要原因。事实上,94% 的受访者承认他们在过去一年中经历过 Kubernetes 和容器环境安全事件。更糟糕的是,超过一半(55%)的受访者在过去一年中由于安全问题最终推迟了 Kubernetes 应用程序生产开发。因此,如果我们尽可能想建设一个最好的系统,至少在人为错误层面要有所改变。

同样,针对基础设施安全,我们可能会在托管环境中实施很多限制,但这还还远远不够,因为如果存在任何人为错误或任何恶意软件/软件包或我们跳过的其他可能原因,大多数这些可能会受到损害初始设置时间。因为,就像我们正在迁移到 Kubernetes 一样,黑客也可以开始针对 Kubernetes 环境进行数据窃取、拒绝服务或加密货币挖掘等。

因此,如果我们计划将 Kubernetes 作为我们将来的业务支撑平台的未来,那么我们有责任保护 Kubernetes 集群,为此我们应该实施加强 Kubernetes 安全性的技术。

那么,什么是 Kubernetes 加固呢?通常我们可以这样理解:Kubernetes 加固主要为保护 Kubernetes 系统而采取的一系列安全执行措施,从而不被外界影响。一些通用性的安全建议如下:

1、尽可能扫描 Container 和 Pod 以查找漏洞或配置错误

2、以尽可能少的权限运行 Container 和 Pod

3、使用网络分离来控制危害可能造成的损害程度

4、使用防火墙技术来限制不必要的网络连接,并采用加密机制

5、使用强身份验证和授权来限制用户和管理员访问以及限制攻击面

6、捕获和监控审计日志,以便管理员可以收到潜在恶意活动的警报

7、定期审查所有 Kubernetes 设置并基于漏洞扫描来确保平台处于安全状态以及进行必要的安全补丁措施。

基于如上所述的通用性建议在某些场景中可能对我们的业务运行有所帮助。例如,我们都知道我们不应该以 root 用户身份运行应用程序,但我们可以看到,许多 Kubernetes 容器服务仍以 root 用户身份运行,并且应用程序亦是如此,即便它们不需要特权执行。即使有警告,开发人员也会构建以 root 身份执行的容器应用程序。为什么?因为这很容易。同时它也很危险。

当然,即使是 Kubernetes 也有其自身的安全问题。因此,我们所能做的便是基于当前的业务现状,遵守网络安全技术报告中的建议,以确保应用程序的安全,并通过补丁、升级和更新等相关措施使得系统保持最新状态,以降低风险。

Kubescape 概述

作为一个 K8s 开源工具,Kubescape 能够提供 Kubernetes 单一管理平台,包括风险分析、安全合规、RBAC 可视化工具和图像漏洞扫描。Kubescape 工具能够扫描 K8s 集群、YAML 文件和 HELM 图表,根据多个框架(如 NSA-CISA、MITRE ATT & CK®)检测错误配置、软件漏洞和早期 RBAC(基于角色的访问控制)违规 CI/CD 管道,即时计算风险评分并显示随时间变化的风险趋势。

基于其易用的 CLI 界面、灵活的输出格式和自动扫描功能,Kubescape 已成为开发人员中增长最快的 Kubernetes 工具之一,为 Kubernetes 用户和管理员节省了宝贵的时间、精力和资源。Kubescape 与其他 DevOps 工具本地集成,包括 Jenkins、CircleCI、Github 工作流、Prometheus 和 Slack,并支持多云 K8s 部署,如 EKS、GKE 和 AKS。

总而言之,Kubescape 能够基于非根容器、特权容器、主机网络访问、匿名请求等多方面属性进 Kubernetes 集群环境的健康扫描,检测错误配置和软件漏洞,即时计算风险评分并显示风险随时间变化的趋势。扫描结果以命令行表格或 JSON 格式显示,显示可能被利用的不同错误配置区域,从而帮助工程师评估 Kubernetes 环境的安全状况。

基于上述所述,Kubescape 功能特性主要体现在 4 个层面:Kubernetes 配置扫描、Kubernetes 容器漏洞扫描、Kubernetes RBAC 简化以及在 CI/CD 工作流中运行等。具体内容可参考如下思维导图:

Kubescape 基本原理

Kubescape 基于 OPA 引擎 和 ARMO 的框架机制。它从 API Server 检索 Kubernetes 对象,并通过运行一组由 ARMO 开发的 Rego Snippets 片段规则来对所流经的对象信息进行扫描。默认情况下,扫描输出结果以“控制台模型”的方式进行打印展示,但也可以以 JSON 或 Junit 格式检索它们以进行进一步处理。

Kubescape 工作原理如下所示:

基于上述架构图所述,OPA 作为一个通用策略引擎,可在我们所构建的 Kubernetes 集群中实施策略编排。基于 OPA ,我们可以计算出: 用户 X 是否能够可以对资源 Z 做 Y 操作? 应该允许查看哪些记录?等。

而作为一种规则,Rego 是 OPA 开发的一种声明性策略语言。基于此,Kubescape 从 API Server 中检索有关 K8s 对象的信息,然后使用 OPA 对其进行扫描。

Kubescape 基于控件模型,在生态系统中,NSA/MITRE/ArmoBest/DevOpsBest指南被分解成小的策略集(可称之为控制)。每个控件都有自己的一组规则,用于扫描集群或管道。

关于 ARMO 的 ArmoBest 框架,当发现最新漏洞时,ARMO 会不断升级此框架。每当行业中发生任何最新的安全漏洞,Armo 都会尝试尽快对其库进行更新。

Kubescape 安装部署

关于 Kubescape 工具的安装较为简单,Kubescape 支持在 Windows、macOS 以及 Linux 等平台上部署使用。

在部署 Kubescape 工具之前,我们需要部署一个 Kubernetes Cluster 并使其处于运行状态。如下所示:

[leonli@Leon kubescape ] % kubectl get po -A -o wideNAMESPACE              NAME                                        READY   STATUS    RESTARTS   AGE     IP             NODE          NOMINATED NODE   READINESS GATESkube-system            coredns-64897985d-v9jcf                     1/1     Running   0          2d17h   172.17.0.2     k8s-cluster              ……kubernetes-dashboard   dashboard-metrics-scraper-58549894f-ns2ld   1/1     Running   0          2d17h   172.17.0.11    k8s-cluster              ……monitoring             prometheus-k8s-0                            2/2     Running   0          2d17h   172.17.0.9     k8s-cluster              monitoring             prometheus-operator-6dc9f66cb7-h7mrp        2/2     Running   0          2d17h   172.17.0.7     k8s-cluster              traefik-v2             traefik-767667c75c-kwjn4                    1/1     Running   0          2d13h   172.17.0.12    k8s-cluster              

我这里以 Linux、macOS 操作系统为例,简要介绍一下 Kubescape 安装部署过程,具体如下。

Linux 安装 Kubescape

这里主要基于 GitHub 下载的 Kubescape CLI 二进制文件进行安装,部署,当然,也可通过命令行一次性安装,具体操作如下:

[leonli@Leon kubescape ] % wget https://github.com/kubescape/kubescape/releases/download/v2.0.176/kubescape-macos-latest

拉取到本地后,然后进行执行即可,具体暂不在本文中赘述。

macOS 安装 Kubescape

基于 macOS 安装 Kubescape 也有多种不同的方式,其简要的安装步骤主要分为如下 2 步:

1、添加 Kubescape GitHub 存储库:

[leonli@Leon kubescape ] % brew tap kubescape/tap

2、执行 Kubescape 安装

[leonli@Leon kubescape ] % brew install kubescape-cli[leonli@Leon kubescape ] % kubescape versionYour current version is: v2.0.176

此时,可借助 -h 命令标志来获取有关某个命令的额外信息,如下所示:

[leonli@Leon kubescape ] % kubescape -h     Kubescape is a tool for testing Kubernetes security posture. Docs: https://hub.armosec.io/docsUsage:  kubescape [command]Examples:  # Scan command  kubescape scan --submit  # List supported frameworks  kubescape list frameworks  # Download artifacts (air-gapped environment support)  kubescape download artifacts  # View cached configurations  kubescape config viewAvailable Commands:  completion  Generate autocompletion script  config      Handle cached configurations  delete      Delete configurations in Kubescape SaaS version  download    Download control,framework,artifacts,controls-inputs,exceptions  help        Help about any command  list        List frameworks/controls will list the supported frameworks and controls  scan        Scan the current running cluster or yaml files  submit      Submit an object to the Kubescape SaaS version  update      Update your version  version     Get current versionFlags:      --cache-dir string   Cache directory [$KS_CACHE_DIR] (default "/Users/leonli/.kubescape")      --disable-color      Disable Color output for logging      --enable-color       Force enable Color output for logging  -h, --help               help for kubescape  -l, --logger string      Logger level. Supported: debug/info/success/warning/error/fatal [$KS_LOGGER] (default "info")Use "kubescape [command] --help" for more information about a command.

Kubescape 实践

Kubescape scan 命令扫描集群中可用每个 Kubernetes 对象和集群上安装的 Helm Charts。它具有以下标志:

1、--submit:此标志将扫描结果发送到 Armo 管理门户

2、--enable-host-scan:此标志部署了ARMOK K8s 主机传感器 DaemonSet,该DaemonSet 从主机收集有关集群的有价值且无限的信息

3、--verbose:此标志显示扫描的所有资源

例如,现在我们扫描下所部署的 K8s Cluster,操作命令如下所示:

[leonli@Leon kubescape ] % kubescape scan --submit --enable-host-scan --format-version v2 --verbose[info] Kubescape scanner starting[info] Installing host scanner……[success] Done scanning. Cluster: k8s-cluster^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^################################################################################ApiVersion: Kind: ServiceAccountName: prometheus-k8sNamespace: monitoringControls: 14 (Failed: 1, Excluded: 0)+----------+--------------------------------+------------------------------------+-----------------------+| SEVERITY |          CONTROL NAME          |                DOCS                | ASSISTANT REMEDIATION |+----------+--------------------------------+------------------------------------+-----------------------+| Medium   | Access container service       | https://hub.armosec.io/docs/c-0053 |                       ||          | account                        |                                    |                       |+----------+--------------------------------+------------------------------------+-----------------------+……ApiVersion: v1Kind: ServiceAccountName: defaultNamespace: traefik-v2Controls: 4 (Failed: 3, Excluded: 0)+----------+--------------------------------+---------------------------------------+------------------------------------+| SEVERITY |          CONTROL NAME          |                 DOCS                  |       ASSISTANT REMEDIATION        |+----------+--------------------------------+---------------------------------------+------------------------------------+| Medium   | Automatic mapping of service   | https://hub.armosec.io/docs/c-0034    | automountServiceAccountToken=false ||          | account                        |                                       |                                    |+          +--------------------------------+---------------------------------------+                                    +|          | Ensure that Service Account    | https://hub.armosec.io/docs/cis-5-1-6 |                                    ||          | Tokens are only mounted where  |                                       |                                    ||          | necessary                      |                                       |                                    |+          +--------------------------------+---------------------------------------+                                    +|          | Ensure that default service    | https://hub.armosec.io/docs/cis-5-1-5 |                                    ||          | accounts are not actively used |                                       |                                    |+----------+--------------------------------+---------------------------------------+------------------------------------+

如上扫描命令将输出集群中每个对象的所有安全分析。由于提供了 “--submit” 提交参数选项,结果将会推送到 Armosec 门户。因此,可以通过登录 Dashboard 查看详细信息,如下所示:

基于上述所展示,在 Dashboard 页面,我们可以看到当前 Kubernetes 集群所承载的所有资源的健康状态。除此之外,我们还可以基于 RBAC 可视化检查谁有权访问哪些资源以及做了什么操作等。例如,如果我们想检查谁可以执行到一个 Pod 中,那么我们可以基于它运行一个查询,Kubescape 会以一种很好的可视化方式向显示结果。我们还可以观测哪些用户可以访问 Kubernetes 仪表板等。

扫描结果分析

我们以 Namespace: monitoring 的 prometheus-adapter 为例,针对其对象的风险分析,具体如下所示:

################################################################################ApiVersion: apps/v1Kind: DeploymentName: prometheus-adapterNamespace: monitoringControls: 35 (Failed: 12, Excluded: 0)+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| SEVERITY |              CONTROL NAME              |                 DOCS                  |                                ASSISTANT REMEDIATION                                |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| High     | Apply Security Context to Your         | https://hub.armosec.io/docs/cis-5-7-3 | spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem=true        ||          | Pods and Containers                    |                                       | spec.template.spec.containers[0].securityContext.runAsNonRoot=true                  ||          |                                        |                                       | spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation=false     ||          |                                        |                                       | spec.template.spec.containers[0].securityContext.capabilities.drop=NET_RAW          ||          |                                        |                                       | spec.template.spec.containers[0].securityContext.seLinuxOptions=YOUR_VALUE          ||          |                                        |                                       | spec.template.spec.containers[0].securityContext.seccompProfile=YOUR_VALUE          |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| Medium   | Allow privilege escalation             | https://hub.armosec.io/docs/c-0016    | spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation=false     |+          +----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+|          | ……                                     |                                       | spec.template.spec.containers[0].securityContext.seLinuxOptions=YOUR_VALUE          ||          |                                        |                                       | spec.template.spec.containers[0].securityContext.capabilities.drop[0]=YOUR_VALUE    |+          +----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+|          | Non-root containers                    | https://hub.armosec.io/docs/c-0013    | spec.template.spec.containers[0].securityContext.runAsNonRoot=true                  ||          |                                        |                                       | spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation=false     |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+| Low      | Immutable container filesystem         | https://hub.armosec.io/docs/c-0017    | spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem=true        |+          +----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+|          | Label usage for resources              | https://hub.armosec.io/docs/c-0076    | metadata.labels=YOUR_VALUE                                                          ||          |                                        |                                       | spec.template.metadata.labels=YOUR_VALUE                                            |+----------+----------------------------------------+---------------------------------------+-------------------------------------------------------------------------------------+

我们可以看到,prometheus-adapter 扫描共涉及 35 个控件,其结果威胁高、中及低都有涉及,依据 Kubescape 给出的建议进行优先级修复。

基于 Kubescape 风险分析具有以下字段:

# 威胁严重性:该字段衡量威胁的严重程度。威胁分为三个级别,即:高、中和低。

# 控件名称:此字段说明正在分析的组件或方面的名称。

# 文档:此字段包含将您重定向到包含有关扫描期间检测到的风险和威胁信息的页面的链接。

# Assistant remediation:此字段包含可以对 YAML 文件或集群进行的更改以消除威胁。

被标记为“严重”/“高”的漏洞,通常基于实际的业务场景建议需要立即修复。在修复过程中可参考文档和协助修复列中的信息来帮助我们修复检测到的漏洞。

常用扫描技巧

1、指定 Yaml 文件扫描

基于不同的场景需求,面对较多的文件时,我们可能需要会针对性的进行文件扫描,从而减少不必要的数据输出。使用 Kubescape 不仅仅针对容器集群的全局性扫描,而且也可以扫描单个文件,具体命令如下所示:

[leonli@Leon kubescape ] % kubescape scan prometheusAdapter-deployment.yaml 

2、文件导出

通常,如果使用 “--verbose” 参数标志,它可能会显示更多的行,终端可能会清除最上面的行,或者 CI 构建日志可能看起来很难全部阅读。为了排序,我们可以将结果输出为 PDF 格式,这样你就可以清楚地阅读它或 CI/CD 过程的一部分,你可以存储在一些公共区域,如 Artifactory Repo 以供安全审查。

可以通过添加 ”--format pdf--output filename.pdf“ 扫描命令来实现扫描结果存档于 PDF 格式 文件中,如下所示,它支持所有扫描命令。

[leonli@Leon kubescape ] % kubescape scan --format pdf --output kubescape_results.pdf

基于上述命令行操作,扫描结果以 .pdf 格式文件将保存在当前集群目录或扫描集群时当前使用的目录中。

3、Git repository 扫描

除上述所述之外,Kubescape 甚至支持从 Git 存储库扫描清单,可以使用以下命令扫描存储库,这将克隆存储库并扫描清单并提交结果。

[leonli@Leon kubescape ] % kubescape scan https://github.com/foxutech/kubernetes

针对“威胁”的可观测性是安全分析中的一个关键组成部分,因为它会让我们时刻保持警惕并告知 Kubernetes 集群中可能被黑客利用的所有风险资源。因此,进行实时的容器集群和 YAML 文件扫描是启动安全审计会话的最佳方式。

因此处内容涉及面较广,由于时间关系,本文解析到此为止,希望对大家有用。关于 Kubescape 更多需要了解的信息,欢迎大家交流、关注!

Adiós !

- EOF -

标签: 漏洞扫描 网络安全 Kubernetes

一文搞懂基于 Kubescape 进行 Kubernetes 安全加固

Hellofolks!今天我们介绍一款开源容器平台安全扫描工具-Kubescape。作为第一个用于测试Kubernetes集群是否遵循N

作文日记150字大全10篇

暑假即将完结,这这期间,大家身边一定有一些有趣的见闻吧,是时候把自己的所见所闻写下来了。怎样写日...

【世界播资讯】18家银行业绩快报全部预喜

截至目前已经有18家银行公布了自家2022年的业绩快报,业绩全红,有16家银行归母净利润增速超过两位数。...

当前观察:“水医生”日夜守护城市“血脉”

“水医生”日夜守护城市“血脉”

俄罗斯总统普京的简介

弗拉基米尔弗拉基米罗维奇普京是俄罗斯政治人物,列宁格勒(今圣彼得堡)出生,现任俄罗斯总统,曾任俄罗...

全球即时:TES鏖战五局拿下JDG,英文流解说盛赞阿水:实力不容置疑!

昨日是LPL夏季季后赛总决赛,双方战队复刻春季赛决赛,依旧是TES与JDG。决赛赛况与春季赛也是一样鏖战五...

【天天快播报】什么是粉碎文件

粉碎文件顾名思义,就是把计算机上的文件彻底删除,不留痕迹。使用一些文件粉碎工具,可以做到这一点。...

【聚看点】莫将“情人节”过成“情人劫”,定南一女子被骗18000元

莫将“情人节”过成“情人劫”,定南一女子被骗18000元

观速讯丨办公室主任职责及工作内容

办公室主任要求语言表达能力、组织协调、分析、解决问题能力强,执行力强。下面是小编整理的办公室主任...

环球今日报丨突然热闹,周末带看10组!节后杭城房产租赁市场热起来,年轻上班族是需求主力

“刚过去的周五、周六、周日,我们带看的租客比较多。”我爱我家颐景园店的房产经纪人小彭说,最近这几...

学习爵士舞的十大好处

学习爵士舞的十大好处爵士舞吸取了不同舞蹈的技巧与风格,追求愉快和活泼的生气,而又极富动感,那么女...

速看:汉口历史风貌区老建筑酒店斩获多项殊荣

汉口历史风貌区老建筑酒店斩获多项殊荣---武汉城市风貌集团旗下“武汉风貌安坻酒店”(已开业)、“巴公...

当前快播:太宰治青花鱼的梗_青花鱼太宰治

1、出自于日本文学家太宰治和中原中也的轶事。2、两个人互相嫌弃,暴躁耿直老哥看不惯太宰说:什么呀你...

天天短讯!送老人礼物

送给长辈礼,一定要慎重。送长辈礼物一定要讲求健康,最重要的是心意。送礼送的要从健康的角度来看出来...

【全球播资讯】考研英语该如何规划复习计划

考研英语该如何规划复习计划我们在进行考研英语的复习时,需要先规划好自己的复习计划。小编为大家精心...

广安市开展园林“打卡”活动

广安市开展园林“打卡”活动

王红林网红_王红林

1、现在听说成绩还特别好,希望以后有个更好的发展。2、王红林是农村的一个小女孩,而且家里生活条件非...

当前报道:阳了应该怎么办-阳性感染者如何用药 02月14日06时四川自贡疫情数据

青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...

每日头条!王力安防605268走势,微涨0.9% 日线以上下影阳线收盘

王力安防605268今日股票价格开盘价8 94,收盘价9 01,今日日线以上下影阳线收盘,近十日股价呈上涨趋...

59岁男士做寿送什么礼物

50岁已经成了。这样的年轻人已经不再像女朋友一样只有过50岁生日了,这样的情况下,作为一个老婆最好的...

两个碗卡住了怎么拿出来

两个碗卡住了怎么拿出来,将碗加热:在两个碗中间两侧,插上两根牙签,然后将碗放到装有开水的锅中,给...

天天通讯!敖包_关于敖包简介

1、敖包是蒙古语,意即“堆子”,也有译成“脑包”、“鄂博”的,意为木、石、土堆。就是由人工堆成的“...

观焦点:当男人恋爱时结局

当男人恋爱时结局,1、当男人恋爱时大结局是白圣珠(蔡正安饰)为了韩泰成(宋承宪饰)前途放弃了梦寐以求的...

世界观点:三年级的作文十年后的自己的作文(共13篇)

三年级的作文十年后的自己的作文第1篇时光像河水一样悄然东去,一去而不复返,十年的时光,我从一个懵懂...

当前速看:飘若浮云矫若惊龙是什么意思

飘若浮云矫若惊龙是什么意思,飘若浮云,矫若惊龙,表示像云一样很轻盈,同盘旋舞动的龙一般敏捷有力。...

中国光大水务(01857.HK)与光大环保订立水务建设分包协议

玳瑁手镯价位大概多少_山龟壳手串真假鉴别图

天天观点:五菱城市潮品玩乐SUV申报图曝光,定名为宝骏悦也

无证驾驶能拘留多少天

天天滚动:“后春节”经济持续发力 沈城消费市场春意浓

快播:ATP最新排名公布:德约只差1周追平纪录,吴易昺飙升39位创新高

环球今头条!华丽摇滚mv视频_华丽摇滚 音乐

潮南高速粤闽界接线协议签订

非洲观察丨中国游客重返肯尼亚 “动物王国”重振旅游经济

世界速读:出行请注意

焦点观察:诸葛亮怎么画简单又帅气_诸葛亮怎么画

【天天报资讯】湖州新市镇:悦动童心迎亚运 全民健康在礼堂

大方巾的各种围法慢动作_大方巾的各种围法视频

墨刀和axure的区别sketch_墨刀和axure的区别

当前热门:瑞星的popwndexe.exe是什么进程网上说是瑞星软件部署系统,我禁用了这个部署系统之后,竟然瑞星没法用

梅克尔细胞癌

天天简讯:首都机场线启动智慧地铁建设

动态焦点:市场资讯:美国总统拜登将访问波兰。

全球时讯:大学生网上赚钱途径有哪些?怎样才能轻松赚零花钱?

咳嗽有痰咳不出?国家级名老中医教您几个方法,排痰清肺养肾脏

环球最资讯丨优秀新闻稿如何撰写?【模板如下】

天天速讯:老人出现“白肺”生命危在旦夕,ECMO上阵成功抢回一命

天天热点!群众里面有坏人呐

世界快讯:夫妻离婚赔偿金一般多少

环球消息!海峡两岸端午赛龙舟

快看点丨ST大洲:目前五九集团股权被冻结不涉及退市风险警示

资讯:热门行业火热招工 上市公司干劲十足

世界速看:十堰大学在哪

当前热门:兵哥哥从火海中救出两位老人

乔迁礼物买什么

棕榈股份(002431.SZ):拟向五矿信托申请不超10亿元信托贷款

世界要闻:逃跑吧少年飞车怎么操作

临时工如何认定为工龄_临时工工龄认定文件

最新:考驾照的详细流程和注意事项

全球热议:欧洲杯2021赛程时间表表格_欧洲杯2021赛程时间表

环球关注:2019你会心动的干净网名大全 好听又不易撞的限量版网名简单

天天资讯:青岛升腾烟火气 地铁客流重回“百万级”

李顺圭是什么星座?

天天速读:澄天伟业董事景在军减持3万股 减持金额63.36万元

速看:冬天送女生什么礼物好,有创意精选清单

环球快讯:百信国际(00574):嘉宝仍正在与承押人就偿付嘉宝结欠承押人的尚未偿还债务进行磋商 继续停牌

消息!晋城一中分数线2021_晋城一中分数线

世界要闻:盗墓笔记重启结局吴邪会死吗_盗墓笔记重启结局

环球速讯:末影龙怎么驯服 末影龙的驯服方法

每日讯息!锡业股份:公司作为下游焊带厂的光伏焊条重要供应商 受益于光伏行业的发展

当前看点!记者探访土耳其 笔直铁轨因强震几乎弯成90度

极光涨4.94%,宣布将在核心产品极光推送中整合ChatGPT技术

热议:无法读取源文件或磁盘怎么办 无法读取源文件或磁盘如何处理

今日聚焦!特伦特争夺战,借助杜兰特迟迟没有表态,湖人优先级依旧落后马刺

资讯:企业所得税汇算清缴网上申报方法

x 广告
x 广告

Copyright ©  2015-2022 太平洋自然网版权所有  备案号:豫ICP备2022016495号-17   联系邮箱:93 96 74 66 9@qq.com