在本文中,我们将共同探索从部署到数据存储阶段的不同容器保护方法,了解如何保护数据、规避可能出现的网络威胁。此外,我们还将探讨一系列关于保护客户信息和修复安全漏洞的最佳实践。
安全注意事项
我们首先来看在创建容器化应用程序时,需要关注的几大主要云容器安全注意事项:
隔离
如果在云端运行虚拟机(VM),那么每个虚拟机只对应一个应用程序。虚拟机之间存在壁垒,共享任一虚拟机、不会对其他虚拟机造成任何影响。
容器与虚拟机有着很多相似特性,但容器更为轻巧,更适合托管那些由高度动态的语言所编写、在设计上强调在实时系统上部署的应用程序。大家熟悉的Node.js、Ruby on Rails、Python以及PHP都属于高动态编程语言。
当我们在虚拟机中创建容器时,该容器也处于隔离状态;如果需要将其部署在其他环境,则应确保它与其他应用程序互不干涉。另外请注意,单服务器部署相对简单;但如果出于共享目的而将容器部署在多台服务器上,还需要考虑相应的网络问题。
当然,在虚拟机中运行多个容器本身也颇具难度,在应用程序体量较大时更是如此。为了隔离开多个容器,必须单独部署每个容器。换句话说,应用程序可能跟另一个不明来源的应用程序同时运行在同一台主机之上。
安全部署
那我们该怎么保护这些容器?在思考答案之前,首先要从不同的考量因素入手:
容器保护方面的另一大重点,在于云服务商有没有切实贯彻安全措施。不少云服务商都有自己的一套产品和工具,所以在着手部署容器前必须先对现有安全方案开展核查。
云服务商也是容器保护中的重要一环。他们可以分析应用程序需要什么,再采取适当的方法加以保护。有些云服务商还会把自己的一部分应用程序部署在云端,借此衡量和验证自己的云安全措施。
配合来自云服务商的出色安全监控与管理解决方案,可以更轻松地跟踪容器内的错误配置或违规活动。一旦发现问题,优秀的云服务商还能为我们提供可行的补救策略。
当然,容器部署还只是开始,持续监控容器才能观察其中是否存在安全或者配置问题。
数据存储
一说起数据移动,大家首先想到的往往是虚拟机或者文件系统。这些当然重要,但还不够全面。另一大重要考量因素在于容器数据的位置:位于容器自身、还是位于集群(运行中的容器组)。如果不清楚数据存放在哪里,大家的安全保障工作恐怕将无从开展。
数据存储是保护容器时需要考虑的核心因素之一。
数据往往会被放置在虚拟机与主机系统相互隔离的位置。而在容器中,由于往往同时拥有多个容器实例,所以数据可能位于多个容器当中;而且根据实际选定的数据模型,大家可以把数据安全存储在主机上或者其他隔离度更高的位置。
当创建新容器时,云服务商可以看到其中到底包含哪种数据类型。因此如果应用程序运行方式不够安全,那么数据也可能面临风险。所以在应用程序设计中也应考虑到云服务商的安全思路,确保容器数据安全可靠、不致意外泄露。
定义安全规则
如前文所述,安全规则也是容器部署中最重要的安全因素之一。在安全设计中,必须保证各项安全规则能够准确反映应用程序需求与当前数据模型。
下面来看部分安全规则示例:
定义窗口存储的管理规则,特别是明确设定允许哪些容器访问存储内容(即容器数据访问控制列表,简称CACL)。没有容器规则的容器定义,不能算是完整的容器定义。
根据容器与应用程序的实际需求,可以通过进程管理器完成规则定义。您可以将此进程管理器设置为容器拥有者,为其授予数据写入以及从存储处读取数据的权限。
如果还有其他需要定义的安全规则,例如访问控制列表(ACL)或者基于角色的访问控制列表(RBACL),也可以使用作为容器所有者的进程管理器实现。以该管理器为载体的访问规则与身份管理,将为您的容器体系提供坚实的安全支持。