容器和Kubernetes安全的分层方法

简介:应用程序容器的安全性至关重要

容器通过其将应用程序及其依赖项打包为单个映像的能力而获得了广泛的吸引力,这些映像可以从开发到测试再到生产。容器有助于跨环境和多个部署目标(如物理服务器、虚拟机(VM)以及私有或公共云)提供一致性。使用容器,团队可以更好地开发和管理提供业务敏捷性的应用程序。

大规模管理容器需要协调。Kubernetes是企业选择的容器编排平台。Kubernetes集群可以部署在本地,也可以部署在公众的,私有的,或混合云因此,Kubernetes是一个理想的托管平台云计算应用程序需要快速扩展。 
随着许多组织现在在容器上运行基本服务,实现容器安全变得前所未有的重要。本白皮书描述了使用Kubernetes管理的容器化应用程序的安全关键要素。 

全面的容器和Kubernetes安全:层次和生命周期

容器允许开发人员将应用程序及其依赖项作为一个单元来构建和升级。容器还允许在共享主机上部署多租户应用程序,从而更容易最大限度地利用服务器。您可以在单个主机上部署多个应用程序,根据需要启动和关闭各个容器。与传统虚拟化不同,您不需要管理程序来管理每个虚拟机上的来宾操作系统(OS)。容器虚拟化应用程序进程,而不是硬件。

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

在大规模部署容器时,您需要考虑如何管理操作、可扩展性和安全性:

  • 应将哪些容器部署到哪些主机?
  • 哪个主机的容量更大?
  • 哪些容器需要相互访问,它们将如何发现彼此?
  • 您如何控制对网络和存储等共享资源的访问和管理?
  • 如何监控容器健康状况?
  • 如何自动扩展应用程序容量以满足需求?
  • 您如何支持开发人员自助服务并自动化构建和部署过程,同时满足安全要求?

保护容器与保护任何正在运行的Linux®进程非常相似。在部署和运行容器之前,需要在解决方案堆栈的各个层中集成安全性。您还需要在应用程序和平台生命周期中使安全性成为一个持续的过程,以适应新威胁和解决方案的出现。图2显示了DevSecOps的组件,这是一种全面的容器安全方法。 

你可以建立自己的Kubernetes环境,这需要花费时间配置、集成和管理单个组件。或者,您可以部署一个基于Kubernetes构建的应用程序平台,该平台具有自动配置管理和安全功能。这种方法可以让您的团队将精力集中在构建提供业务价值的应用程序上,而不是重新设计基础架构。

Red Hat®OpenShift®为构建和扩展容器化应用程序提供了一致的混合云企业Kubernetes平台。在组织范围内使用Kubernetes需要额外的功能,这些功能可以帮助您在应用程序中构建安全性,自动化允许您管理容器部署安全性的策略,并保护容器运行时。

Red Hat OpenShift Platform Plus基于Red Hats OpenShift的功能构建,具有:

通过可信的图像和自动化为应用程序构建安全性

在应用程序中构建安全性对于云计算部署至关重要。保护容器化应用程序需要您:

  1. 使用受信任的容器内容。
  2. 使用企业容器注册表。
  3. 控制和自动化构建容器。
  4. 将安全性集成到应用程序管道中。 

1.使用受信任的容器内容

在管理安全性时,容器中的内容很重要。一段时间以来,应用程序和基础结构都是由现成的组件组成的。其中许多是开源软件包,例如Linux操作系统、Apache Web Server、,Red Hat JBoss®企业应用程序平台、PostgreSQL和Node.js。这些包的容器化版本也可用,因此您可以避免构建自己的包。然而,与从外部源下载的任何代码一样,您需要知道包是从哪里产生的,是谁构建的,以及它们是否包含任何恶意代码。问问自己:

  • 容器内容会危害我的基础设施吗?
  • 应用层中是否存在已知漏洞?
  • 容器中的运行时层和操作系统层是最新的吗?
  • 容器更新的频率如何?我如何知道何时更新?

多年来,Red Hat一直在打包和提供受信任的Linux内容Red Hat®企业版Linux以及我们的投资组合。Red Hat现在提供了相同的可信任内容,这些内容打包在Linux容器中。随着引入红帽通用底座图像,您可以在任何运行Open container Initiative(OCI)兼容Linux容器的地方利用Red Hat容器图像更高的可靠性、安全性和性能。这意味着您可以在Red Hat Universal Base Image上构建一个容器化应用程序,将其推送到您选择的容器注册表中,并在不需要任何订阅的情况下自由共享。

