写点什么

在生产环境中安全地运行 Docker 容器

  • 2016-12-29
  • 本文字数:1118 字

    阅读完需:约 4 分钟

在生产环境中,强化 Docker 容器的一种方法就是使它们不可变,也就是只读。安全地运行容器的其他方法还包括最小化受攻击面和应用 Linux 安全过程,标准 Linux 安全过程和针对容器环境的特定过程都要应用。

在启动容器时传入–read-only 标记就可以在只读模式下运行它。这可以防止任何进程写入文件系统。任何试图写入的动作都会导致错误。运行这种不可变的基础设施也与其他软件部署流水线的最佳实践相吻合。

尽管不可变性可以阻止任何恶意脚本的执行,可以禁止通过在容器里运行的其他软件暴露出来的漏洞而引起的改动。但是在现实生产环境中,这种模式又是不是适用于应用程序呢?比如,要产生的日志文件和要使用数据库的应用程序就需要可写性。

写日志的一个可能的解决方案可以是使用一个集中的日志系统,比如 Elasticsearch/Logstash/Kibana(ELK),这样所有的日志都被收集在一个中心节点,可能是在另一个容器中,就不是用户可以直接访问的了。另一种替代的方案是在启动容器时,通过使用–log-driver 标记将日志导出到容器之外。对于那些需要对 /tmp 之类的临时目录有写入权限的应用程序,一种解决办法是在容器里为这些目录加载一个临时的文件系统

终端用户不能直接访问数据库,所以风险较低。然而,这并不排除受到攻击的可能,除非面对用户的应用程序得到了强化。

在不可避免地要有一个可写的文件系统的情况下,Docker 提供了审计和变化的回滚功能。在 Docker 容器里的文件系统是作为一系列层的堆叠。当创建一个新容器时,将在顶部添加一个新层,该层可以写入。Docker 存储驱动程序隐藏了这些细节,并将它作为一个普通的文件系统交付给用户。对正在运行的容器的写入将写入此新层。这通常被称为写时拷贝(Copy-On-Write,COW)。

在 Docker 容器里很容易检测到配置漂移或预期的配置变更。“docker diff”命令可以显示对文件系统的更改——无论更改操作是文件添加、删除还是修改。

除了在可能的情况下运行一个只读容器,我们提出以下建议,以确保在生产环境中容器的安全:

  • 运行一个 Alpine Linux 之类的最小的镜像,Alpine Linux 是基于安全思想而设计的。它的内核上打了一个 grsecurity 的非官方移植的补丁。 Grsecurity 是一套对 Linux 内核的安全增强方法,它包括权限控制以及消除基于漏洞的内存崩溃的可能,具体方法是将那些使系统可能被攻击的方法减少到最少。
  • 限制对 CPU、RAM 等资源的使用,以防止 DoS 攻击。
  • 在操作系统中配置线程和进程限制。
  • 采用 sysctl 之类标准的 Linux 内核强化程序。
  • 每个容器中只运行一个应用程序。建议这么做,是因为它减小了受攻击面,即对于一个给定的容器,可能的漏洞数量就只取决于在该容器上运行的应用程序了。

阅读英文原文 Running Docker Containers Securely in Production

2016-12-29 18:003178
用户头像

发布了 152 篇内容, 共 80.5 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

低代码平台,企业业务创新的最佳路径

元年技术洞察

低代码 数字化转型 #方舟平台

糟糕,数据库异常不可用怎么办?

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

更快更稳更安全!天翼云CDN了解一下

天翼云开发者社区

这个算法不一般,控制拥塞有一手!

天翼云开发者社区

【设计指南】避免PCB板翘,合格的工程师选择这样设计!

华秋PCB

生产 PCB PCB设计

HummerRisk V0.6.0:列表高级搜索,对象存储、操作审计扩充支持

HummerCloud

云安全 云原生安全

公司CTO:高性能开发,你不会Netty,怎么好意思拿20K?

钟奕礼

Java 程序员 java面试 java编程

聚焦稳定性,Dubbo 发版规划公布

Apache Dubbo

Java 开源 微服务 云原生 dubbo

架构训练营 模块一作业

提姆

iptables 命令和 iptables.service 服务的区别

山河已无恙

12月月更

阿里程序员给我一份Java笔、面试宝典,看目录的那一刻,我傻了!

钟奕礼

Java 程序员 java面试 java编程

老板答应了我,只要回答对几道简单的Spring问题,就给我涨3K

钟奕礼

Java 程序员 java面试 java编程

StoneDB 首席架构师李浩:如何选择一款 HTAP 产品?

StoneDB

MySQL HTAP 数据库· StoneDB 12 月 PK 榜

数字先锋| 农业农村部大数据公共平台基座上线,天翼云擎起乡村振兴新希望!

天翼云开发者社区

当ChatGPT火爆全球,中国交互AI平台「聆心智能」获得千万元融资

硬科技星球

Redis事务、pub/sub、PipeLine-管道、benchmark性能测试详解

C++后台开发

redis 中间件 性能测试 后端开发 C++开发

不让Bug陪你过年,StarRocks年终抓虫派对重金相邀!

StarRocks

#数据库

天翼云电脑为医共体建设加buff!

天翼云开发者社区

京东内部流传的MyBatis笔记,短小而精悍,处处是源码细节

小小怪下士

Java 源码 程序员 mybatis

太强了!GitHub大佬白嫖的SpringCloud微服务进阶宝典,啃完感觉能吊锤面试官!

程序知音

Java 微服务 SpringCloud java架构 后端技术

带你了解基于Ploto构建自动驾驶平台

华为云开发者联盟

人工智能 自动驾驶 华为云 12 月 PK 榜

TDH 社区版上新宽表数据库 Hyperbase,轻松实现海量数据的毫秒级精确检索

星环科技

数据库

北京等保备案预约平台是哪个?多久能办好?

行云管家

等保 等保测评 等保备案 北京

拼多多电商部java岗三面落选,记下的面试题,不睡觉都要背下来!

钟奕礼

Java 程序员 java面试 java编程

云服务器好用吗,有哪些特点?

Finovy Cloud

云服务器 云渲染

Spring 事务失效的六种情况

江南一点雨

spring 事务

Java程序员:为了跳槽刷完1000道真题,没想到老板直接给我升职了

钟奕礼

Java 程序员 java面试 java编程

民办二本程序员阿里、百度、平安等五厂面经,5份offer(含真题)

钟奕礼

Java 程序员 java面试 java编程

当线下门店遇上AI:华为云ModelBox携手佳华科技客流分析实践

华为云开发者联盟

人工智能 数字化转型 华为云 12 月 PK 榜

在生产环境中安全地运行Docker容器_Linux_Hrishikesh Barua_InfoQ精选文章