Kubernetes 安全策略:保护您的数据仓库并阻止黑客

Posted 陈书予

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes 安全策略:保护您的数据仓库并阻止黑客相关的知识,希望对你有一定的参考价值。

文章目录

一、概述

1.1 什么是 Kubernetes

Kubernetes 是一个开源的容器编排平台,最初由 Google 设计并捐赠给 Cloud Native Computing Foundation (CNCF) 孵化。Kubernetes 可以自动化地部署、扩展和管理容器化应用程序,并提供了许多便捷的特性,如服务发现、负载均衡、自我修复等。Kubernetes 的核心理念是将应用程序和基础设施分离,以便更快、更安全、更灵活地开发和部署云原生应用程序。

Kubernetes 的组件可以分为两大类: 控制平面和数据平面。 控制平面包括 Kubernetes API Server、etcd 存储、控制器管理器、调度器等,负责管理存储在 etcd 中的集群状态、决策运行环境中的容器位置、标记、限制等。数据平面包括各种节点,包括容器运行时、kubelet 守护进程、kube-proxy 代理服务器,负责维护容器的生命周期、数据流量、负载均衡等。

Kubernetes 提供了一种能够轻松创建和部署容器的方式,其灵活性和可扩展性使其成为一种非常流行的应用程序部署和管理平台。

1.2 Kubernetes 为什么需要安全

虽然 Kubernetes 具有许多优点,但也有许多安全考虑因素必须被认真考虑。以下是 Kubernetes 安全威胁的一些例子:

1.2.1 权限问题

一个被破坏的容器可以在多个 Pod 之间传播,导致 Kubernetes 集群的整体安全受到威胁。除非良好配置 Kubernetes 中的用户和角色,否则攻击者可能具有比他们应有的更多的权限。

1.2.2 网络问题

由于 Kubernetes 的高度自动化性质,容易使权限分配分散并产生混乱。这种情况下,攻击者可以利用 Kubernetes 上的漏洞横向移动和扩展他们在集群中的访问级别。另外,安全的网络策略和在应用程序层面进行保护,包括服务发现和容器网络配置,保证应用程序和数据不被更容易受到攻击,也可能受到损害。

1.2.3 控制面

如果 Kubernetes API Server 面临攻击活动,则可以修改,添加或删除集群状态,从而危及整个集群的安全性。此外,一个被攻击的 Pod 可以进行许多可能对其他 Pod 或主机产生灾难性后果的活动,例如嗅探流量并尝试修改 Pod 以增加攻击面。

1.2.4 镜像安全问题

容器的镜像可以随时被替换,而没有办法验证该镜像的内容和完整性。因此,出现一个恶意镜像的情况下,整个特定容器中的数据和应用程序可以遭受严重威胁。

1.3 Kubernetes 安全秘籍简介

为了最大化您的 Kubernetes 集群的安全性,必须了解安全性相关的最佳做法和原则。以下是几个基本的 Kubernetes 安全秘籍:

1.3.1 配置 Kubernetes 对象的 RBAC

为保护 Kubernetes 集群,必须对在 Kubernetes 中运行的对象、Pod 和状态对象进行身份验证和授权。Kubernetes Role-Based Access Control(RBAC)为应用于 Kubernetes API 对象的最佳做法之一,以管理访问 Kubernetes API 对象的授权和权限。

1.3.2 使用安全的容器基础映像

可以通过使用最佳安全实践来加强容器的安全性。而选择合适的基础镜像是实现此目标的重要部分,例如,只使用来自可信源的映像,尽可能减少容器中的客户端库数量。

1.3.3 配置 Kubernetes 的网络和策略

安全的网络和防护策略可以保护 Kubernetes 集群免受威胁。通过配置网络插件实现网络隔离,并设置 Pod 和服务之间的网络策略以提高安全性。

1.3.4 使用 Kubernetes 安全扫描器进行安全审计

使用 Kubernetes 安全扫描器可以查找到容器映像中的潜在漏洞,确保每个大容器镜像都没有安全漏洞,需要及时修复。

二、配置 Kubernetes 集群

