Securing your deployed applications
原文:https://docs.gitlab.com/ee/user/project/clusters/securing.html
- Overview
- Connect the cluster to GitLab
- Set up a GitLab Runner
- Create a Cluster Management Project
- Install GitLab Container Network Policy
- Install GitLab Container Host Security
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
文件,其中包含以下模板:
include:
- template: Managed-Cluster-Applications.gitlab-ci.yml
要使该项目成为集群管理项目,请遵循以下说明 . 即使您的应用程序未托管在 GitLab 上,也可以这样指定该项目. 在这种情况下,请创建一个新的空项目,您可以在其中选择新创建的集群管理项目.
Install GitLab Container Network Policy
GitLab 容器网络策略基于Cilium . 要安装 Cilium GitLab 托管应用程序,请将.gitlab/managed-apps/config.yaml
文件添加到群集管理项目中:
# possible values are gke, eks or you can leave it blank
clusterType: gke
cilium:
installed: true
您的应用程序不必由 GitLab 进行管理或部署即可利用此功能. 阅读有关配置容器网络策略的更多信息.
Install GitLab Container Host Security
同样,您可以在.gitlab/managed-apps/config.yaml
基于Falco安装 Container Host Security:
falco:
installed: true