Red Hat还通过Red Hat生态系统目录。Red Hat认证的容器和运营商可在Red Hat.Enterprise Linux运行的任何地方运行,从裸机到虚拟机再到云,并得到Red Hats和我们的合作伙伴的支持。

Red Hat持续监控我们提供的图像的运行状况。这个集装箱健康指数对每个容器映像的安全风险进行分级,详细说明如何管理、使用和评估容器映像以满足生产系统的需要。集装箱的分级部分基于集装箱所有组件未应用的安全勘误表的使用年限和影响,提供了安全专家和非专家都能理解的集装箱安全总评级。

当Red Hat发布安全更新(如要运行的修复程序)时CVE-2019-5736、MDSCVE-2019-11091,或VHOST-NETCVE-2019-14835-我们还重新构建容器映像并将其推送到公共注册中心。Red Hat安全咨询会提醒您认证容器映像中新发现的任何问题,并将您引导到更新的映像,以便您可以更新使用该映像的任何应用程序。

有时您可能需要Red Hat不提供的内容。我们建议使用使用不断更新的漏洞数据库的容器扫描工具,以确保在使用其他来源的容器图像时始终掌握已知漏洞的最新信息。 

由于已知漏洞的列表在不断演变,因此您需要在首次下载容器映像时检查其内容,并继续跟踪所有已批准和部署映像的漏洞状态,就像Red Hat对Red Hats容器映像所做的那样。

2.使用企业容器注册表更安全地访问容器映像

您的团队正在构建容器,在您下载的公共容器图像之上对内容进行分层。您需要像管理其他类型的二进制文件一样管理对下载的容器映像和内部构建映像的访问和升级。许多私有容器注册支持容器映像的存储&我们建议您选择一个私有注册表,以帮助您自动化使用存储的容器映像的策略。

Red Hat OpenShift包含一个私有注册表,它提供了管理容器映像的基本功能。Red Hat Quay作为独立的企业注册中心提供,提供了许多其他企业功能,包括基于团队的访问控制、地理复制和构建映像触发器。

Clair项目是一个开源引擎,为Red Hat Advanced Cluster Security for Kubernetes扫描程序和Red Hat-Quay漏洞扫描程序提供支持。在注册表级别进行扫描对于加强管道和尽早发现漏洞至关重要。在生命周期的后期,您将需要一个在构建、部署和运行时阶段使用类似漏洞扫描的解决方案,以尽快发现和解决问题。

Red Hat OpenShift还支持与您可能正在使用的其他私有注册中心的集成,例如JFrog的Artifactory和Sonatype Nexus。

3.控制和自动化构建容器图像

管理此构建过程是更好地保护软件堆栈的关键。坚持“一次构建,处处部署”的理念意味着构建过程的产品正是生产中部署的产品。保持容器的不变性也很重要。换句话说,不要修补正在运行的容器,而是重建并重新部署它们。

Red Hat OpenShift提供了许多基于外部事件的自动构建功能,以提高自定义映像的安全性。

  • Red Hat Quay触发器提供了一种从外部事件(如GitHub推送、BitBucket推送、GitLab推送或webhook)生成Dockerfile存储库构建的机制。
  • 源到图像(S2I)是一个用于组合源代码和基本映像的开源框架(图3)。S2I允许您的开发和操作团队在可复制的构建环境上进行协作。当开发人员使用git提交代码时,在S2I下,Red Hat OpenShift可以:
    • 触发从可用工件(包括S2I基本映像)和新提交的代码(通过代码库上的webhooks或其他自动化CI过程)自动组装新映像。
    • 自动部署新构建的映像以进行测试。
    • 将测试映像升级为生产状态,并通过持续集成/持续交付(CI/CD)过程。

Red Hat OpenShift图像流可用于查看对部署在集群中的外部图像的更改。图像流与Red Hat OpenShift中可用的所有本机资源协同工作,例如构建或部署、作业、复制控制器或副本集。通过观看图像流,构建和部署可以在添加或修改新图像时接收通知,并分别通过自动启动构建或部署来做出反应。

