docker安全最佳实践概述
/*************************************************
* Author : Samson
* Date : 08/07/2015
* Test platform:
* gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
* GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu)
* ***********************************************/
1、GRSEC and PaX
加固主机系统。
2、Use Docker in combination with AppArmor/SELinux/TOMOYO
使用强制訪问控制(mandatory access control (MAC))对Docker中使用的各种资源依据业务场景的详细分析进行资源的訪问的控制。
3、Limit traffic with iptables
使用netfilter对网络的出入訪问依据实际应用会被外网訪问的port、应用会与外网的交互网络地址、port、协议等进行梳理,进行白名单的生成并使用uptables进行配置以限制訪问;
4、Do not run software as root:不要使用root用户执行应用程序
在实际应用程序使用中,有一些必须要使用root用户才可以进行的操作,那么从安全的角度,须要将这一部分与仅使用普通用户权限运行的部分分离解耦。那么怎样在docker中使用普通用户权限对不须要root权限运行的部分进行实施呢?
在编写dockerfile时,使用类似例如以下的命令进行创建一个普通权限的用户。并设置创建的UID为以后执行程序的用户,例如以下:
RUN useradd noroot -u 1000 -s /bin/bash --no-create-home
USER noroot
RUN Application_name
docker命令參考:
https://docs.docker.com/reference/builder/#user
https://docs.docker.com/reference/builder/#run
5、docker run时不要使用--privileged选项
默认情况下,Docker容器是没有特权的,默认一个容器是不同意訪问不论什么设备的;当使用--privileged选项时。则此窗体将能訪问全部设备。比如:打开此选项后,即能够进行对Host中的/dev/下有的全部设备进行操作。若非要对host上的某些设备进行訪问的话,能够使用--device来进行设备的加入,而不是全部的设备。
Ref:
https://docs.docker.com/reference/run/#security-configuration
6、Use –cap-drop and –cap-add
使用这两个选项可能对更加细粒度的控制设置,能够加入或删除GNU Linux的能力在此容器中,能够使用的參数名支持http://linux.die.net/man/7/capabilities此网页中的全部能力选项參数。
Ref:
https://docs.docker.com/reference/run/#security-configuration
http://linux.die.net/man/7/capabilities
7、关注docker的漏洞信息、及时更新修复漏洞的安全补丁。
REF:
http://linux-audit.com/docker-security-best-practices-for-your-vessel-and-containers/
docker安全最佳实践概述的更多相关文章
- AWS 架构最佳实践概述(十一)
AWS 架构最佳实践 AWS合理架构的框架支柱 安全性 - 保护并监控系统 能够保护信息.系统和资产 通过风险评估和缓解策略 可靠性 - 从故障中恢复并减少中断 从基础设施或服务故障中恢复 动态获取计 ...
- 使用nodejs构建Docker image最佳实践
目录 简介 准备nodejs应用程序 创建Dockerfile文件 创建.dockerignore文件 创建docker image 运行docker程序 node的docker image需要注意的 ...
- Docker 开发最佳实践
Docker development best practices The following development patterns have proven to be helpful for p ...
- Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比
在DockerCon EU 2015上,Brian Christner阐述了“Docker监控”的概况,分享了这方面的最佳实践和Docker stats API的指南,并对比了三个流行的监控方案:cA ...
- Serilog 最佳实践
Serilog 最佳实践 概述 Serilog是 Microsoft .NET 的结构化日志记录库,并已成为[Checkout.com .NET 的首选日志记录库..它支持各种日志记录目的地(称为接收 ...
- Java 服务 Docker 容器化最佳实践
转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
- 镜像命名的最佳实践 - 每天5分钟玩转 Docker 容器技术(18)
我们已经学会构建自己的镜像了.接下来的问题是如何在多个 Docker Host 上使用镜像. 这里有几种可用的方法: 用相同的 Dockerfile 在其他 host 构建镜像. 将镜像上传到公共 R ...
- 【原创】Docker实战 Dockerfile最佳实践&&容器之间通信
官方最佳实践文档 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#from Docker实战(三十) ...
- Web前端开发最佳实践(1):前端开发概述
引言 我从07年开始进入博客园,从最开始阅读别人的文章到自己开始尝试表达一些自己对技术的看法.可以说,博客园是我参与技术讨论的一个主要的平台.在这其间,随着接触技术的广度和深度的增加,也写了一些得到了 ...
随机推荐
- Welcome-to-Swift-15反初始化(Deinitialization)
在一个类的实例被释放之前,反初始化函数被立即调用.用关键字deinit来标示反初始化函数,类似于初始化函数用init来标示.反初始化函数只适用于类类型. 反初始化原理 Swift会自动释放不再需要的实 ...
- kb-07-RMQ线段树--07(动态规划)
RMQ是一类解决区间最值查询的算法的通称:.一共有四类:在代码中有说明: 下面是ST算法,就是动态规划做法: 来看一下ST算法是怎么实现的(以最大值为例): 首先是预处理,用一个DP解决.设a是要求区 ...
- linux--bash: redis-server: 未找到命令
linux 安装redis过程中出现了异常,make不通过,异常如下: [root@localhost redis-2.8.3]# make cd src && make all ma ...
- testng依赖
Testng提供了两种依赖实现 1.强制依赖:某个测试用例之前需要执行的依赖链中如果有一个失败,那么接下来所有的测试都不会被执行 2.顺序依赖(软依赖):顺序依赖的用处更多是用来检测一个测试链是否按照 ...
- 如何发布自己的服务---zookeeper
人肉告知的方式:如果你发现你的服务一台机器不够,要再添加一台,这个时候就要告诉调用者我现在有两个ip了,你们要轮询调用来实现负载均衡:调用者咬咬牙改了,结果某天一台机器挂了,调用者发现服务有一半不可用 ...
- linux 时间模块 二
Linux中有硬件时钟与系统时钟 在Linux中有硬件时钟与系统时钟等两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启 ...
- Day 22 生成器yield表达式及内置函数(一丢丢)
本日知识点: ################################### #一.上节课复习:在for循环式,调用对象内部的__iter__方法, # 把他们变成了可迭代对象然后for循环调 ...
- AC日记——Propagating tree Codeforces 383c
C. Propagating tree time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- vs2017秘钥
VS2017专业版和企业版激活密钥 需要的请自取- Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM- ...
- Codeforces 889C Maximum Element(DP + 计数)
题目链接 Maximum Element 题意 现在有这一段求序列中最大值的程度片段: (假定序列是一个1-n的排列) int fast_max(int n, int a[]) { int ans ...