文档章节

Cyber-Security: Linux 容器安全的十重境界

RiboseYim
 RiboseYim
发布于 2017/11/14 14:36
字数 3258
阅读 94
收藏 1
点赞 0
评论 0

容器提供了一种简单的应用程序打包方法将它们无缝地从开发、测试环境部署到生产环境。它有助于确保各种环境中的一致性,包括物理服务器、虚拟机(VM)或私有或公共云。领先的组织基于这些好处迅速采用容器,以便轻松地开发和管理增加业务价值的应用程序。

企业应用需要强壮的安全性,任何在容器中运行基础服务的人都会问:“容器是安全的吗?”、“可以让我们的应用程序信任容器吗?”

保护容器非常类似于确保任何正在运行的进程。在部署和运行容器之前,您需要考虑整个解决方案技术栈的安全性。您还需要考虑在应用程序和容器的完整生命周期的安全性。

请尝试在这 10 个方面加强容器的不同层次、不同技术栈和不同生命周期阶段的安全性。

1. 容器操作系统与多租户

对于开发人员来说,容器使得他们更容易地构建和升级应用程序,它可以作为一个应用单元的被依赖,通过在共享主机上部署启用多租户应用程序来最大限度地利用服务器资源。容器很容易在单个主机上部署多应用程序,并根据需要开启和关闭单个容器。为了充分利用这种打包和部署技术,运维团队需要正确的运行容器环境。运维人员需要一个操作系统,该系统可以在边界处保护容器,使主机内核与容器隔离并确保容器彼此之间安全。

容器是隔离和约束资源的 Linux 进程,使您能够在共享宿主内核中运行沙盒应用程序。您保护容器的方法应该与确保 Linux 上任何正在运行的进程的安全方法相同。放弃特权是重要的,目前仍然是最佳实践。更好的方法是创建尽可能少的特权容器。容器应该作为普通用户运行,而不是 root 用户。接下来,利用 Linux 中可用的多种级别的安全特性确保容器的安全: Linux 命名空间,安全增强的Linux(SELinux), cgroups,capabilities 和安全计算模式(seccomp)。

2. 容器内容(使用可信源)

当说到安全性的时候,对于容器内容来说意味着什么呢?。一段时间以来,应用程序和基础设施都是由现成的组件组成的。很多都来自于开源软件,例如如 Linux 操作系统,Apache Web 服务器,红帽 JBoss 企业应用平台,PostgreSQL 和 Node.js。基于容器的各种软件包版本现在一应俱全,所以你不需要建立自己。但是,与从外部源下载的任何代码一样,您需要知道包的起源、它们是由谁创建,以及它们内部是否存在恶意代码。

3. 容器注册 (容器镜像加密访问)

你的团队构建容器的时候基于下载的公共容器镜像, 所以对它的访问管理和更新下载是管理的关键,需以同样的方式管理容器镜像、内建的镜像及其他类型的二进制文件。许多私有仓库注册服务器支持存储容器镜像。选择一个私有的、存储使用的容器镜像自动化策略的注册服务器。

4. 构建过程安全

在一个容器化的环境里,软件的构建是整个生命周期的一个阶段,应用程序代码需要与运行库集成。管理此构建过程是确保软件栈安全的关键。坚持“一次构建,到处部署(build once, deploy everywhere)”的理念,确保构建过程的产品正是生产中部署的产品。这一点对于维护容器持续稳定也非常重要,换句话说,不要为运行的容器打补丁;而是应该重新构建、重新部署它们。 无论您是在高度规范的行业中工作,还是仅仅想优化团队的工作,需要设计容器镜像的管理和构建过程,以利用容器层实现控制分离,从而使:

  • 运维团队管理基础镜像
  • 架构团队管理中间件、运行时、数据库和其它解决方案
  • 开发团队仅仅专注于应用层和代码

最后,对定制的容器签名,这样可以确保它们在构建和部署环节之间不会被篡改。

5. 控制集群中可部署的内容

为了防备在构建过程中发生任何问题,或者在部署一个镜像后发现漏洞,需要增加以自动化的、基于策略的部署的另一层安全性。