例如,考虑一个由三个容器映像层构建的应用程序:基础、中间件和应用程序层。在基本映像中发现了一个问题,该映像由Red Hat重建并推送到Red Hat的生态系统目录。启用图像流后,Red Hat OpenShift可以检测到图像已更改。对于依赖于此映像且定义了触发器的构建,Red Hat OpenShift将自动重建应用程序映像,并合并固定基础映像。

构建完成后,更新的自定义映像被推送到Red Hat OpenShift的内部注册表中。Red Hat OpenShift会立即检测其内部注册表中图像的更改。对于定义了部署触发器的应用程序,将自动部署更新的映像,使生产中运行的代码与最新更新的映像保持一致。所有这些功能协同工作,将安全功能集成到CI/CD流程和管道中。

4.将安全性集成到应用程序管道中

Red Hat OpenShift包含Jenkins for CI和Tekton的集成实例,这是一个Kubernetes CI/CD管道,适用于容器(包括无服务器)。Red Hat OpenShift还包括丰富的RESTful API,您可以使用这些API集成自己的构建或CI/CD工具,包括私有映像注册表。

应用程序安全的最佳实践是将自动化安全测试集成到管道中,包括注册表、集成开发环境(IDE)和CI/CD工具。

  • 注册表:容器图像可以并且应该在私有容器注册表中进行扫描。通过Quay,您可以使用Clair安全扫描程序或Red Hat Advanced Cluster security扫描程序集成,在发现任何违反策略的漏洞时通知开发人员。或者,可以在Red Hat生态系统目录.
  • 石斑鱼类:Red Hat依赖关系分析集成开发环境(IDE)具有插件,当代码首次引入IDE时,这些插件为项目依赖项提供漏洞警告和修复建议。 
  • CI/CD:扫描仪可以与CI集成,用于实时评估,对容器中的开源包进行编目,通知您任何已知的漏洞,并在以前扫描的包中发现新的漏洞时更新您。
  • 扫描并标记安全问题:此外,CI流程应包括用安全扫描发现的问题标记构建的策略,以便团队可以采取适当的措施尽快解决这些问题。Red Hat Advanced Cluster Security for Kubernetes与CI/CD工具集成,可根据漏洞和群集错误配置进行监视、通知和强制执行。组织可以强制实施策略,如拒绝部署CAP_SYS_ADMIN功能,即使是特权用户。Red Hat Advanced Cluster Security的整体风险评估方法将告知您Kubernetes集群中的问题,并附带默认和可配置的策略,您可以在构建、部署和运行时阶段监控和实施这些策略。
  • 监视Helm图表和YAML文件:您还应该包括以下解决方案库贝·林特在CI流程中评估Kubernetes YAML文件和Helm图表的安全配置错误。
  • 签署自定义图像:最后,我们建议您签署定制的容器映像,以便确保它们在构建和部署之间未被篡改。

部署:管理部署配置、安全性和法规遵从性

部署的有效安全性包括保护Kubernetes平台以及自动化部署策略。Red Hat®OpenShift®包括以下现成功能:

  1. 平台配置和生命周期管理。
  2. 身份和访问管理。
  3. 平台数据和附加存储的安全性。
  4. 部署策略。
  5. 平台配置和生命周期管理

这个云本地计算基金会(CNCF)Kubernetes安全审计得出结论认为,Kubernetes面临的最大安全威胁是配置和强化Kubernete组件的复杂性。Red Hat OpenShift通过使用Kubernetes Operators来应对这一挑战。 

A类Kubernetes运营商是一种打包、部署和管理Kubernetes-native应用程序的方法。Kubernetes操作符充当自定义控制器,可以使用管理应用程序所需的特定于应用程序的逻辑扩展KubernetesAPI。每个Red Hat OpenShift平台组件都封装在一个操作员中,提供自动化配置、监控和管理。单个运营商直接配置API服务器和软件定义网络(SDN)等组件,而集群版本运营商跨平台管理多个运营商。运营商允许您自动化集群管理,包括从内核到堆栈中较高级别的服务的更新。 

