Update the term to better meaning

pull/15/head
Baohua Yang 2014-09-22 10:56:15 +08:00
parent 3e9f1343f0
commit 07edb7e3c1
2 changed files with 13 additions and 11 deletions

View File

@ -56,7 +56,7 @@
* [内核名字空间](security/kernel_ns.md)
* [控制组](security/control_group.md)
* [服务端防护](security/daemon_sec.md)
* [内核权限](security/kernel_capability.md)
* [内核能力机制](security/kernel_capability.md)
* [其他内核安全特性](security/other_feature.md)
* [结论](security/summary.md)
* [底层实现](underly/README.md)

View File

@ -1,17 +1,20 @@
##内核权限
默认情况下Docker启动的容器被严格限制只允许使用内核的一部分权限capability包括如下几个方面。
##内核能力机制
Linux系统支持细粒度的权限访问控制系统。比如一个Web服务进程只需要绑定一个低于1024的端口并不需要特权权限。那么它只需要被授权`net_bind_service`功能就可以了。此外,还有很多其他的类似功能,避免获取特权权限。
能力机制Capability是Linux内核一个强大的特性可以提供细粒度的权限访问控制。
Linux内核自2.1版本起就支持能力机制,它将权限划分为更加细粒度的操作能力,既可以作用在进程上,也可以作用在文件上。
这对加强Docker容器的安全有很多好处。通常在服务器上会运行一堆需要特权权限的进程包括有ssh、cron、syslogd硬件管理工具模块例如负载模块、网络配置工具等等。容器跟这些进程是很不同的因为大部分进程都可由容器外的支持系统来提供管理
例如一个Web服务进程只需要绑定一个低于1024的端口的权限并不需要root权限。那么它只需要被授权`net_bind_service`能力即可。此外还有很多其他的类似能力来避免进程获取root权限
* ssh访问可被主机上ssh服务来管理
* cron应该作为用户进程执行
默认情况下Docker启动的容器被严格限制只允许使用内核的一部分能力。
使用能力机制对加强Docker容器的安全有很多好处。通常在服务器上会运行一堆需要特权权限的进程包括有ssh、cron、syslogd、硬件管理工具模块例如负载模块、网络配置工具等等。容器跟这些进程是不同的因为几乎所有的特权进程都由容器以外的支持系统来进行管理。
* ssh访问被主机上ssh服务来管理
* cron通常应该作为用户进程执行权限交给使用它服务的应用来处理
* 日志系统可由Docker或第三方服务管理
* 硬件管理无关紧要容器中也就无需执行udevd以及类似服务
* 网络管理也都在主机上设置,除非特殊需求,容器不需要对网络进行配置。
从上面的例子可以看出大部分情况下容器并不需要“真正的”root权容器只需要少数的权限即可。为了加强安全,容器可以禁用一些没必要的权限。
从上面的例子可以看出大部分情况下容器并不需要“真正的”root权容器只需要少数的能力即可。为了加强安全,容器可以禁用一些没必要的权限。
* 完全禁止任何mount操作
* 禁止直接访问本地主机的套接字;
* 禁止访问一些文件系统的操作,比如创建新的设备、修改文件属性等;
@ -19,6 +22,5 @@ Linux系统支持细粒度的权限访问控制系统。比如一个Web服务进
这样就算攻击者在容器中取得了root权限也不能获得本地主机的较高权限能进行的破坏也有限。
默认情况下Docker采用白名单机制禁用必需功能之外的所有权限。
当然,用户可以根据需求来启用额外的权限。
默认情况下Docker采用[白名单](https://github.com/docker/docker/blob/master/daemon/execdriver/native/template/default_template.go)机制,禁用[必需功能](https://github.com/docker/docker/blob/master/daemon/execdriver/native/template/default_template.go)之外的其它权限。
当然用户也可以根据自身需求来为Docker容器启用额外的权限。