主机安全服务支持防护华为云CCE集群、第三方云集群、自建集群以及非集群容器,本章节为您介绍如何将这些资产接入HSS。
背景信息
HSS在提供“容器安装与配置”功能之前,提供了“集群Agent管理”功能实现集群容器资产接入HSS,但通过“集群Agent管理”功能接入HSS的集群资产,无法使用部分容器相关功能,例如容器防火墙、容器集群防护等。
因此HSS在Linux Agent 3.2.12及以上版本、Windows Agent 4.0.23及以上版本提供“容器安装与配置”功能,替代“集群Agent管理”功能,以实现将集群资产完全接入HSS,并能使用HSS提供的所有容器相关功能。
如果您此前使用“集群Agent管理”功能接入了集群资产,为了您能够享受到更好的容器安全防护服务,建议您为集群卸载Agent,再通过本章节提供的接入方式,重新接入集群资产。为集群卸载Agent的操作请参见卸载集群Agent。
ANP-Agent说明
本文非CCE集群接入HSS过程中涉及集群连接组件(ANP-Agent),集群连接组件(ANP-Agent)的作用是用于打通主机安全服务到集群的通信,和HSS Agent是两个独立的组件,因此请您注意区分。HSS Agent概念说明请参见Agent概述。
前提条件
- CCE集群接入HSS前,请先将CCEOperatePolicy权限授予HSS,详细操作请参见授权关联云服务权限。
- 非CCE集群接入HSS前,请先准备kubeconfig文件。具体操作如下:
kubeconfig文件用于将集群的操作权限授权给HSS,方式一配置的kubeconfig文件包含集群管理员权限,方式二生成的kubeconfig文件仅包含HSS所需权限,如果您担心过度授权的问题,请通过方式二准备kubeconfig文件。
- 方式一:配置默认的kubeconfig文件
默认的kubeconfig文件在$HOME/.kube/config路径下,您需要按以下操作创建HSS的专属命名空间。
- 登录任一集群节点。
- 创建hss.yaml文件,并将以下内容复制到hss.yaml文件中。
{"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}
- 执行以下命令,创建HSS的专属命名空间。
kubectl apply -f hss.yaml
- 方式二:生成HSS专用的kubeconfig文件
- 创建HSS的专属命名空间和服务账号。
- 登录任一集群节点。
- 创建hss-account.yaml文件,并将以下内容复制到hss-account.yaml文件中。
{"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}{"metadata":{"name":"hss-user","namespace":"hss"},"apiVersion":"v1","kind":"ServiceAccount"}{"metadata":{"name":"hss-user-token","namespace":"hss","annotations":{"kubernetes.io/service-account.name":"hss-user"}},"apiVersion":"v1","kind":"Secret","type":"kubernetes.io/service-account-token"}
- 执行以下命令,创建HSS的专属命名空间和服务账号。
kubectl apply -f hss-account.yaml
- 生成kubeconfig文件。
- 创建gen_kubeconfig.sh文件,并将以下内容复制到gen_kubeconfig.sh文件中。
#!/bin/bash
KUBE_APISERVER=`kubectl config view --output=jsonpath='{.clusters[].cluster.server}' | head -n1 `
CLUSTER_NAME=`kubectl config view -o jsonpath='{.clusters[0].name}'`
kubectl get secret hss-user-token -n hss -o yaml |grep ca.crt: | awk '{print $2}' |base64 -d >hss_ca_crt
kubectl config set-cluster ${CLUSTER_NAME} --server=${KUBE_APISERVER} --certificate-authority=hss_ca_crt --embed-certs=true --kubeconfig=hss_kubeconfig.yaml
kubectl config set-credentials hss-user --token=$(kubectl describe secret hss-user-token -n hss | awk '/token:/{print $2}') --kubeconfig=hss_kubeconfig.yaml
kubectl config set-context hss-user@kubernetes --cluster=${CLUSTER_NAME} --user=hss-user --kubeconfig=hss_kubeconfig.yaml
kubectl config use-context hss-user@kubernetes --kubeconfig=hss_kubeconfig.yaml
- 执行以下命令,生成名称为“hss_kubeconfig.yaml”的kubeconfig文件
bash gen_kubeconfig.sh
约束与限制
- CCE集群限制:
- 版本限制:CCE标准版、CCE Turbo版。
- 节点资源剩余要求:内存必须50MiB及以上,CPU必须200m及以上
- 第三方云集群或自集群限制:
- 节点规格要求:CPU必须2核及以上,内存必须4GiB及以上,系统盘必须40GiB及以上,数据盘必须100GiB及以上
- 私网接入Region限制:目前仅北京一、北京四、上海一、上海二、广州、香港、新加坡、贵阳一、雅加达支持第三方云集群或自建集群通过私网接入HSS。
非集群节点接入HSS
非集群纳管的容器接入HSS,和普通主机接入HSS方式一致,即在节点上安装Agent即可。安装Agent操作详情请参见为主机安装Agent。
集群接入HSS
集群接入HSS,即在集群节点上安装Agent,将集群资产接入HSS进行防护。不同类型的集群的接入方法,请参考以下方式:
CCE集群接入HSS
适用于CCE集群,配置完成后会在集群节点中自动安装HSS Agent,并且随集群扩容同步安装、缩容同步卸载。
- 登录管理控制台。
- 在页面左上角选择“区域”,单击,选择“安全与合规 > 主机安全服务”,进入主机安全平台界面。
- 在左侧导航栏,选择,进入“容器安装与配置”页面。
- 在“集群”页签,单击“接入资产”,弹出“容器资产接入与安装”对话框。
- 选择“CCE集群安装”,并单击“开始配置”。
- 勾选目标集群,并单击“下一步”。
- 配置Agent相关参数。参数说明如表 Agent配置参数说明所示。
表1 Agent配置参数说明
参数名称 |
参数说明 |
配置规则 |
选择Agent配置规则。
- 默认规则:容器运行时的sock地址为通用地址,Agent将默认安装在没有配置污点的节点上。
- 自定义规则:如果您的容器运行时sock地址非通用地址需要修改,或仅需要在指定的节点上安装Agent,可选择该规则。
说明:
- 如果容器运行时的sock地址不正确,可能导致集群接入HSS后,部分HSS功能不能正常使用。
- 在进行容器运行时配置时,建议全选所有运行时类型。
|
高级配置(可选) |
配置规则选择“自定义规则”时,支持配置。
单击展开所有高级配置项。
- 开启Agent自动升级
是否开启Agent自动升级,勾选即开启,开启后,每日00:00~06:00,主机安全服务将自动升级低版本的Agent为最新版,以便为您提供更好的服务。
- 节点选择器配置
单击“引用节点标签”,可选择需要安装Agent的节点标签。不选择,默认在所有没有配置污点的节点上安装Agent。
- 容忍度配置
如果在进行“节点选择器配置”时,选择了污点节点标签,需要在该污点节点上安装Agent,可单击“引用节点污点”,选择容忍节点污点。
|
- 配置完成,单击“确认”,开始安装HSS Agent。
- 在集群列表中,查看集群状态为“运行中”,表示集群接入HSS成功。
非CCE集群接入HSS(公网)
适用于可访问SWR镜像仓的自建集群或三方云集群,配置完成后会在集群节点中自动安装HSS Agent,并随集群扩容同步安装、缩容同步卸载。
- 登录管理控制台。
- 在页面左上角选择“区域”,单击,选择“安全与合规 > 主机安全服务”,进入主机安全平台界面。
- 在左侧导航栏,选择,进入“容器安装与配置”页面。
- 在“集群”页签,单击“接入资产”,弹出“容器资产接入与安装”对话框。
- 选择“非CCE集群(公网接入)”,并单击“开始配置”。
- 配置集群接入信息,并单击“生成命令”。接入信息相关参数说明如表 配置接入信息参数说明所示。
图1 配置集群接入信息
表2 配置接入信息参数说明
参数名称 |
参数说明 |
集群名称 |
填写接入的集群名称。 |
服务商 |
选择集群所属的服务商。目前支持接入以下服务商的集群:
|
上传kubeconfig |
添加并上传根据前提条件配置好的kubeconfig文件。 |
选择Context |
上传kubeconfig文件后,HSS会自动解析出Context。 |
选择有效期 |
上传kubeconfig文件后,HSS会自动解析出有效期。您可以选择最终有效期以前的时间,在选择的有效期到期后,您需要重新接入该资产。 |
- 执行以下操作为集群安装集群连接组件(ANP-Agent),建立HSS和集群的连接。
- 单击“下载Yaml文件”,下载生成的命令文件。
图2 下载Yaml文件
- 将文件拷贝到任一节点目录下,执行以下命令安装集群连接组件(ANP-Agent)。
kubectl apply -f proxy-agent.yaml
- 执行以下命令,查询集群连接组件(ANP-Agent)是否安装成功。
kubectl get pods -n hss | grep proxy-agent
界面回显如图 集群Agent安装成功所示,表示集群连接组件(ANP-Agent)安装成功。
图3 ANP-Agent安装成功
- 执行以下命令,查询集群和HSS是否成功建立连接。
for a in $(kubectl get pods -n hss| grep proxy-agent | cut -d ' ' -f1); do kubectl -n hss logs $a | grep 'Start serving';done
界面回显如图 集群连接HSS成功所示,表示集群和HSS建立连接成功。
图4 集群连接HSS成功
- 单击“下一步”。
- 配置Agent相关参数。参数说明如表 Agent配置参数说明所示。
表3 Agent配置参数说明
参数名称 |
参数说明 |
配置规则 |
选择Agent配置规则。
- 默认规则:容器运行时的sock地址为通用地址,Agent将默认安装在没有配置污点的节点上。
- 自定义规则:如果您的容器运行时sock地址非通用地址需要修改,或仅需要在指定的节点上安装Agent,可选择该规则。
说明:
- 如果容器运行时的sock地址不正确,可能导致集群接入HSS后,部分HSS功能不能正常使用。
- 在进行容器运行时配置时,建议全选所有运行时类型。
|
高级配置(可选) |
配置规则选择“自定义规则”时,支持配置。
单击展开所有高级配置项。
- 开启Agent自动升级
是否开启Agent自动升级,勾选即开启,开启后,每日00:00~06:00,主机安全服务将自动升级低版本的Agent为最新版,以便为您提供更好的服务。
- 节点选择器配置
单击“引用节点标签”,可选择需要安装Agent的节点标签。不选择,默认在所有没有配置污点的节点上安装Agent。
- 容忍度配置
如果在进行“节点选择器配置”时,选择了污点节点标签,需要在该污点节点上安装Agent,可单击“引用节点污点”,选择容忍节点污点。
|
- 配置完成,单击“确认”,开始安装HSS Agent。
- 在集群列表中,查看集群状态为“运行中”,表示集群接入HSS成功。
非CCE集群接入HSS(私网)
适用于无法访问SWR镜像仓的私网K8s自建集群或三方云集群,需手工打通网络并配置镜像仓信息,配置完成后会在集群节点中自动安装HSS Agent,并随集群扩容同步安装、缩容同步卸载。
- 登录管理控制台。
- 在页面左上角选择“区域”,单击,选择“安全与合规 > 主机安全服务”,进入主机安全平台界面。
- 在左侧导航栏,选择,进入“容器安装与配置”页面。
- 在“集群”页签,单击“接入资产”,弹出“容器资产接入与安装”对话框。
- 选择“非CCE集群(私网接入)”,并单击“开始配置”。
- 配置镜像仓信息,并单击“生成命令”。相关参数说明如表 配置镜像仓信息所示。
表4 配置镜像仓信息
参数名称 |
参数说明 |
三方镜像仓库地址 |
填写三方镜像仓库地址。
地址示例:hub.docker.com |
镜像仓类型 |
选择镜像仓的类型。当前支持选择的类型如下:
|
组织名称 |
填写镜像仓组织名称。 |
镜像仓用户名 |
填写镜像仓用户名。 |
镜像仓密码 |
填写镜像仓密码。 |
- 执行以下操作,将集群连接组件(ANP-Agent)和HSS Agent的镜像上传至您的私有镜像仓。
- 单击“集群防护组件镜像压缩包”,下载压缩包到本地,并拷贝压缩包到任一集群节点上。
- 单击“复制镜像上传命令”,复制命令,并在集群节点上执行该命令。
图5 复制镜像上传命令
命令执行后界面回显如图 镜像仓上传成功所示,表示上传成功。
图6 镜像仓上传成功
- 单击“下一步”。
- 配置集群接入信息,并单击“生成命令”。接入信息相关参数说明如表 配置接入信息参数说明所示。
图7 配置集群接入信息
表5 配置接入信息参数说明
参数名称 |
参数说明 |
集群名称 |
填写接入的集群名称。 |
服务商 |
选择集群所属的服务商。目前支持接入以下服务商的集群:
|
上传kubeconfig |
添加并上传根据前提条件配置好的kubeconfig文件。 |
选择Context |
上传kubeconfig文件后,HSS会自动解析出Context。 |
选择有效期 |
上传kubeconfig文件后,HSS会自动解析出有效期。您可以选择最终有效期以前的时间,在选择的有效期到期后,您需要重新接入该资产。 |
- 执行以下操作为集群安装集群连接组件(ANP-Agent),建立HSS和集群的连接。
- 单击“复制命令”。
图8 复制命令
- 登录到任一节点目录,执行复制的命令,创建集群拉取私有镜像的凭证。
- 单击“下载Yaml文件”,下载生成的命令文件。
图9 下载Yaml文件
- 将文件拷贝到任一节点目录下,执行以下命令安装集群连接组件(ANP-Agent)。
kubectl apply -f proxy-agent.yaml
- 执行以下命令,查询集群连接组件(ANP-Agent)是否安装成功。
kubectl get pods -n hss | grep proxy-agent
界面回显如图 集群Agent安装成功所示,表示集群连接组件(ANP-Agent)安装成功。
图10 ANP-Agent安装成功
- 执行以下命令,查询集群和HSS是否成功建立连接。
for a in $(kubectl get pods -n hss| grep proxy-agent | cut -d ' ' -f1); do kubectl -n hss logs $a | grep 'Start serving';done
界面回显如图 集群连接HSS成功所示,表示集群和HSS建立连接成功。
图11 集群连接HSS成功
- 单击“下一步”。
- 配置Agent相关参数。参数说明如表 Agent配置参数说明所示。
表6 Agent配置参数说明
参数名称 |
参数说明 |
配置规则 |
选择Agent配置规则。
- 默认规则:容器运行时的sock地址为通用地址,Agent将默认安装在没有配置污点的节点上。
- 自定义规则:如果您的容器运行时sock地址非通用地址需要修改,或仅需要在指定的节点上安装Agent,可选择该规则。
说明:
- 如果容器运行时的sock地址不正确,可能导致集群接入HSS后,部分HSS功能不能正常使用。
- 在进行容器运行时配置时,建议全选所有运行时类型。
|
高级配置(可选) |
配置规则选择“自定义规则”时,支持配置。
单击展开所有高级配置项。
- 开启Agent自动升级
是否开启Agent自动升级,勾选即开启,开启后,每日00:00~06:00,主机安全服务将自动升级低版本的Agent为最新版,以便为您提供更好的服务。
- 节点选择器配置
单击“引用节点标签”,可选择需要安装Agent的节点标签。不选择,默认在所有没有配置污点的节点上安装Agent。
- 容忍度配置
如果在进行“节点选择器配置”时,选择了污点节点标签,需要在该污点节点上安装Agent,可单击“引用节点污点”,选择容忍节点污点。
|
- 配置完成,单击“确认”,开始安装HSS Agent。
- 在集群列表中,查看集群状态为“运行中”,表示集群接入HSS成功。
后续操作
集群节点或非集群节点接入HSS后,还处于未防护状态,您需要为这些资产开启防护,详细操作请参见开启容器版防护。