写点什么

在生产环境中安全地运行 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:002711
用户头像

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

关注

评论

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

AlDente Pro:苹果电脑电池寿命延长工具

Rose

IPQ9574,IPQ5322,IPQ9570-WiFi 7 chip diversity: Performance, application and market differences analysis

wifi6-yiyi

5G router WiFi7

哪里有Axure RP 10激活码? Axure RP 10 for mac永久授权码分享

Rose

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.7版已发布

JackJiang

MobileIMSDK 即时通讯;IM;网络编程 RainbowChat

淘宝商品评论API:获取商品升级迭代后的用户反馈

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

QCA9880 vs QCA9882: Finding the Perfect Wi-Fi Solution for Your Business

wallyslilly

QCA9880 QCA9882

adobe ai 2021功能介绍 及破解安装教程(Mac/win)

Rose

2024海南等保测评机构名单汇总

行云管家

等保 等保测评 海南

CNCC | 超强阵容!CCF-网易雷火联合基金研讨会嘉宾率先揭晓

网易伏羲

人工智能 网易伏羲 cncc

Caffeine学习笔记

京东科技开发者

Adobe Creative Cloud 创意应用软件 可解决adobe安装过程中的大部分问题

Rose

在Abaqus中施加恒定载荷应选择静态还是动态分析步?

思茂信息

载荷 abaqus 有限元分析

强大的局域网远程播放 nPlayer for Mac v1.4.0中文激活版

Rose

基于Ascend C的Matmul算子性能优化最佳实践

华为云开发者联盟

人工智能 性能优化 算子 Ascend

Navicat Premium:数据库全能管家,管理无忧!

Rose

免费BT资源下载利器 BitComet(比特彗星)

Rose

大模型时代的数据治理之道|StartDT Talk

奇点云

人工智能 大数据 AI 数据治理 大模型

火山引擎数智平台VeDI:A/B实验互斥域流量分配体系上线

字节跳动数据平台

ab测试

RAG vs 长上下文 LLMs:谁主沉浮?

Baihai IDP

程序员 AI LLMs rag Baihai IDP

Excelize 开源基础库 2.9.0 版本正式发布

xuri

golang 开源 办公自动化 Excelize 办公软件

Final Cut Pro:视频剪辑新纪元,创意无限!

Rose

如何用支付宝实现靠脸吃饭

盐焗代码虾

支付宝 刷脸支付 一脸通行

GreatSQL 在SQL中使用 HINT 语法修改会话变量

GreatSQL

数据库

用户的声音| 出色的表格解析能力!TextIn文档解析助力金融信息化企业数据底座建设

合合技术团队

金融 #科技

【质量视角】可观测性背景下的质量保障思路

京东科技开发者

为什么说“全面绩效”是企业管理的必选项?

ToB行业头条

阿里架构师:天天高并发,这个时代达不到百万以上的并发量都不叫高并发!!!

程序员高级码农

多线程 架构师 Java高并发 Java’ 高并发‘’

软件测试学习笔记丨人工智能 | mixtral大模型

测试人

人工智能 软件测试

使用豆包MarsCode 来处理 Excel 的数据吧!

豆包MarsCode

人工智能 程序员 AI

全局视角看技术-Java多线程演进史

京东科技开发者

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