容器平台的关键价值之一是它支持开发人员自助服务,使您的开发团队更容易、更快地交付构建在批准层上的应用程序。自助服务门户为您的团队提供了足够的控制,以促进协作,同时仍提供安全性。Operator Lifecycle Manager(OLM)为Red Hat OpenShift群集用户提供了一个框架,以查找和使用运营商部署启用其应用程序所需的服务。使用OLM,用户可以安装、升级基于角色的访问控制(RBAC),并将其分配给可用的操作员。

为了帮助实现法规遵从性,Red Hat OpenShift提供了合规运营商自动化平台对法规遵从性框架所需技术控制的遵从性。Compliance Operator允许Red Hat OpenShift管理员描述集群所需的合规状态,并为他们提供差距和补救方法的概述。合规运营商评估所有平台层的合规性,包括运行集群的节点。这个文件完整性操作员还可以在集群节点的文件系统上运行文件完整性检查,以审计对敏感文件的更改。 

本白皮书的第八项讨论了跨多个集群的配置和生命周期管理。 

6.身份和访问管理

考虑到Kubernetes中为开发人员和管理员提供的丰富功能,强大的身份管理和RBAC是容器平台的关键元素。Kubernetes API是大规模自动化容器管理的关键。例如,API用于启动和验证请求,包括配置和部署pods和服务。 

API身份验证和授权对于为容器平台提供安全性至关重要。API服务器是一个中心访问点,应该接受最高级别的审查。红帽OpenShift控制平面通过群集身份验证操作员。开发人员、管理员和服务帐户获得OAuth访问令牌向API进行身份验证。作为管理员,您可以配置身份提供者这样用户可以在接收令牌之前进行身份验证。支持九个身份提供程序,包括轻量级目录访问协议(LDAP)目录。Red Hat Advanced Cluster Management可用于跨群集组配置身份提供程序。

Red Hat OpenShift中默认启用细粒度RBAC。RBAC对象确定是否允许用户或服务帐户在集群中执行给定操作。集群管理员可以使用集群角色和绑定来控制对OpenShift集群和集群内项目的访问级别。 

由于RBAC会影响您的用户和应用程序访问,因此以自动化和更安全的方法管理您的RBAC控件至关重要。Red Hat高级群集管理将帮助您为集群创建默认RBAC策略,以支持再现性和可伸缩性。Red Hat高级群集安全将混合或多云环境中的所有RBAC控件与容器和运行时数据关联,以分析风险。 

7.平台数据安全

默认情况下,Red Hat OpenShift会加固Kubernetes,以为传输中的数据提供安全性。它还包括静态数据安全选项

Red Hat OpenShift通过以下方式保护传输中的平台数据:

  • 通过https为所有相互通信的容器平台组件加密传输中的数据。
  • 通过传输层安全性(TLS)与控制平面发送所有通信。
  • etcd对等成员之间的通信使用证书颁发机构(CA)和特定于这些组件的证书进行加密。(在Kubernetes中,etcd存储持久主状态,而其他组件则监视etcd进行更改,以使自己进入指定状态。)
  • 自动旋转平台证书和密钥。 

Red Hat OpenShift通过以下方式保护平台静态数据:

  • 可选加密Red Hat Enterprise Linux CoreOS磁盘和etcd数据存储,以提高安全性。
  • 为Red Hat OpenShift提供联邦信息处理标准(FIPS)就绪性。FIPS 140-2是用于批准加密模块的美国政府安全标准。当Red Hat Enterprise Linux CoreOS以FIPS模式启动时,Red Hat OpenShift平台组件会调用Red Hat Enterprise Linux加密模块。从电子书中了解更多信息,Red Hat OpenShift安全指南

Red Hat Advanced Cluster Management可用于监视证书到期日期,并在集群群中强制etcd数据存储的加密。 

容器对于无状态和有状态应用程序都很有用。Red Hat OpenShift支持临时存储和持久存储。保护连接的存储是保护有状态服务的关键要素。Red Hat OpenShift支持多种存储类型,包括网络文件系统(NFS),亚马逊网络服务(AWS)弹性块存储(EBS),谷歌计算引擎(GCE)永久磁盘,Azure磁盘,iSCSI、和炉渣