让我们看一下构建应用程序的三个容器镜像层:核心层(core)、中间件层(middleware)和应用层(application)。一个问题如果在核心镜像被发现,镜像会重新构建。一旦构建完成,镜像将被推入容器平台注册服务器。平台可以检测到镜像发生了变化。对于依赖于此镜像并有定义触发器的构建,该平台将自动重建应用程序并整合已经修复的库。

一旦构建完成,镜像将被推入容器平台的内部注册服务器。内部注册服务器中镜像的变化能立即检测到,通过应用程序中定义的触发器自动部署更新镜像,确保生产中运行的代码总是与最近更新的镜像相同。所有这些功能协同工作,将安全功能集成到您的持续集成和持续部署(CI / CD)过程中。

6. 容器编排:加强容器平台安全

当然,应用程序很少在单个容器中交付。即使是简单的应用程序通常有一个前端,后端和数据库。在容器中部署现代微服务应用,通常意味着多容器部署,有时在同一主机上有时分布在多个主机或节点,如图所示。

当规模化管理容器部署时,您需要考虑:

  • 哪些容器应该部署到哪个主机上?
  • 哪个主机容量更大?
  • 哪些容器需要相互访问?他们将如何相互发现?
  • 如何控制对共享资源的访问和管理,比如网络和存储?
  • 如何监控容器健康状态?
  • 如何自动扩展应用能力以满足需求?
  • 如何使开发者在自助服务的同时满足安全需求?

考虑到开发人员和运维人员拥有的广泛能力,强大的基于角色的访问控制是容器平台的关键元素。例如,编排管理服务器是访问的中心点,应该得到最高级别的安全检查。API 是大规模自动化容器管理的关键,用于验证和配置容器、服务和复制控制器的数据;对传入的请求执行项目验证;并调用其他主要系统组件上的触发器。

7. 网络隔离

在容器部署现代微服务应用程序往往意味着在多个节点分布式部署多个容器。考虑到网络防御,您需要一种在集群中隔离应用程序的方法。

一个典型的公共云服务,例如Google Container Engine (GKE),Azure Container Services, 或者 Amazon Web Services (AWS) Container Service,都是单租户服务。它们允许在您启动的 VM 集群上运行容器。为了实现多租户容器安全,您需要一个容器平台,允许您选择单个集群并将流量分段,以隔离该集群中的不同用户、团队、应用程序和环境。

通过网络命名空间,每个容器集合(称为“POD”)获得自己的IP和端口绑定范围,从而在节点上隔离 POD 网络。

默认情况下,来自不同命名空间(项目)的 POD 不能将包发送到或接收来自不同项目的 POD 、服务的数据包,除了下文所述的选项。您可以使用这些特性来隔离集群中的开发人员、测试和生产环境;然而,IP 地址和端口的这种扩展使得网络变得更加复杂。可以投资一些工具处理这种复杂性。首选的工具是采用软件定义网络(SDN)容器平台,它提供统一的集群网络,保证整个集群的容器之间的通信。

8. 存储

对于有状态和无状态的应用程序来说,容器是非常有用的。 保护存储是保证有状态服务的关键要素。容器平台应提供多样化的存储插件,包括网络文件系统(NFS),AWS Elastic Block Stores(EBS,弹性块存储),GCE Persistent 磁盘,GlusterFS,iSCSI,RADOS(CEPH)、Cinder 等等。

一个持久卷(PV)可以安装在由资源提供者支持的任何主机。供应商将有不同的能力,每个 PV 的访问模式可以设置为特定卷支持的特定模式。例如,NFS 可以支持多个 读/写的客户端,但一个特定的 NFS PV 可以在服务器上仅作为只读输出。每个 PV 有它自己的一套访问模式,定义特定 PV 的性能指标,例如ReadWriteOnce, ReadOnlyMany, 和 ReadWriteMany。

9. API 管理, 终端安全和单点登录 (SSO)

保护应用程序安全包括管理应用程序和 API 身份验证和授权。 Web SSO 功能是现代应用程序的关键部分。当开发者构建他们自己的应用时,容器平台可以提供各种容器服务给他们使用。

