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
有关配置容器主机安全性的更多信息.