WilliamShen
作者WilliamShen·2021-05-25 16:42
高级方案架构师·红帽企业级开源解决方案中心

StackRox离线安装

字数 3975阅读 3066评论 0赞 1

【文章摘要】 本文介绍了Kubernetes原生安全平台StackRox在OpenShift 4.7.8上面的离线安装步骤。

1 背景

StackRox是一个用于保护Kubernetes容器平台的安全工具,其自身定位于Kubernetes原生安全平台。2021年红帽公司收购了StackRox公司,将StackRox产品名称修改为Red Hat Advanced Cluster Security for Kubernetes,简称ACS(本文以下都通称为StackRox), 并且在2021年5月宣布成立了StackRox开源社区(https://github.com/stackrox)。

StackRox致力于保护OpenShift或Kubernetes容器平台以及运行在上面的工作负载的安全,通过审计、网络行为分析、安全风险诊断、安全相关配置、威胁检测和事件响应,提供对容器集群安全的可见性管理、漏洞扫描和侦测和安全合规管理。

2 StackRox的部署架构

StackRox可以保护多个OpenShift或Kubernetes集群,采用容器化方式安装,其部署架构类似于传统的Server-Agent模式,具体架构如图一所示。

图1 – StackRox 部署架构

中央集群是用于安装StackRox中央组件的集群,其上面安装的StackRox组件包括:

  • Central - 提供图形界面、API服务以及策略引擎。
  • Scanner - 镜像扫描工具
  • Scanner DB - 镜像扫描需要的数据库,用于缓存镜像中的各层数据。

被管集群是需要进行安全防护的集群,其上面安装的StackRox组件包括:

  • Sensor – Sensor用于和管理端的Central通信,用于接收安全命令并加以执行。
  • Collector – 数据采集和运行时候的系统检测,以DaemonSet的方式运行在每一个节点上面。
  • Admission Controller – 是Kubernetes的KubeAdmissionController的插件,以ReplicaSet方式存在多个副本。

如果只有一个集群,那么中央集群和被管集群就会合二为一。比如,在外面下面的安装实例中,我们就只有一个集群,因此,改集群既是中央集群,也是被管集群。

3 StackRox的离线安装步骤

3.1 安装roxctl命令行

在Linux服务器上面执行下面的命令获取roxctl命令行:

curl -O https://mirror.openshift.com/pub/rhacs/assets/3.0.60.0/bin/Linux/roxctl
chmod +x roxctl
sudo mv roxctl /usr/local/bin/roxctl
roxctl version

3.2 获取安装镜像

StackRox安装镜像一共只有4个,分别是:

  • registry.redhat.io/rh-acs/main:3.0.60.0
  • registry.redhat.io/rh-acs/scanner:2.14.0
  • registry.redhat.io/rh-acs/scanner-db:2.14.0
  • registry.redhat.io/rh-acs/collector:3.1.22-latest

我们可以在有互联网连接的电脑上下载这些镜像,然后在上传到内部的离线镜像仓库。在我的环境中,刚好有一个既可以访问互联网有可以访问内部镜像仓库的跳板机,因此我直接采用podman pull, podman tag和podman push的操作方法,具体操作命令如下。

## pull remote images
podman pull registry.redhat.io/rh-acs/main:3.0.60.0
podman pull registry.redhat.io/rh-acs/scanner:2.14.0
podman pull registry.redhat.io/rh-acs/scanner-db:2.14.0
podman pull registry.redhat.io/rh-acs/collector:3.1.22-latest

## tag
podman tag registry.redhat.io/rh-acs/main:3.0.60.0 registry.ocp4.example.com:5443/rh-acs/main:3.0.60.0
podman tag registry.redhat.io/rh-acs/scanner:2.14.0 registry.ocp4.example.com:5443/rh-acs/scanner:2.14.0
podman tag registry.redhat.io/rh-acs/scanner-db:2.14.0 registry.ocp4.example.com:5443/rh-acs/scanner-db:2.14.0
podman tag registry.redhat.io/rh-acs/collector:3.1.22-latest registry.ocp4.example.com:5443/rh-acs/collector:3.1.22-latest

## push to local image registry
podman push registry.ocp4.example.com:5443/rh-acs/main:3.0.60.0
podman push registry.ocp4.example.com:5443/rh-acs/scanner:2.14.0
podman push registry.ocp4.example.com:5443/rh-acs/scanner-db:2.14.0
podman push registry.ocp4.example.com:5443/rh-acs/collector:3.1.22-latest

如果我们没有这样的跳板机,可以先用podman save将镜像存储到一个本地文件,然后将文件通过U盘等方式复制到内部环境,再用podman load,podman tag和podman push的方式上传到内部镜像仓库上面去。

3.3 执行交互式安装命令创建安装配置元数据

通过执行下面的命令,roxctl将会在当前目录创建一个新目录,用于存放安装所需要的密钥(secret)、部署(deployment)等安装配置元数据。

roxctl central generate interactive

在该命令执行过程中,需要输入正确的本地环境数据,比如离线镜像的链接、集群向外暴露的方法、用户存放数据库的PV或存储类的名称等信息(由于我的OpenShift 4.7.8存在一个默认StorageClass,因此我没有指定PV或StorageClass),以下是我在安装过程中的输入数据。

图2 – 安装命令执行

命令执行完成后,roxctl在当前目创建了一个叫做central-bundle的子目录,里面存放着用于部署StackRox的脚本和yaml文件。

3.4 安装Central组件

执行以下命令安装Central组件:

./central-bundle/central/scripts/setup.sh
oc create -R -f central-bundle/central
## check stackrox pods
oc get pod -n stackrox -w

在StackRox Central执行完之后,使用下面的OpenShift命令获取ROUTE的链接,然后就可以用浏览器访问StackRox的图形管理界面了。

oc -n stackrox get route central

StackRox的默认管理员是admin,如果你是采用自动产生密码的安装方式,可以通过查看文件central-bundle/password获取管理员密码。

3.5 配置漏洞扫描

执行以下命令配置漏洞扫描:

./central-bundle/scanner/scripts/setup.sh
oc create -R -f central-bundle/scanner

3.6 安装Sensor

登录StackRox的管理界面,进入Platform Configuration > Clusters,点击 + New Cluster按钮,添加一个新的被管集群。如果被管集群和中央集群是同一个,那么不需要修改Central API服务器链接的默认值,否则需要输入完整的能够从被管集群内访问的中央集群API Server链接。注意,由于采用离线模式,我们也需要输入本地离线镜像仓库的main 镜像链接,参考如图三所示。

接下来点击Next按钮,再选择点击Download YAML File and Keys。


图3 - 添加一个被管集群

将下载的文件sensor-ocp478.zip上传到可以执行oc 命令的Linux服务器上面去,执行下面的命令:

unzip -d sensor sensor-ocp478.zip
./sensor/sensor.sh
oc get pod -n stackrox -w

安装完成后,检查新加的集群,你应该能看到类似下面的图:

图3 – 新增集群的状态显示

3.7 检查安装情况

此时如果查看StackRox的仪表盘,你应该可以看到下面的图。该图显示有一个集群、4个节点、110个安全违反以及64个deployment。

到这一步安装完成!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

X社区推广