API 是微服务应用的关键组成部分。微服务应用具有多个独立的 API 服务,这导致服务端点的扩张,因此需要更多的治理工具。推荐使用 API 管理工具。所有 API 平台都应该提供各种 API 认证和安全的标准选项,它们可以单独使用或组合使用,发布证书和控制访问。这些选项包括标准的 API 密钥、应用ID、密钥对和 OAuth 2.0

10. 角色和访问控制管理(Cluster Federation)

2016年7月,Kubernetes 1.3  介绍了 Kubernetes Federated Cluster。这是一个令人兴奋的新功能,目前在 Kubernetes 1.6 beta 。

在公共云或企业数据中心场景中,Federation 对于跨集群部署和访问应用服务是很有用的。多集群使得应用程序的高可用性成为可能,例如多个区域、多个云提供商(如AWS、Google Cloud 和 Azure)实现部署或迁移的通用管理。

在管理集群联邦时,必须确保编排工具在不同的部署平台实例中提供所需的安全性。与以往一样,身份验证和授权是安全的关键 —— 能够安全地将数据传递给应用程序,无论它们在何处运行,在集群中管理应用程序多租户。

Kubernetes 扩展了集群联邦包括支持联邦加密,联邦命名空间和对象入口。

扩展阅读: 网络安全专题合辑《Cyber-Security Manual》

更多精彩内容扫码关注公众号:RiboseYim's Blog:Cyber-Security:Linux容器安全的十重境界 微信公众号

© 著作权归作者所有

共有 人打赏支持
RiboseYim
粉丝 68
博文 70
码字总数 159285
作品 0
广州
程序员
《Linux Perf Master》Edition 0.3 发布

《Linux Perf Master》Edition 0.3 发布 https://www.gitbook.com/book/riboseyim/linux-perf-master/details 快速下载网盘:https://pan.baidu.com/s/1bppqKdL 提供 pdf、epub、mobi 三种格......

RiboseYim ⋅ 2017/12/28 ⋅ 0

2018 Docker 用户报告 - Sysdig Edition

This article is part of an Virtualization Technology tutorial series. Make sure to check out my other articles as well: 2018 年度 Docker 用户报告 - Sysdig Edition Cyber-Securit......

RiboseYim ⋅ 06/13 ⋅ 0

我的 2017 年度盘点

一、Core Topics Learning based on full English. Operating System Kernel & Dynamic tracking & Go Programming Language. Lincoln Foundation & Absolutism Research. 二、年度成果 2.1 ......

RiboseYim ⋅ 2017/12/30 ⋅ 0

Cyber-Security: Linux 容器安全的十重境界

容器安全解决方案需要考虑不同技术栈和容器生命周期的不同阶段。 1.容器操作系统与多租户 2.容器内容(使用可信源) 3.容器注册 (容器镜像加密访问) 4.构建过程安全 5.控制集群中可部署的内容...

RiboseYim ⋅ 2017/11/16 ⋅ 0

Docker 架构介绍:docker安全最佳实践

简介 docker 赖以生存的“Secure by Default”,docker EE 默认的配置和策略提供基础雄厚的安全环境,因此,他们可以非常容易的修改来适应不同组织的特殊需求。 docker 把重点放到了容器安全...

warrior_0319 ⋅ 05/08 ⋅ 0

微软发布自己定制的 Linux 内核和发行版,面向物联网

微软首次发布了自己的定制 Linux 内核和发行版。在旧金山举行的新闻发布会上,微软宣布了针对物联网设备的解决方案 Azure Sphere。 Azure Sphere 包含三个组件。其中之一是微软设计的 Sphere...

局长 ⋅ 04/18 ⋅ 0

【安全牛学习笔记】Arachni

Arachni root@kali:~# apt-get install kali kali kali-desktop-lxde kali-linux-pwtools kali-archive-keyring kali-desktop-xfce kali-linux-rfid kalibrate-rtl kalign kali-linux-sdr ka......

安全牛课堂 ⋅ 2017/12/04 ⋅ 0

gVisor:Google开源的新型沙箱容器运行时环境

容器技术彻底改变了我们对应用程序进行开发、打包与部署的具体方式。然而,系统在与容器对接时仍会暴露出大量攻击面,因此相当一部分安全专家不建议在容器当中运行不受信任或潜在的恶意应用程...

