Securing your deployed applications

Securing your deployed applications

使用 GitLab 可以轻松保护在部署的应用程序的安全. 您可以从Web 应用程序防火墙 , 甚至容器主机安全性的保护中受益.

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

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

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

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

  • 您的群集已连接到 GitLab(ModSecurity,Cilium 和 Falco).

Understanding how GitLab Managed Apps are installed

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

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

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

但是,下一代的 GitLab 托管应用程序 V2( )不使用 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 托管或部署. 您可以独立于使用群集的应用程序来管理群集.

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

Create a Cluster Management Project

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

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

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

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

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

Install GitLab Container Host Security

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