此外,Red Hat OpenShift数据基金会是与Red Hat OpenShift集成并针对其进行优化的持久性软件定义存储。OpenShift Data Foundation为需要加密、复制和跨混合多云的可用性等功能的云端应用程序提供了高度可扩展的持久存储。 

  • 持久卷(PV)可以以资源提供程序支持的任何方式装载到主机上。提供商将具有不同的功能,每个PV的访问模式都设置为该特定卷支持的特定模式。例如,NFS可以支持多个读/写客户端,但特定的NFS PV可能在服务器上以只读方式导出。每个PV都有自己的访问模式集,用于描述特定PV的能力。例如ReadWriteOnce、ReadOnlyMany和ReadWrite Many。
  • 对于共享存储(例如,NFS,Red Hat Ceph®存储)的技巧是让共享存储PV将其组ID(gid)注册为PV资源上的注释。当吊舱认领PV时,带注释的gid将添加到补充组并让该pod访问共享存储的内容。
  • 用于块存储(例如,EBS、GCE永久磁盘、iSCSI),容器平台可以使用Security-Enhanced Linux(SELinux)功能为非特权pods的已装入卷的根提供安全性,使已装入卷为与其关联的容器所拥有,并且仅对其可见。

当然,您还应该利用所选存储解决方案中可用的安全功能。

8.自动化基于策略的部署

强大的安全性包括可用于从安全角度管理容器和集群部署的自动化策略。

  • 基于策略的容器部署:Red Hat OpenShift群集可以配置为允许或禁止图像从特定的图像注册表中提取。生产集群的最佳做法是只允许从您的私有注册表部署映像。 

    Red Hat OpenShift的安全上下文约束(SCC)准入控制器插件定义了一组条件,pod必须运行这些条件才能被系统接受。安全上下文约束允许您默认删除特权,这一点很重要,也是最佳实践。Red Hat OpenShift安全上下文约束(SCC)确保在默认情况下,OpenShift工作节点上没有运行特权容器。默认情况下,拒绝访问主机网络和主机进程ID。如果用户选择,则具有所需权限的用户可以将默认SCC策略调整为更具权限。

    适用于Kubernetes的Red Hat高级集群管理提供高级应用程序生命周期管理使用开放标准部署应用程序,使用集成到现有CI/CD管道和管理控制中的放置策略。 

    Kubernetes的Red Hat高级群集安全提供内置和可配置的策略来强制实施安全默认值。可以在所有集群中启用和强制创建允许或禁止来自私有注册表的映像的策略。严重的容器漏洞得分、容器错误配置和特权容器访问是可以启用和实施的策略的几个示例,以限制集群中的攻击面。
  • 基于策略的多集群管理:部署多个集群有助于跨多个可用性区域提供应用程序高可用性、部署的通用管理功能或跨多个云提供商(如AWS、Google cloud和Microsoft Azure)进行迁移。在管理多个集群时,您的编排工具需要跨不同的部署实例提供所需的安全性。与往常一样,配置、身份验证和授权是关键,因为它能够更安全地将数据传递到应用程序,无论它们在何处运行,并跨集群管理应用程序策略。Red Hat高级群集管理提供:

    • 多集群生命周期管理它允许您可靠、一致和大规模地创建、更新和销毁Kubernetes集群。

    • 政策驱动的治理风险和法规遵从性根据行业标准,利用策略自动配置和维护安全控制的一致性。您还可以指定要跨一个或多个托管集群应用的合规性策略。

保护正在运行的应用程序

除了基础架构之外,维护应用程序安全也是至关重要的。为容器化应用程序提供安全性需要:

  1. 容器隔离。
  2. 应用程序和网络隔离。
  3. 应用程序访问安全。 
  4. 可观察性。

9.容器隔离

为了充分利用容器打包和编排技术,操作团队需要正确的环境来运行容器。操作团队需要一个操作系统,该操作系统可以更好地保护边界上的容器,从而保护主机内核不受容器溢出和容器相互隔离的影响。 

容器是具有隔离和资源限制的Linux进程,允许您在共享主机内核上运行沙盒应用程序。您对容器的安全方法应该与您对Linux上任何正在运行的进程的安全方法相同。 

NIST特别出版物800-190建议使用容器优化的操作系统以提高安全性。作为Red Hat OpenShift的操作系统基础,红帽企业Linux CoreOS通过最小化主机环境并针对容器进行调整来减少攻击面。Red Hat Enterprise Linux CoreOS仅包含运行Red Hat-OpenShift所需的软件包,其用户空间部署为只读。该平台与Red Hat OpenShift一起进行测试、版本控制和交付,并由集群管理。Red Hat Enterprise Linux CoreOS安装和更新是自动化的,始终与集群兼容。它还支持您选择的基础设施,继承了大部分Red Hat Enterprise Linux生态系统。