Docker ⋅ 05/03 ⋅ 0

Cilium 1.0:将BPF革新引入Kubernetes网络和安全系统

过去几个月对Cilimu和BPF贡献者来说是令人振奋的一段时间,我们见证了Cilium社区和BPF用户快速增长的阶段,社区由来自Google、Facebook、Netflix、红帽和许多公司的开发人员构成。Linux核心社...

m2l0zgssvc7r69efdtj ⋅ 05/10 ⋅ 0

Free Download Top 100 Hacking Books

Kali Linux – Assuring Security by Penetration Testing Network Analysis Using Wireshark Cookbook Computer Security Handbook, 6th Edition iPad and iPhone Kung Fu: Tips, Tricks, ......

markGao ⋅ 2014/06/10 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ORM——使用spring jpa data实现逻辑删除

前言 在业务中是忌讳物理删除数据的,数据的这个对于一个IT公司可以说是最核心的资产,如果删除直接就物理删除,无疑是对核心资产的不重视,可能扯的比较远,本文最主要是想通过spring jpa ...

alexzhu592 ⋅ 29分钟前 ⋅ 0

代码快速“检”“修”不是梦,阿里云MaxCompute Studio 2.9.0 新版本发布

摘要: 阿里云MaxCompute Studio 2.9.0 新版本发布,此次发布的新版本,在原有功能的基础上增加了新功能,分别是支持代码检查和快速修复;支持graph开发及调试。 近日,阿里云大数据计算服务...

猫耳m ⋅ 31分钟前 ⋅ 0

CDN caching

Incapsula应用感知CDN使用智能分析和频率分析来动态缓存内容,并最大限度地提高效率。确保可直接从RAM获取最常访问的资源,而不依赖于较慢的访问机制。 1、 静态内容缓存 Incapsula缓存静态内...

上树的熊 ⋅ 32分钟前 ⋅ 0

代码快速“检”“修”不是梦,阿里云MaxCompute Studio 2.9.0 新版本发布

摘要: 阿里云MaxCompute Studio 2.9.0 新版本发布,此次发布的新版本,在原有功能的基础上增加了新功能,分别是支持代码检查和快速修复;支持graph开发及调试。 近日,阿里云大数据计算服务...

阿里云云栖社区 ⋅ 36分钟前 ⋅ 0

密码协议(一)协议概述

区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:于中阳 来源:区块链兄弟 原文链接:http://www.blockchainbrother.com/article/86 著权归作者所有。商业转载...

-区块链兄弟- ⋅ 40分钟前 ⋅ 0

vim基础-一般模式

vim编辑器是vi编辑器的升级版本,支持颜色显示。使用yum安装vim-enhanced包。 /etc下的配置文件使用vim编辑可显示颜色,/etc下相同文件拷贝到其他目录不显示颜色。 三种模式:一般模式,编辑...

ZHENG-JY ⋅ 41分钟前 ⋅ 0

spring boot

https://www.cnblogs.com/EasonJim/p/7609911.html

vshcxl ⋅ 45分钟前 ⋅ 0

数据库中常说的steal和force到底是什么?

时长在看一些database paper的时候看到steal和no-force的字样,深入了解了一下,发现我们平时关注的redo log个undo log都是有渊源的,什么时候需要redo log,什么时候需要undo log,什么时候...

黑客画家 ⋅ 49分钟前 ⋅ 0

Mahout的推荐系统

Mahout的推荐系统 什么是推荐系统 为什使用推荐系统 推荐系统中的算法 什么是推荐系统 为什么使用推荐系统?   促进厂商商品销售,帮助用户找到想要的商品   推荐系统无处不在,体现在生...

xiaomin0322 ⋅ 51分钟前 ⋅ 0

docker里没有安装基础软件包,比如Vim,netstat, ps

一,安装VIM apt-get update 二,安装netstat命令 说明没有安装netstat工具,而该工具在 net-tools 工具包内 apt-get install net-tools 在这个时候,主要是因为apt还在运行,不能同时开两个...

aust_niuroutan ⋅ 57分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部