docker安全最佳实践概述
来源:互联网 发布:js 获取和设置cookie 编辑:程序博客网 时间:2024/05/14 08:13
/*************************************************
* 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对网络的出入访问根据实际应用会被外网访问的端口、应用会与外网的交互网络地址、端口、协议等进行梳理,进行白名单的生成并使用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安全最佳实践概述
- J2ME最佳实践概述
- PHP安全最佳实践
- Powershell最佳安全实践
- Docker日志收集最佳实践
- Docker最佳实践资源汇总
- 最佳实践-android程序安全
- Docker学习笔记 — Dockerfile最佳实践
- Docker运维之最佳实践
- Docker运维之最佳实践
- Docker 镜像优化与最佳实践
- 保障Web安全的一些最佳实践
- 十大PHP最佳安全实践(转)
- 十大PHP最佳安全实践
- iOS核心系统编程最佳实践:安全
- 十大PHP最佳安全实践
- 【总结】AWS上安全的最佳实践
- Kubernetes部署的最佳安全实践
- 2015 SWJTU ACM Summer Training Final Assessment 1st 部分题解
- Android Studio 1.3 正式发布
- Unity Manual之PlayerPrefs 游戏存档
- 编程软件一些配置问题
- CTimeSpan在VC6里是32位(4字节),在VC2013里是64位(8字节)
- docker安全最佳实践概述
- mongoDb的索引
- 菜鸟学习Android开发日志
- Linux Http-Lua-Mode MsgPack(network data)
- 表单与php
- Unity Manual之ScriptableObject 脚本化对象
- NYOJ+细节题+注释的内容很多要注意
- Unity Manual之Vector3 三维向量
- 动画浅析-CAAnimation和CATransition