在Red Hat OpenShift平台上运行的每个Linux容器都受到内置在Red帽子OpenShift节点中的功能强大的Red帽子Enterprise Linux安全功能的保护。Linux命名空间、SELinux、控制组(Cgroup)、功能和安全计算模式(seccomp)用于为在Red Hat Enterprise Linux上运行的容器提供安全性。

  • Linux命名空间提供容器隔离的基础知识。命名空间使命名空间中的进程可以看到一个容器,这些进程具有自己的全局资源实例。名称空间提供了一种抽象,让人觉得您是从容器中在自己的操作系统上运行的。
  • SELinux公司提供了额外的安全层,以使容器彼此隔离,并与主机隔离。SELinux允许管理员对每个用户、应用程序、进程和文件实施强制访问控制(MAC)。如果您设法打破了名称空间抽象(意外或故意),SELinux将阻止您。SELinux缓解了容器运行时漏洞,有序的SELinux配置可以防止容器进程逃离其包含。
  • C组限制、说明和隔离进程集合的资源使用情况(例如CPU、内存、磁盘I/O、网络)。使用Cgroups可防止容器资源被同一主机上的另一个容器超越。Cgroups还可以用于控制伪设备,这是一种流行的攻击工具。 
  • Linux功能可用于锁定容器中的权限。功能是不同的特权单元,可以独立启用或禁用。功能允许您执行诸如发送原始互联网协议(IP)数据包或绑定到1024以下的端口等操作。运行容器时,可以删除多个功能,而不会影响绝大多数容器化应用程序。    
  • 最后,a安全计算模式(seccomp)配置文件可以与容器关联,以限制可用的系统调用。

除了使用Cgroups隔离资源使用之外,Red Hat OpenShift还提供了管理每个项目的资源配额跨项目。项目配额可以限制流氓令牌所能造成的破坏程度。Red Hat Advanced Cluster Management可以在群集组中强制执行资源配额。 

Red Hat高级群集安全具有对NIST SP 800-190的内置合规性支持,该支持显示所有合规性建议以及相关工作负载。这些建议为任何不合规的应用程序提供了建议,并为用户提供了采取相应行动的信息。

10.应用程序和网络隔离

多租户安全对于企业级使用Kubernetes至关重要。多租户允许不同的团队使用同一集群,同时防止未经授权访问彼此的环境。Red Hat OpenShift通过内核名称空间、SELinux、RBAC、Kubernetes名称空间和网络策略的组合支持多租户。

  • Red Hat OpenShift项目是带有SELinux注释的Kubernetes命名空间。项目跨团队、组和部门隔离应用程序。本地角色和绑定用于控制谁有权访问单个项目。 
  • 安全上下文约束允许您在默认情况下放弃特权,这是一个重要的最佳实践。对于Red Hat OpenShift SCC,默认情况下,OpenShift工作节点上不运行特权容器。默认情况下,还拒绝访问主机网络和主机进程ID。 

部署现代基于微服务的应用程序in-containers通常意味着部署分布在多个节点上的多个容器。这些微服务需要相互发现和通信。考虑到网络防御,您需要一个容器平台,它允许您采用单个集群并分割流量,以隔离该集群中的不同用户、团队、应用程序和环境。您还需要工具来管理对集群的外部访问,以及从集群服务到外部组件的访问。实现网络隔离需要以下关键属性:

  • 入口交通管制:Red Hat OpenShift包含CoreDNS,为pods提供名称解析服务。Red Hat OpenShift路由器(HAProxy)支持入口和路由,以提供对集群上运行的服务的外部访问。两者都支持重新加密和传递策略:“重新加密”在转发HTTP流量时解密和重新加密,而“传递”在不终止TLS的情况下传递流量。 
  • 网络命名空间:网络防御的第一道防线来自网络名称空间。每个容器集合(称为“pod”)都有自己的IP和端口范围进行绑定,从而将节点上的pod网络彼此隔离。吊舱IP地址独立于Red Hat OpenShift节点所连接的物理网络。
  • 网络策略:Red Hat OpenShift SDN使用网络策略为pods之间的通信提供细粒度控制。网络流量可以从任何其他机架、特定端口和特定方向控制到任何机架。在中配置网络策略时多租户模式,每个项目都会获得自己的虚拟网络ID,从而在节点上将项目网络彼此隔离。在多租户模式下,(默认情况下)项目中的pods可以相互通信,但来自不同名称空间的pods不能向不同项目的pods或服务发送数据包,也不能从中接收数据包。 
  • 出口交通管制:Red Hat OpenShift还提供了使用路由器或防火墙方法控制集群上运行的服务的出口流量的功能。例如,您可以使用IP allowlisting来提供对外部数据库的访问。

