【文章摘要】 本文介绍了Kubernetes原生安全平台StackRox在OpenShift 4.7.8上面的离线安装步骤。
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容器平台以及运行在上面的工作负载的安全,通过审计、网络行为分析、安全风险诊断、安全相关配置、威胁检测和事件响应,提供对容器集群安全的可见性管理、漏洞扫描和侦测和安全合规管理。
StackRox可以保护多个OpenShift或Kubernetes集群,采用容器化方式安装,其部署架构类似于传统的Server-Agent模式,具体架构如图一所示。
图1 – StackRox 部署架构
中央集群是用于安装StackRox中央组件的集群,其上面安装的StackRox组件包括:
被管集群是需要进行安全防护的集群,其上面安装的StackRox组件包括:
如果只有一个集群,那么中央集群和被管集群就会合二为一。比如,在外面下面的安装实例中,我们就只有一个集群,因此,改集群既是中央集群,也是被管集群。
在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
StackRox安装镜像一共只有4个,分别是:
我们可以在有互联网连接的电脑上下载这些镜像,然后在上传到内部的离线镜像仓库。在我的环境中,刚好有一个既可以访问互联网有可以访问内部镜像仓库的跳板机,因此我直接采用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的方式上传到内部镜像仓库上面去。
通过执行下面的命令,roxctl将会在当前目录创建一个新目录,用于存放安装所需要的密钥(secret)、部署(deployment)等安装配置元数据。
roxctl central generate interactive
在该命令执行过程中,需要输入正确的本地环境数据,比如离线镜像的链接、集群向外暴露的方法、用户存放数据库的PV或存储类的名称等信息(由于我的OpenShift 4.7.8存在一个默认StorageClass,因此我没有指定PV或StorageClass),以下是我在安装过程中的输入数据。
图2 – 安装命令执行
命令执行完成后,roxctl在当前目创建了一个叫做central-bundle的子目录,里面存放着用于部署StackRox的脚本和yaml文件。
执行以下命令安装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获取管理员密码。
执行以下命令配置漏洞扫描:
./central-bundle/scanner/scripts/setup.sh
oc create -R -f central-bundle/scanner
登录StackRox的管理界面,进入Platform Configuration > Clusters,点击 + New Cluster按钮,添加一个新的被管集群。如果被管集群和中央集群是同一个,那么不需要修改Central API服务器链接的默认值,否则需要输入完整的能够从被管集群内访问的中央集群API Server链接。注意,由于采用离线模式,我们也需要输入本地离线镜像仓库的main 镜像链接,参考如图三所示。
接下来点击Next按钮,再选择点击Download YAML File and Keys。
将下载的文件sensor-ocp478.zip上传到可以执行oc 命令的Linux服务器上面去,执行下面的命令:
unzip -d sensor sensor-ocp478.zip
./sensor/sensor.sh
oc get pod -n stackrox -w
安装完成后,检查新加的集群,你应该能看到类似下面的图:
图3 – 新增集群的状态显示
此时如果查看StackRox的仪表盘,你应该可以看到下面的图。该图显示有一个集群、4个节点、110个安全违反以及64个deployment。
到这一步安装完成!
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论