Securing your deployed applications

原文:https://docs.gitlab.com/ee/user/project/clusters/securing.html

Securing your deployed applications

使用 GitLab 可以轻松保护在连接的 Kubernetes 集群中部署的应用程序的安全. 您可以从Web 应用程序防火墙网络策略甚至容器主机安全性的保护中受益.

无论您的应用程序是否通过 GitLab CI / CD 进行部署,此页面均包含将群集连接到 GitLab 并安装这些功能的完整的端到端步骤和说明. 如果您使用Auto DevOps与 GitLab 一起构建和部署您的应用程序,请参见上面有关GitLab 托管应用程序的文档.

Overview

在较高级别,所需步骤包括以下步骤:

  • 将集群连接到 GitLab.
  • 设置一个或多个跑步者.
  • 设置集群管理项目.
  • 安装 Web 应用程序防火墙,网络策略和/或容器主机安全性.
  • 安装 Prometheus,以在威胁监视仪表板中获取统计信息和指标.

Requirements

最低要求(取决于您要安装的 GitLab 管理应用程序):

  • 您的群集已连接到 GitLab(ModSecurity,Cilium 和 Falco).
  • 至少安装了一个 GitLab Runner(仅限 Cilium 和 Falco).

Understanding how GitLab Managed Apps are installed

注意:为简单起见,这些图使用术语Kubernetes . 实际上,Sidekiq 连接到在集群中的 Pod 中运行的 Helm Tiller 守护程序.

您可以通过一键式安装过程从 GitLab Web 界面安装 GitLab 托管应用程序. GitLab 使用 Sidekiq(后台处理服务)来简化此过程.

sequenceDiagram 自动编号 GitLab->> + Sidekiq:安装 GitLab 托管应用程序 Sidekiq->> + Kubernetes:Helm 安装 Kubernetes->>-Sidekiq:安装完成 Sidekiq->>-GitLab:刷新 UI

尽管此安装方法比较容易,因为它是用户界面中的”点击”操作,但它不灵活且难以调试. 当出现问题时,您将看不到部署日志. Web 应用程序防火墙功能使用此安装方法.

但是,下一代的 GitLab 托管应用程序 V2( 基于 CI / CD 的 GitLab 托管应用程序 )不使用 Sidekiq 进行部署. 所有应用程序都使用 GitLab CI / CD 管道以及因此使用的 GitLab Runners 进行部署.

sequenceDiagram 自动编号 GitLab->> + GitLab:触发管道 GitLab->> + Runner:运行部署作业 Runner->> + Kubernetes:Helm 安装 Kubernetes->>-Runner:安装完成 Runner->>-GitLab:报告工作状态和更新流程

调试更容易,因为您可以访问这些作业的原始日志(在失败的情况下,可以将 Helm Tiller 输出作为工件使用),并且灵活性要好得多. 由于这些部署仅在管道正在运行时触发(很可能在集群管理存储库中有新提交时才触发),因此每个操作都具有书面记录,并遵循经典的合并请求工作流程(批准,合并,部署). 网络模型(Cilium)托管的应用程序和容器主机安全性(Falco)都使用此模型进行部署.

Connect the cluster to GitLab

要将 GitLab 托管应用程序部署到群集,必须首先将群集添加到 GitLab. 然后从项目或组 Kubernetes 页面安装 Web 应用程序防火墙.

请注意,您的项目不必通过 GitLab 托管或部署. 您可以独立于使用群集的应用程序来管理群集.

Set up a GitLab Runner

要安装基于 CI / CD 的 GitLab 托管应用程序,必须在 GitLab 中运行使用 GitLab Runner 的管道. 您可以在上一步中添加的 Kubernetes 集群中安装 GitLab 运行程序 ,或者如果使用的是 GitLab.com,则可以使用 GitLab 提供的共享运行程序之一.

将群集连接到 GitLab 并安装好 GitLab Runner 之后,您可以继续执行下一步,并开始安装 Cilium 和 Falco GitLab 托管应用程序以保护托管在此群集上的应用程序.

Create a Cluster Management Project

群集管理项目是一个 GitLab 项目,其中包含一个.gitlab-ci.yml文件,用于将 GitLab 托管应用程序部署到您的群集中. 该项目使用 Kubernetes cluster-admin特权运行所需的图表.

该项目的创建与其他任何 GitLab 项目一样开始. 使用一个空项目,并在根目录下添加一个gitlab-ci.yml文件,其中包含以下模板:

  1. include:
  2. - template: Managed-Cluster-Applications.gitlab-ci.yml

要使该项目成为集群管理项目,请遵循以下说明 . 即使您的应用程序未托管在 GitLab 上,也可以这样指定该项目. 在这种情况下,请创建一个新的空项目,您可以在其中选择新创建的集群管理项目.

Install GitLab Container Network Policy

GitLab 容器网络策略基于Cilium . 要安装 Cilium GitLab 托管应用程序,请将.gitlab/managed-apps/config.yaml文件添加到群集管理项目中:

  1. # possible values are gke, eks or you can leave it blank
  2. clusterType: gke
  3. cilium:
  4. installed: true

您的应用程序不必由 GitLab 进行管理或部署即可利用此功能. 阅读有关配置容器网络策略的更多信息.

Install GitLab Container Host Security

同样,您可以在.gitlab/managed-apps/config.yaml基于Falco安装 Container Host Security:

  1. falco:
  2. installed: true

阅读有关配置容器主机安全性的更多信息.