Kubernetes的Red Hat高级群集安全提供了其他功能来帮助您管理网络隔离。Red Hat Advanced Cluster Security将集群内所有活动和允许的网络连接(包括外部实体)以及网络基线和进一步的部署上下文编目。此外,根据流量使用情况推荐网络策略,您可以在应用网络策略之前模拟其效果。网络策略允许列出可以在集群中设置和实施的外部实体。任何破坏典型网络流的流量都将被标记为异常行为。 

11.保护应用程序访问

提高应用程序的安全性包括管理应用程序用户和API身份验证和授权。 

  • 控制用户访问:Web单点登录(SSO)功能是现代应用程序的关键部分。容器平台可以附带许多容器化服务,供开发人员在构建应用程序时使用。红帽单点登录是一种完全受支持的现成安全断言标记语言(SAML)2.0或OpenID基于连接的身份验证、web单点登录和基于上游的联合服务钥匙斗篷项目。Red Hat Single Sign-On为Red Hat-Fuse和Red Hat-JBoss Enterprise Application Platform提供客户端适配器。Red Hat Single Sign-On支持Node.js应用程序的身份验证和web单点登录,并可以与基于LDAP的目录服务集成,包括Microsoft Active directory和Red哈特Enterprise Linux Identity Management。Red Hat Single Sign-On还与社交登录提供商(如脸书、谷歌和推特)集成。
  • 控制API访问:API是由微服务组成的应用程序的关键。这些应用程序具有多个独立的API服务,导致需要额外工具进行治理的服务端点激增。我们建议使用API管理工具。Red Hat 3scale API管理为API身份验证和安全提供了多种标准选项,可以单独使用,也可以组合使用,以颁发凭据和控制访问。 

    Red Hat 3scale API Management中提供的访问控制功能超越了基本安全和身份验证。应用程序和帐户计划允许您限制对特定端点、方法和服务的访问,并为用户组应用访问策略。应用程序计划允许您为API使用设置速率限制,并控制开发人员组的流量。您可以为传入的API调用设置每个周期的限制,以保护您的基础设施并保持流量顺畅。您还可以为达到或超过速率限制的应用程序自动触发超限警报,并定义超限应用程序的行为。
  • 保护应用程序流量:本白皮书第10节介绍了如何使用集群入口和出口选项提高应用程序流量的安全性。对于基于微服务的应用程序,集群上服务之间的安全流量同样重要。服务网格可用于提供此管理层。术语“服务网格”描述了在分布式微服务架构中构成应用程序的微服务网络以及这些微服务之间的交互。 

    基于开源Istio项目,Red Hat OpenShift服务网格在现有分布式应用程序上添加一个透明层,用于管理服务到服务的通信,而无需更改服务代码。Red Hat OpenShift Service Mesh使用多租户操作员来管理控制平面的生命周期,允许在每个项目的基础上使用OpenShift服务Mesh。此外,OpenShift Service Mesh不需要集群范围的RBAC资源。

    Red Hat OpenShift Service Mesh提供发现和负载平衡以及关键安全功能,如服务对服务的身份验证和加密、故障恢复、度量和监控

    3刻度Istio适配器是一个可选适配器,允许您标记在Red Hat OpenShift service Mesh中运行的服务。 

12.可观察性

监视和审计Red Hat OpenShift集群的能力是保护集群及其用户免受不当使用的重要组成部分。Red Hat OpenShift包括内置的监视和审计以及可选的日志堆栈。 

Red Hat OpenShift服务连接到由以下组件组成的内置监控解决方案普罗米修斯及其生态系统。警报仪表板可用。集群管理员可以选择启用对用户定义项目的监控。部署到Red Hat OpenShift的应用程序可以配置为利用集群监控组件。 

