云原生场景下的安全左移
本博客地址:https://security.blog.csdn.net/article/details/129430859
一、安全左移概述
安全左移需要考虑开发安全、软件供应链安全、镜像仓库、配置核查这四个部分。
首先是开发安全,安全团队需要关注代码漏洞,比如使用代码检查工具进行静态代码分析或动态运行时分析,找到因缺少安全意识造成的漏洞;此外,应重点检查代码中是否包含用户凭证、存在的密码硬编码等。
其次是软件供应链安全,也就是项目使用到的第三方软件库的安全,可使用软件成分分析(SCA)技术以发现项目中用到的第三方软件库(特别是开源软件),分析相关代码版本库,将其与漏洞库比较,如有匹配则告知存在漏洞。
再次是镜像仓库,应使用镜像漏洞扫描工具持续对自有仓库中的镜像进行持续评估,对有安全风险的镜像进行及时更新。
最后是配置核查,比如暴露面核查、服务器配置加固等,这部分可以最大程度提升攻击者发现脆弱资产和利用漏洞的难度。
基于以上,我们发现开发安全、软件供应链安全、配置核查其实和传统的安全左移基本是没有区别的,因此我们本文重点介绍镜像仓库的安全。
二、容器镜像安全
2.1、镜像构建安全
镜像构建的方式通常有两种:基于容器直接构建或基于Dockerfile构建。建议所有的镜像文件由Dockerfile创建,因为基于Dockerfile构建的镜像是完全透明的,所有的操作指令都是可控和可追溯的。
镜像构建存在的风险项通常包括:
1)基础镜像并不是由可信的组织和人员发布的,镜像本身存在后门或者其他风险项;
2)在Dockerfile中存储敏感信息,如配置服务时使用明文固定密码或凭证等;
3)安装不必要的软件扩大了攻击面等。
针对以上问题,可以从下面几方面来加固镜像构建安全。
1、验证镜像来源
为了保证镜像内容可信,建议开启Docker的内容信任机制。内容信任机制为向远程镜像仓库发送和接收的数据提供了数字签名功能,这些签名允许客户端验证镜像标签的完整性和发布者。默认情况下内容信任机制是被禁用的,可以通过执行下面指令完成或者在Docker的配置文件中配置。
export DOCKER_CONTENT_TRUST=1
2、镜像轻量化
只安装必要的软件包,这不仅在提高容器性能方面有很大帮助,更重要的是减少了攻击面。
3、正确使用镜像指令
在构建镜像时要选择恰当的指令。比如,若需要引入外部文件,在Dockerfile中能用COPY指令就不要使用ADD指令,因为COPY指令只是将文件从本地主机复制到容器文件系统,ADD指令却可以从远程URL下载文件并执行诸如解压缩等操作,这可能会带来从URL添加恶意文件的风险。
4、敏感信息处理
比如Dockerfile中不能存储密码、令牌、密钥和用户机密信息等,即使在创建好容器后再删除这些数据也会造成风险,因为在镜像的历史记录中仍能检索到这些数据。
2.2、镜像仓库安全
1、公共仓库安全
1)在选择镜像时,应使用官方发布的最新版本的镜像,并保持定时更新
2)下载的镜像要经过漏洞扫描评估
3)对于提供服务的镜像,不仅要从操作系统层面进行扫描,还要从应用层面进行扫描
4)对于提供了公开Dockerfile的镜像优先选择自己构建,可避免镜像后门的植入,保证镜像构建过程可控
2、私有仓库安全
私有仓库主要是Harbor:
1)需要启用HTTPS
2)不能使用默认的密码
3)开启防暴力破解机制
4)严格控制挂载卷权限
2.3、容器镜像安全检测
目前比较流行的开源镜像扫描引擎有Clair、Anchore等。
镜像检测的核心目前仍然是已知系统CVE检测。扫描器获取到镜像后,将它分离成相应的层和软件包,然后将这些包与多个CVE数据库包的名称和版本进行对比,从而判定是否存在漏洞。通常开源的镜像漏洞扫描工具会获取各发行版官方途径安装的软件,而至于软件开发者自己部署的非官方软件,这些扫描工具一般是不覆盖的。
2.4、容器镜像传输安全
容器镜像在下载和上传时须保证完整性和秘密性,提高安全性的做法如下:
1)数字签名
上传者主动给要上传的镜像签名,下载者获取镜像时先验证签名再使用,防止其被恶意篡改。
2)用户访问控制
敏感系统和部署工具(注册中心、编排工具等)应该具备有效限制和监控用户访问权限的机制。
3)尽可能使用支持HTTPS的镜像仓库
为避免引入可疑镜像,用户谨慎使用–insecure-registry选项,以免连接来源不可靠的HTTP镜像仓库。
三、总结
镜像安全是开发安全的最右侧,也是运营安全的最左侧,位置非常关键。保证镜像和仓库的安全,对于贯彻开发运营一体化的安全具有重要的意义。
要保证应用全生命周期的安全,安全左移后还需要考虑重新将安全控制右移,通过运行时检测和响应及时发现并处置威胁。
相关文章:
云原生场景下的安全左移
本博客地址:https://security.blog.csdn.net/article/details/129430859 一、安全左移概述 安全左移需要考虑开发安全、软件供应链安全、镜像仓库、配置核查这四个部分。 首先是开发安全,安全团队需要关注代码漏洞,比如使用代码检查工具进…...
mysql面试经典问题
文章目录 1. 能说下myisam 和 innodb的区别吗?2. 说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?3. 那你知道什么是覆盖索引和回表吗?4. 锁的类型有哪些呢5. 你能说下事务的基本特性和隔离级别吗?6. 那ACID靠什么保证的呢?7. 那你说说什么是幻读,什么是MVCC?幻读什…...
微信小程序|基于小程序+C#制作一个考试答题小程序
基于小程序+C#制作一个考试答题小程序打破传统线下考试答题的边界线问题,使考试不用再局限与某个统一的场所,只要有设备,哪里都能考试。 一、小程序...
【1605. 给定行和列的和求可行矩阵】
来源:力扣(LeetCode) 描述: 给你两个非负整数数组 rowSum 和 colSum ,其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和。换言之你不知道矩阵里的每个元素,但是你知…...
Linux命令之nano命令
一、nano命令简介 nano是一个小型、免费、友好的编辑器,旨在取代非免费Pine包中的默认编辑器Pico。nano不仅复制了Pico的外观,还实现了Pico中一些缺失(或默认禁用)的功能,例如“搜索和替换”和“转到行号和列号”。nan…...
IT项目管理(作业1)
一.单选题(共12题,100.0分) 1.以下哪项是项目的一个实例?( ) A、改进现有的业务流程或程序B、为公司运营提供信息技术支持C、批量生产一种新近开发出来的家用电冰箱D、管理一个公司 我的答案:A 2.下列哪项不能成为项目结束的理由?( ) A…...
蓝桥杯嵌入式(G4系列):串口收发
前言: 在整个蓝桥杯考试中涉及串口的次数还是较多,这里写下这篇博客,记录一下自己的学习过程。 STM32Cubemx配置: 首先,我们点击左侧的Connectivity选择USART1进行如下配置。 使能串口中断 在左侧的管脚配置上也要做出…...
「兔了个兔」玉兔踏青,纯CSS实现瑞兔日历(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…...
第17章 关于局部波动率的一些总结
这学期会时不时更新一下伊曼纽尔德曼(Emanuel Derman) 教授与迈克尔B.米勒(Michael B. Miller)的《The Volatility Smile》这本书,本意是协助导师课程需要,发在这里有意的朋友们可以学习一下,思…...
反转链表合并两个有序链表链表分割链表的回文结构相交链表
反转链表来源:杭哥206. 反转链表 - 力扣(LeetCode)typedef struct ListNode ListNode; struct ListNode* reverseList(struct ListNode* head) {if (headNULL){return NULL;}ListNode* prevhead;ListNode* curhead->next;ListNode* furNUL…...
联想触摸板只能单击,二指三指失效
问题背景 这问题是我笔记本两三年前重装win10系统后出现的,当时有鼠标懒得弄。今天发现没鼠标后,触摸板连二指滑动都没有太麻烦了,所以决定弄一下。 联想笔记本,win10系统重装后出现的问题。 1.鲁大师,联想电脑管家 …...
mysql 删除表卡死,或是截断(truncate)卡死解决办法
利用工具进行truncate表的时候,一直运行,运行了十几分钟也没有成功。中止之后再运行也是一样。但是删除表的数据以及查询表数据都是可以的。猜测是锁死了。 使用 show processlist; 发现Waiting for table metadata lock 问题; mysql> s…...
ORACLE P6 EPPM 架构及套件介绍(源自Oracle Help)
引言 借助官方帮助的内容, 我水一篇文章,翻译了下文 P6EPPM架构 P6各套件 P6:大多数用户几乎完全依赖在标准网络浏览器中运行的 P6 网络应用程序。简称为 P6,它是管理项目的主要界面。P6 移动版:允许团队成员提供任…...
Android开发面试:数据结构与算法知识答案精解
目录 数据结构与算法 线性表 数组 链表 栈 队列 树 二叉树 红黑树 哈夫曼树 排序算法 冒泡排序 选择排序 插入排序 希尔排序 堆排序 快速排序 归并排序 查找算法 线性查找 二分查找 插值查找 斐波拉契查找 树表查找 分块查找 哈希查找 动态规划算法…...
京东前端手写面试题集锦
实现call方法 call做了什么: 将函数设为对象的属性执行和删除这个函数指定this到函数并传入给定参数执行函数如果不传入参数,默认指向为 window // 模拟 call bar.mycall(null); //实现一个call方法: // 原理:利用 context.xxx self obj.…...
【JDK动态代理】及【CGLib动态代理】:Java的两种动态代理方式
Java的两种动态代理方式动态代理是什么?JDK动态代理CGLib动态代理CGLib 底层原理CGLib 实现步骤两者区别Spring AOP原理--动态代理动态代理是什么? 动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的…...
《程序员面试金典(第6版)》面试题 04.05. 合法二叉搜索树
题目描述 实现一个函数,检查一棵二叉树是否为二叉搜索树。 示例 1: 输入: 2/ \1 3输出: true 示例 2: 输入: 5/ \1 4/ \3 6输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。 解题思路与代码 使用…...
Nginx 反向代理技术梳理
Nginx 反向代理技术梳理 使用反向代理脑图 域名 A 可以解析找到 CDN 缓存 用户点击 APP 即通过 URL 发送 HTTPS 请求域名会进入阿里云的 DNS 服务器,解析域名会做第一级负载均衡通过 CDN 解析出域名,通过阿里云配置转发到 CDN 缓存服务器 CDN 有数据则直…...
华为OD机试 - 整数编码(Java) | 机试题+算法思路+考点+代码解析 【2023】
整数编码 题目 实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。 编码规则如下: 1、编码时7位一组,每个字节的低7位用于存储待编码数字的补码。 2、字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节,置0表示当前字节为最后一个字…...
蓝桥杯冲击01 - 质数篇
目录 前言 一、质数是什么 二、易错点 三、试除法判断是否为质数 四、质数常考三大模型 五、真题练手 前言 距离蓝桥杯还有一个月,高效复习蓝桥杯知识, 质数相关的题目在蓝桥杯中经常出现。例如,2016年蓝桥杯省赛初赛第四题就是要求判…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