2.1 Minikube 安装

Minikube 是 Kubernetes 的一种轻量级实现,它可以在局域网内快速搭建一个 Kubernetes 集群用于测试、开发和学习。

2.1.1 Minikube 的安装步骤:

  1. 安装虚拟机软件:Minikube 需要在虚拟机中运行,建议使用 VirtualBox 或者 HyperKit。VirtualBox 是跨平台的免费软件,而 HyperKit 是 macOS 中提供的轻量级虚拟化解决方案。

  2. 安装 kubectl:kubectl 是 Kubernetes 的命令行工具,用于管理 Kubernetes 集群。可以通过以下命令安装:

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

在 macOS 上安装 kubectl 的命令如下:

brew install kubectl

安装 Minikube:可以通过以下命令安装 Minikube:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

macOS 上安装 Minikube 的命令如下:

brew install minikube

启动 Minikube 集群:

minikube start

运行示例应用:

kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
kubectl expose deployment hello-minikube --type=NodePort
minikube service hello-minikube

以上就是安装和使用 Minikube 的详细步骤了。

2.2 配置 Kubernetes RBAC

Kubernetes RBAC(Role-Based Access Control)是基于角色的访问控制,它定义了一组角色、角色绑定和集群角色绑定,用于限制 Kubernetes 集群中用户、服务账号的权限范围。

2.2.1 Kubernetes RBAC 的配置步骤:

  1. 创建角色:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: test-role