审计事件是一种安全最佳实践,通常需要遵守监管框架。其核心是,Red Hat OpenShift审计是使用云主动方法设计的,以提供集中化和弹性。在Red Hat OpenShift中,默认情况下会在所有节点上启用主机审核和事件审核。Red Hat OpenShift为配置管理和访问审核数据提供了非凡的灵活性。您可以通过选择以下选项来控制记录到API服务器审核日志中的信息量审核日志策略配置文件使用。     

      
监控、审计和日志数据受RBAC保护。项目数据可供项目管理员使用,集群数据可供集群管理员使用。组织应该利用Kubernetes API来创建审核日志策略并监视KubernetesAPI。监视Kubernetes API事件可以让组织深入了解特定的Kubernete API操作和请求,并可以在内部滥用高风险命令或恶意行为体使用高风险命令时通知团队。Red Hat Advanced Cluster Security将监视特定的OpenShift事件,例如高风险的shell访问或端口转发事件。
作为最佳实践,请配置集群,将所有审核和日志事件转发到安全信息和事件管理(SIEM)系统,以进行完整性管理、保留和分析。集群管理员可以部署集群日志来聚合Red Hat OpenShift集群中的所有日志,例如主机和API审计日志,以及应用程序容器日志和基础设施日志。集群日志记录聚合了来自整个集群节点的这些日志,并将其存储在默认日志存储中。有多个选项可用于将日志转发到您选择的SIEM。 

使用强大的Kubernetes工具生态系统扩展安全性

为了进一步增强容器和Kubernetes的安全性或满足现有的策略,您可以选择与第三方安全工具集成。Red Hat拥有广泛的生态系统经认证的合作伙伴解决方案例如:

  • 特权访问管理。
  • 外部证书颁发机构。
  • 外部保险库和密钥管理解决方案。
  • 容器内容扫描器和漏洞管理工具。
  • 容器运行时分析工具。
  • SIEM公司。

结论:Red Hat OpenShift内置容器安全

部署基于容器的应用程序和微服务不仅仅是为了安全。您的容器平台需要提供适合您的开发人员和操作团队的体验。您需要一个以安全为中心、企业级、基于容器的应用程序平台,使开发人员和运营商能够实现其项目目标,同时提高运营效率和基础设施利用率。

Red Hat OpenShift构建在标准和便携式Linux容器的核心之上,提供内置安全功能,包括:

  • 集成构建和CI/CD工具,用于更安全的DevOps和DevSecOps实践。
  • 具有内置平台配置、法规遵从性和生命周期管理功能的强化企业级Kubernetes。
  • 强大的RBAC,与企业身份验证系统集成。
  • 用于管理集群入口和出口的选项。
  • 集成SDN和服务网格,支持网络细分。
  • 支持为远程存储卷提供安全保护。
  • Red Hat Enterprise Linux CoreOS,针对大规模运行容器进行了优化,具有很强的隔离性。
  • 自动化运行时安全的部署策略。
  • 集成的监视、审核和日志记录。

Red Hat OpenShift还提供了最大的受支持编程语言、框架和服务集合(图4)。Red Hat Advanced Cluster Management for Kubernetes提供了紧密集成的多集群管理。 

Red Hat OpenShift可在Red Hat-OpenStack®平台、VMware、裸机、AWS、Google Cloud Platform、Azure、IBM Cloud和支持Red Hat Enterprise Linux的任何平台。Red Hat还提供Red Hat OpenShift专用将AWS和谷歌云作为公共云服务。Azure红帽OpenShift由Red Hat和Microsoft联合提供。AWS上的Red Hat OpenShift服务由Red Hat和Amazon联合提供。 

图4。Red Hat OpenShift Platform Plus提供了跨物理虚拟云、私有云和公共云的全功能技术堆栈,用于管理和保护多集群部署。

20多年来,Red Hat是一家领先的供应商,为企业客户提供可信的开源解决方案,我们通过诸如Red Hat-OpenShift Platform Plus之类的解决方案和支持容器的Red Hats产品组合,为容器带来同样级别的信任和安全。

扩展安全工具包

在上查找、尝试和购买基于容器的安全软件红帽市场。部署到任何运行Red Hat OpenShift的云。