rules:
- apiGroups: [""] # "" 代表 core API 组
  resources: ["pods", "pods/log", "services"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

这里创建了一个名为 test-role 的角色,它拥有对 Kubernetes 集群中的 pods、services 资源的访问权限。

  1. 创建服务账号:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: test-account
  namespace: test-namespace

这里创建了一个名为 test-account 的服务账号,它将被绑定在后面创建的角色上。

  1. 创建角色绑定:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-role-binding
  namespace: test-namespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: test-role
subjects:
- kind: ServiceAccount
  name: test-account
  namespace: test-namespace

这里创建了一个名为 test-role-binding 的角色绑定,它将 test-role 与 test-account 绑定在一起,以授予 test-account 对 pods、services 资源的访问权限。

  1. 创建命名空间:
apiVersion: v1
kind: Namespace
metadata:
  name: test-namespace

这里创建了一个名为 test-namespace 的命名空间,用于隔离上述角色和服务账号的作用范围。

以上就是 Kubernetes RBAC 的配置步骤,通过创建角色、服务账号、角色绑定和命名空间来定义用户、服务账号的权限作用范围。

2.3 配置网络策略

网络策略是 Kubernetes 中用于定义网络访问控制策略的一种机制,它可以限制来自特定 IP 或标签的流量访问 Kubernetes 中的 Pod。

2.3.1 网络策略的配置步骤:

  1. 在 Kubernetes 运行网络插件,如 Calico 或者 Cilium,使得网络策略功能可以正常使用。

  2. 创建网络策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: test-namespace
spec:
  podSelector:
    matchLabels:
      app: test-app
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.0.0.0/24
    - namespaceSelector:
        matchLabels:
          name: test-namespace
    ports:
    - protocol: TCP
      port: 8080

这里创建了一个名为 test-network-policy 的网络策略,它定义了当访问属于 test-namespace 命名空间且包含 app=test-app 标签的 Pod 时,只允许来自 10.0.0.0/24 网段 IP 或 test-namespace 命名空间的 Pod 访问 Pod 的 TCP 8080 端口。

以上就是网络策略的配置步骤了,通过配置网络策略可以控制 Pod 之间的网络通信。

2.4 限制 Kubernetes API 访问

在 Kubernetes 中,可以使用网络策略来控制 Pod 之间和 Pod 与集群中其他资源之间的网络流量。本文介绍如何配置网络策略,以限制 Kubernetes API 的访问流量。

  1. 创建一个命名空间:
kubectl create namespace example
  1. 创建一个 Label,该 Label 将用于标记要受网络策略保护的 Pod:
kubectl label namespace example name=example
  1. 创建 Pod:
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
  namespace: example
  labels:
    app: example
spec:
  containers:
    - name: example-container
      image: nginx
  1. 创建一个网络策略:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: api-policy
  namespace: example
spec:
  podSelector:
    matchLabels:
      app: example
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: kubernetes

上述策略将禁止任何与带有 label app=example 的 Pod 的入站流量,除非该流量始于带有 label app=kubernetes 的 Pod。请注意,该规则仅限制流量,因此不影响容器的运行状态。

  1. 验证策略是否生效:
kubectl run busybox --image=busybox -n example -- sleep 3600
kubectl exec -it busybox -n example -- wget -q -O - http://example-pod
kubectl exec -it busybox -n example -- wget -q -O - kubernetes.default.svc.cluster.local

第一行使用 busybox 镜像创建一个名为 busybox 的 Pod,并执行一个长时间休眠的命令。第二行调用 wget 命令将通过 Pod example-pod 执行 HTTP GET 请求。由于我们已经创建了一个网络策略,该请求将被阻止。第三行调用 wget 命令将访问 kubernetes.default.svc.cluster.local,这是 Kubernetes API 的 DNS 名称。由于我们已经在策略中选择了从 Kubernetes 组件 Pod 的流量,该请求将显示预期的结果。

三、保护 Kubernetes 网络

3.1 配置 Kubernetes 网络插件

Kubernetes 网络插件是一个 K8s 集群中的必要组件之一,它的主要目的是负责实现容器的网络功能,例如为容器分配 IP、实现容器间通信、提供网络隔离等。不同的网络插件有不同的实现机制,不同的云平台和部署环境也有不同的网络要求,因此,使用哪种网络插件需要根据实际情况进行选择。

常用的 Kubernetes 网络插件有以下几种:

  • Flannel:Flannel 是一个简单而高效的容器网络解决方案,它使用了类似于 Overlay 网络的技术,为每个节点分配一个唯一的 IP 地址,并使用 VXLAN 或 UDP 封装来实现容器之间的通信。

  • Calico:Calico 是一个高性能的容器网络解决方案,可以实现高效的容器间网络通信和网络安全。它使用了 BGP 协议来实现路由,并通过网络策略实现容器访问控制。

  • Cilium:Cilium 是一种基于 eBPF (Extended Berkeley Packet Filter) 技术的容器网络解决方案,可以提供高效、安全和可靠的容器间通信。它可以实现网络隔离、网络策略和流量审计等功能。

在选择网络插件时,需要考虑以下几个方面:

  • 性能:不同的网络插件有不同的性能表现,需要根据实际应用场景进行选择。

  • 范围:一些网络插件只能为应用程序容器提供内部网络,而另一些则可以为外部服务提供网络服务。

  • 安全性:一些网络插件提供内置的安全功能来保护容器和云基础设施。

  • 易用性:一些网络插件提供图形化界面和易用的 API,方便用户部署和管理。

3.2 配置 Kubernetes Ingress 控制器

在 Kubernetes 中,Ingress 控制器是一种负责管理外部流量进入 K8s 集群的组件,它可以使用不同的负载均衡算法将外部流量路由到不同的后端服务。Ingress 控制器常常被用于实现 Web 应用程序等场景的负载均衡和流量控制。

使用 Ingress 控制器时,需要设置一些安全规则来保护集群免受恶意攻击。例如:

  • 访问控制:可以通过定义网络策略来控制从外部访问特定服务的权限,从而确保服务只能被授权用户和应用程序访问。

  • SSL/TLS 加密:可以使用 SSL/TLS 加密来保护传输的数据。可以为 Ingress 控制器配置自签名证书或购买权威证书。

  • 限流:可以使用限流来控制流量,以防止 DDoS 攻击。

  • 访问日志:可以启用访问日志来记录所有流量,以便进行安全审计和调查。

3.3 安全使用 Kubernetes 服务

Kubernetes 服务是一种允许容器之间互相通信的抽象机制,它可以为容器动态生成一个稳定的 IP 地址,并提供负载均衡等重要功能。使用 Kubernetes 服务时,需要注意以下几个方面:

  • 访问控制:可以使用 Kubernetes 的内置功能来设置网络策略,控制访问服务的权限。例如,可以禁止外部服务访问一些重要服务。

  • 安全设置:需要设置安全设置来控制服务的访问权限。例如,可以为服务配置 TLS 证书。

  • 日志记录:需要记录服务的日志以便于审计和追踪。

  • 数据保护:需要设置备份和恢复策略以保护服务数据的完整性。

四、安全地运行 Kubernetes 工作负载

4.1 如何让 Kubernetes Pod 更安全

在 Kubernetes 中,“Pod”是最小的环境单元,是一个或多个容器的集合。创建一个安全的 Pod 需要考虑以下几个方面:

4.1.1 限制资源

在 Kubernetes 中,可以利用 LimitRange 和在 PodLevel 中使用 resourceQuotas 实现资源的限制,并防止 Pod 超出其可用资源。通过设置资源限制,可以确保容器无法获得超过它应有的资源。

4.1.2 使用安全上下文

通过使用安全上下文,可以为某些容器设置用户 ID(UID)和组 ID(GID)。这可以防止攻击者访问系统级别的文件或进程,并限制容器的能力。

Kubernetes 还允许配置特权上下文机制,在容器中取消安全限制,但这应该谨慎使用,尽可能避免。

4.1.3 启用 Kubernetes pod 安全策略

Kubernetes Pod 安全策略(PodSecurityPolicy)可帮助管理员对 Pod 下的容器应用程序执行强制安全性措施。PodSecurityPolicy 的使用可以防止容器从容器内部攻击宿主机,也可以防止容器之间的攻击。

4.1.4 使用网络隔离

使用 Kubernetes 的网络插件或者其他链路层隔离技术,可以增强 Pod 的网络隔离性和安全性。通过流量隔离,可以限制容器访问其他容器或存储卷等敏感资源,减少网络攻击的发生。

4.2 Kubernetes 容器安全最佳实践

保护容器是保护 Kubernetes 集群的关键。下面介绍几个将有助于提高容器安全性的 Kubernetes 容器安全实践:

4.2.1 选择适当的容器基础映像

合理选择 Docker 容器镜像,标准镜像推荐使用官方的镜像仓库。也可以使用 Docker 的安全组件进行容器基础镜像验证。

4.2.2 确保容器镜像代码病毒和漏洞扫描

使用容器镜像扫描器,确保容器代码没有病毒和漏洞。扫描后把显示代码和漏洞进行修复,以致使用安全镜像。

4.2.3 配置容器安全策略

通过 Kubernetes 的容器安全策略 (PodSecurityPolicy) 配置容器安全策略,推荐使用 runtimeClass 策略 限制特权容器在 Pod 中的使用以及不安全容器的访问权限。

4.2.4 使用容器日志记录

容器日志记录可以方便管理员为容器的活动作出诊断和调整。用标准输出优化容器日志并将其收集至安全中心或外部存储。

4.2.5 运行应用程序多个实例

容器运行时保障应用程序的可用性并提供弹性,如果一个容器在发生故障的情况下,它不会影响应用程序的其余部分。运行多个实例时,确保使用负载均衡器,可使流量通过非常安全的通道路由,从而达到更好的安全保护。

4.2.6 配置网络安全

Kubernetes 集群应该配置网络安全性保障,每个容器都应该拥有自己的 IP 和端口,网络策略可以配置,以限制容器间的流量。

4.3 使用 Kubernetes 操作系统安全性修补程序

除容器安全外,还需要对 Kubernetes 工作节点的本身进行保护。特别是,要定期更新 操作系统的安全修补程序、Kubernetes 组件等。此外,Kubernetes 工作节点应配置安全接入,以限制不必要的访问并保护集群免受未经授权的访问和攻击。可以使用 Kubernetes 各种安全组件,监视和警报安全事件,以及采取必要的措施和修复,以确保 Kubernetes 集群是可靠且安全的。

五、监控和日志管理

5.1 使用 Kubernetes 安全扫描器

使用 Kubernetes 安全扫描器可以自动扫描 Kubernetes 集群中的容器映像和资源配置,查找潜在的安全漏洞和风险。以下是一些常见的安全扫描器:

  • Aqua Security:一家提供容器安全和策略管理的公司,其 Aqua Security Scanner 可以扫描应用程序容器映像并提供漏洞分析、风险评估和建议。
  • Clair:一个开源的容器漏洞扫描器,它与 CoreOS、Docker、Kubernetes 等平台兼容。
  • Anchore:一个开源的容器映像分析工具,它可以评估映像的安全性、配置、性能等方面,并提供警报和建议。
  • Sysdig Secure:一种综合安全解决方案,它在 Kubernetes 中提供运行时扫描、攻击检测、一致性和符合性审计等功能。

5.2 在 Kubernetes 中启用日志记录

为了增强安全和故障排除能力,在 Kubernetes 中启用日志记录非常重要。以下是一些常见的日志记录解决方案:

  • Fluentd:一种开源的日志收集器和分发器,它可以集中管理多个 Kubernetes 集群中的日志,并将其发送到相应的后端存储、分析或可视化工具中。
  • Elasticsearch-Fluentd-Kibana(EFK)堆栈:一个流行的日志记录解决方案,它结合了 Elasticsearch、Fluentd 和 Kibana 三个工具,实现了日志的集中式管理、搜索和可视化。
  • Loki:一种开源的日志聚合器,它专门针对 Kubernetes 和容器环境进行了优化,提供高度可扩展和高效的日志收集和查询功能。

5.3 在 Kubernetes 中添加监视

监视 Kubernetes 集群和应用程序的状态可以帮助您及时发现和解决问题,并提高可靠性和可用性。以下是一些常见的监视解决方案:

  • Prometheus:一种开源的时间序列数据库和监视系统,它可以监视 Kubernetes 中的各种指标和事件,并提供灵活的警报和查询功能。它还可以与 Grafana 等可视化工具结合使用,使您可以更容易地了解整个系统的状况。
  • Datadog:一种集成的监视和分析平台,它支持 Kubernetes、容器等多种技术栈,并提供实时指标、日志和跟踪数据的可视化和警报。
  • Sysdig Monitor:一个提供实时容器监视、安全性、性能和可靠性指标的解决方案,支持 Kubernetes、Docker、Mesos 和 Amazon Web Services 等平台。

六、更新和备份 Kubernetes 集群

6.1 使用 Kubernetes 滚动升级

Kubernetes 提供了一种滚动升级的方式来升级您的集群。滚动升级指的是逐步升级集群中的每个节点,确保在进行升级时始终保持集群的可用性。使用滚动升级时,您可以通过控制升级的速度和范围,以确保每个节点都能够成功升级并保持集群的稳定性。参考以下步骤进行 Kubernetes 滚动升级:

  • 使用 kubectl drain 命令从集群中排除一个节点,并将其生产负载移到其他节点上。
  • 运行 kubectl upgrade 命令以将节点升级到新版本。
  • 使用 kubectl uncordon 命令将节点重新加入集群,并让其重新承担生产负载。
  • 重复上述步骤,直到所有节点都成功升级为止。

6.2 执行自动备份和还原

您可以使用 Kubernetes 的 Backup and Restore(Velero)插件执行自动备份和还原操作,以保护您的应用程序和数据。Velero 可以备份 Kubernetes 应用程序和其依赖项(如存储、配置和密钥等)的状态,并在需要时将其还原到先前的状态。参考以下步骤使用 Velero 执行 Kubernetes 备份和恢复:

  • 安装 Velero 插件并配置备份存储和密钥。
  • 运行 velero backup create 命令以创建备份。
  • 运行 velero restore create 命令以将备份还原到当前的 Kubernetes 环境。
  • 查看通过 velero backup get 命令获得的备份历史记录。

七、 安全 Kubernetes 的最佳实践

7.1 持续漏洞管理和修复

持续漏洞管理和修复是保持 Kubernetes 安全的关键。以下是一些实践建议:

  • 使用自动化工具进行漏洞扫描和修复,并确保定期执行扫描操作。
  • 及时升级 Kubernetes 版本和容器映像,以修复已知漏洞和安全问题。
  • 使用最小特权原则,仅授予容器和节点所需的权限和访问级别。
  • 使用网络和安全策略来限制容器和节点之间的通信,并确保安全地与外部应用程序进行通信。

7.2 安全使用 Kubernetes API 对象

Kubernetes API 对象是 Kubernetes 中的核心元素,因此确保安全使用它们非常重要。以下是一些关于安全使用 Kubernetes API 对象的最佳实践:

  • 实施访问控制,使用 RBAC 或其他访问控制工具来限制使用 API 对象的用户和服务账户的权限。
  • 配置 TLS 加密,Kubernetes API 使用 TLS 保护通信,因此确保启用和正确配置 TLS 加密以防止未经授权的访问和攻击。
  • 限制公开访问,不要把 Kubernetes API 暴露在公共网络上,而是将其限制为安全的内部网络。
  • 审计和监控 Kubernetes API 的使用,以检测未经授权的访问和异常活动。

7.3 Kubernetes 安全审计策略

Kubernetes 安全审计策略可以帮助您跟踪和监视 Kubernetes 集群中的活动,并帮助您及时检测和响应安全漏洞和攻击。以下是一些最佳实践:

  • 跟踪重要的 Kubernetes API 对象和敏感操作(如创建、删除和修改操作)的访问和使用情况。
  • 存储审计日志并定期分析它们,以查找异常活动和潜在的安全风险。
  • 建立警报和响应机制,以便在检测到安全事件时及时采取行动。
  • 定期检查和更新审计策略,以确保其有效性和适应性。

保护Docker和Kubernetes的7个容器安全工具

51CTO官微

技术资讯/行业精华/产品心得

保护Docker和Kubernetes的7个容器安全工具 保护Docker和Kubernetes的7个容器安全工具


Docker容器可帮助软件开发人员更快地构建应用程序,并更灵活地部署。容器还可以帮助开发人员使软件更安全。


自动分析进入容器的软件组件、跨容器集群和多个应用程序版本的行为策略,以及跟踪和管理漏洞数据的创新技术,这些只是容器为整个应用程序生命周期提高安全性的几个途径。


不过,这些当中多少是开箱即用的是另一回事。Docker和容器管理系统(比如Kubernetes)提供了基本功能,但并不总是提供更强的功能,从而将更高级的安全监控和执行留给了第三方工具。



以下是七款最近改进的容器安全产品和服务,它们为云端和本地数据中心中的容器提供了漏洞检测、合规检查、白名单、防火墙和运行时保护等功能。



1.Aporeto


Aporeto专注于运行时保护,类似于下面讨论的NeuVector产品。该公司提供了保护Kubernetes工作负载的微服务安全产品和保护分布式环境中运行的应用程序的云网络防火墙系统。


若是Kubernetes工作负载,Aporeto可以保护本地环境和托管环境(比如Google Kubernetes Engine)。每个创建的资源被分配了一个服务标识,用于确保应用程序周围的信任链未破坏。除此之外,服务标识还用于执行声明的应用程序行为,无论应用程序的pod实际上在哪里。


注册帐户后,可根据要求索取Aporeto的定价。可免费试用评估30天。



2.Aqua容器安全平台


Aqua容器安全平台为Linux容器和Windows容器提供了合规和运行时安全性。


这款端到端容器安全管理器让管理员可以将安全策略和风险配置文件应用于应用程序,并将这些配置文件与不同的应用程序构建管道关联起来。映像扫描可与构建和CI/CD工具集成起来。


Aqua容器安全平台还让管理员可以利用应用程序上下文,在运行时为应用程序分割网络。Aqua平台与Hashicorp Vault等秘密管理工具配合使用,它支持Grafeas API,用于访问来自软件组件的元数据。Aqua平台可以记录它在应用程序的Grafeas商店中找到的任何漏洞信息,Aqua策略可以利用Grafeas定义数据来处理安全事件和软件问题。


Aqua容器安全平台可用于本地或云端部署。没有免费试用版或开源版,但Aqua发布了许多源自该平台的开源工具。



3.Atomic Secured Docker


Atomic Secured Docker是适用于Ubuntu、CentOS和Red Hat Enterprise Linux的替代Linux内核,它利用许多加固策略来抵消潜在的攻击。许多保护措施(比如针对用户空间内存的加固权限)来自Atomicorp的安全内核产品系列。容器突破防护等其他产品专为Docker设计。


可通过直接购买获得Atomic Secured Docker。AWS和Azure市场上还有针对AWS托管的CentOS以及Azure托管的CentOS和Ubuntu的版本。



4.NeuVector


NeuVector旨在保护整个Kubernetes集群。它与现有的Kubernetes管理解决方案兼容,比如Red Hat OpenShift和Docker企业版,旨在保护部署所有阶段的应用程序,从开发阶段(通过Jenkins插件)到生产阶段,全程保护。


与本文介绍的许多其他解决方案一样,NeuVector作为容器部署到现有的Kubernetes集群中,而不是通过修改现有代码来部署。NeuVector添加到集群后,它会发现所有托管的容器,并生成详细表明连接和行为的映射图。可以检测并考虑到应用程序增加或减少引起的任何变化,以便查找威胁(包括容器突破或新漏洞)的实时扫描仍然有效。


NeuVector的定价取决于运行中的Docker主机的数量,起价为每年9950美元。提供免费试用版。



5.Sysdig Secure


Sysdig Secure提供了一组用于监控容器运行时环境并从中获取取证分析数据的工具。 Sysdig Secure旨在与Sysdig的其他监测工具(如Sysdig Monitor)一起运行。


可以根据每个应用程序、容器、主机或网络活动来设置和实施环境策略。Sysdig Secure跟踪的任何事件都可以由主机或容器通过编排器(通常是Kubernetes)的视角来查看。可以记录和剖析每个容器的命令历史记录,并记录和回放跨整个集群的总体取证分析数据,类似Twistlock的“事件探索器”功能那样。


Sysdig仅提供收费的Sysdig Secure,提供云版本和本地版。



6.Tenable.io Container Security


Tenable.io Container Security专注于让Devops团队在构建过程中深入了解容器的安全性,而不是在生产环境中事后了解。


构建时扫描容器映像以查找恶意软件、漏洞和策略合规情况。如果映像或映像中的任何元素发出警报,开发人员会接到表明问题的性质及确切位置的通知,比如多层映像的特定层,以便下一次发布时迅速修复。


Tenable.io Container Security适用于大多数常见的CI/CD构建系统和容器映像注册中心,并通过仪表板显示了所有正在运行中的容器映像的当前状态、策略实施状态和存储中心行为。


可索要Tenable.io Container Security的定价。免费试用期为60天。



7.Twistlock


Twistlock为未被“核心”容器产品(如Docker Enterprise)覆盖的容器添加了许多安全控制。其中一些功能包括:


  • 用于对容器实施HIPAA和CI规则的合规控制。

  • 针对Jenkins等构建工具的合规警报。

  • 针对云原生应用程序的防火墙。

  • 基于分析有效和无效的容器行为的结果,对容器提供运行时攻击防护。

  • 支持Kubernetes的CIS基准测试,以便可以根据保护Kubernetes的一系列通用标准,检查由Kubernetes管理的部署。


2018年8月发布的Twistlock 2.5增加了减少运行时开销的新的取证分析技术(比如将事件前后的容器状态信息存储在容器本身之外)、对用于映射命名空间、pod和容器的实时可视化工具所作的改进之处以及针对无服务器计算系统的防御。


Twistlock提供收费的企业版。之前提供免费30天试用版,但现不提供。


【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


以上是关于Kubernetes 安全策略:保护您的数据仓库并阻止黑客的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes Pod 安全策略(PSP)配置

SaaS模式云数据仓库:持续保护云上数据及服务安全

验证Kubernetes YAML的最佳实践和策略

开发人员在工作负载保护的安全问题

防火墙基础之部署安全策略

等级保护测评策略建议整改措施