应用场景
本文档详细介绍数据安全审计 Agent 在腾讯云 TKE(容器服务)集群中的三种部署方式,包括集群 CVM 节点部署、集群 Pod 部署及超级节点 Daemonset 部署,适用于不同网络环境和业务场景,助力快速实现数据资产审计能力。
前提条件
已创建腾讯云 TKE 标准集群(支持 CVM 节点、超级节点架构)。
部署环境已安装 Docker、containerd(按需)等工具。
具备集群管理员权限,可执行镜像构建、Pod 创建、Daemonset 配置等操作。
部署方式
方式一:在集群 CVM 节点部署 Agent 服务
方式二:在集群 Pod 部署 Agent 服务
步骤1:准备 Agent 安装包
1. 登录 数据安全审计控制台,在左侧导航栏中,单击系统管理 > Agent 管理。
2. 在 Agent 管理页面,依据实际需求,选择并下载 Agent 安装包。

3. 将安装包上传至 TKE 集群节点。
步骤2:构建含 Agent 的自定义镜像
1. 将 Agent 安装包解压,通过 Dockerfile 文件(需要安装 Docker 服务)添加在镜像中。
FROM mongo:4.2.18-rc0 # FROM 镜像名称:版本ADD CapAgent/ ./CapAgent # 将解压后的 Agent 目录添加至镜像
2. 执行镜像构建命令。
docker build -f Dockerfile -t monog:4.2.18.
步骤3:镜像导入集群
若是集群运行时组件为 containerd ,可通过 Docker 打包添加在 containerd 中将镜像保存下来。
1. 保存镜像为本地文件。
docker save -o mongo4.2.18.tardocker.io/library/monog:4.2.18
2. 连接所有 K8S worker node,导入镜像。
ctr -n k8s.io image importmongo4.2.18.tar
3. 验证镜像导入结果。
ctr -n k8s.io image list | grep mongo4.2.18.tar
步骤4:创建/更新 Pod 并启动 Agent
1. 登录 TKE 控制台,选择目标集群,单击集群名称。

2. 在集群详情页面,单击 Pod。

4. 进入 Pod 容器终端,执行权限配置及 Agent 启动命令:
chmod 755 /CapAgent/bin/start.shsh /CapAgent/bin/start.sh
5. 验证部署:查看 Pod IP 与数据安全审计平台 Agent 列表中的部署 IP 一致,且 Agent 状态为 “运行中”。
在集群详情页面,单击 Pod,查看 Pod IP 。

在数据安全审计 > Agent 管理页面,单击 Agent 列表,查看数据安全审计平台 Agent 列表中的部署 IP。

方式三:TKE 超级节点上以 Daemonset 方式运行
步骤1:开启资产审计开关
1. 登录 数据安全审计控制台,在左侧导航栏中,单击数据资产。
2. 在数据资产页面,选择需要开启审计的资产,并启用该资产的 Agent 审计权限。

步骤2:准备 Agent 镜像
1. 在左侧导航栏中,单击系统管理 > Agent 管理,进入 Agent 部署页面。选择并下载 Agent 。

2. 创建 Dockerfile,内容如下:
FROM ccr.ccs.tencentyun.com/qcloud/centos:7COPY dsaagent_innernet_linux_20241231_14_47_34.zip /RUN yum install -y unzip crontabs cronieRUN unzip /dsaagent_innernet_linux_20241231_14_47_34.zipRUN cd /CapAgent/bin && chmod +x *.shRUN echo '#/bin/sh' >> /start.shRUN echo 'cd /CapAgent/bin && ./start.sh' >> /start.shRUN echo 'sleep inf' >> /start.shRUN chmod +x /start.shWORKDIR /CapAgent
3. 执行 docker build 构建镜像:
# docker build -t 镜像名 -f Dockerfile .docker build -t agent-centos -f Dockerfile .
4. 执行 docker tag 指定上传的镜像仓库:
# docker tag 镜像名:tag 镜像仓库/镜像名:tagdocker tag agent-centos:latest xxx.test.com/xxxx/agent-centos:2412311753
5. 执行 docker push 上传镜像:
# docker push 镜像仓库/镜像名:tag 如docker push xxx.test.com/xxx/agent-centos:2412311753
步骤3:创建 Daemonset 资源
1. 登录TKE 控制台,选择目标集群,单击集群名称。

2. 在集群详情页面,单击工作负载 > Daemonset。
3. 在 Daemonset 配置管理页面,单击新建。

4. 在新建 Daemonset 页面,按照提示配置基础信息。
镜像:输入步骤3上传的镜像。
镜像版本(Tag):输入步骤3上传的镜像版本。

5. 单击实例内容器 > 显示高级设置,配置启动参数。
运行命令:/bin/sh
运行参数:-c、/start.sh

6. 取消勾选访问设置 > Service ,确认配置项已填写好后,单击创建 Daemonset 即可。

步骤4:配置超级节点兼容参数
1. 在 Daemonset 页面,选择刚刚新建的 Daemonset 资源,单击操作列更多 > 编辑 yaml。

2. 加入如下配置允许在超级节点使用 Daemonset ,详情请参考 容器安全的超级节点上支持运行 DaemonSet。
spec:template:metadata:annotations:eks.tke.cloud.tencent.com/ds-injection: "true"spec:tolerations:- key: eks.tke.cloud.tencent.com/ekletoperator: Existseffect: NoSchedule

3. 继续加入如下设置(感知并监听网络设备):
spec:hostNetwork: true #true表示开启hostNetwork,使得Daemonset Pod可以感知到Host机器上的网络设备。containers:securityContext:capabilities:add:- NET_ADMIN #- NET_ADMIN表示增加NET_ADMIN能力,用于监听网络设备的流量。

4. 完整 Daemonset yaml 示例:
apiVersion: apps/v1kind: DaemonSetmetadata:annotations:deprecated.daemonset.template.generation: "19"creationTimestamp: "2024-12-31T07:13:14Z"generation: 19labels:k8s-app: agent-testqcloud-app: agent-testmanagedFields:- apiVersion: apps/v1fieldsType: FieldsV1fieldsV1:f:metadata:f:annotations:.: {}f:deprecated.daemonset.template.generation: {}f:labels:.: {}f:k8s-app: {}f:qcloud-app: {}f:spec:f:revisionHistoryLimit: {}f:selector: {}f:template:f:metadata:f:annotations:.: {}f:eks.tke.cloud.tencent.com/ds-injection: {}f:labels:.: {}f:k8s-app: {}f:qcloud-app: {}f:spec:f:affinity: {}f:containers:k:{"name":"agent-test"}:.: {}f:args: {}f:command: {}f:env:.: {}k:{"name":"PATH"}:.: {}f:name: {}f:value: {}f:image: {}f:imagePullPolicy: {}f:name: {}f:resources:.: {}f:limits:.: {}f:cpu: {}f:memory: {}f:requests:.: {}f:cpu: {}f:memory: {}f:securityContext:.: {}f:capabilities:.: {}f:add: {}f:privileged: {}f:terminationMessagePath: {}f:terminationMessagePolicy: {}f:dnsPolicy: {}f:hostNetwork: {}f:imagePullSecrets:.: {}k:{"name":"docker-login"}: {}f:restartPolicy: {}f:schedulerName: {}f:securityContext: {}f:terminationGracePeriodSeconds: {}f:tolerations: {}f:updateStrategy:f:rollingUpdate:.: {}f:maxSurge: {}f:maxUnavailable: {}f:type: {}manager: tke-platform-apioperation: Updatetime: "2024-12-31T09:53:39Z"- apiVersion: apps/v1fieldsType: FieldsV1fieldsV1:f:status:f:currentNumberScheduled: {}f:desiredNumberScheduled: {}f:numberAvailable: {}f:numberReady: {}f:observedGeneration: {}f:updatedNumberScheduled: {}manager: kube-controller-manageroperation: Updatesubresource: statustime: "2024-12-31T09:56:22Z"name: agent-testnamespace: defaultresourceVersion: "1506133824"uid: 2884870b-5992-4dd1-9a72-2dde6574d48dspec:revisionHistoryLimit: 10selector:matchLabels:k8s-app: agent-testqcloud-app: agent-testtemplate:metadata:annotations:eks.tke.cloud.tencent.com/ds-injection: "true"creationTimestamp: nulllabels:k8s-app: agent-testqcloud-app: agent-testspec:affinity: {}containers:- args:- -c- /start.shcommand:- /bin/shenv:- name: PATHvalue: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binimage: xxx.test.com/xxx/agent-centos:2412311753imagePullPolicy: IfNotPresentname: agent-testresources:limits:cpu: 500mmemory: 1Girequests:cpu: 250mmemory: 256MisecurityContext:capabilities:add:- NET_ADMINprivileged: falseterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirsthostNetwork: trueimagePullSecrets:- name: docker-loginrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30tolerations:- effect: NoSchedulekey: eks.tke.cloud.tencent.com/ekletoperator: ExistsupdateStrategy:rollingUpdate:maxSurge: 0maxUnavailable: 1type: RollingUpdatestatus:currentNumberScheduled: 4desiredNumberScheduled: 4numberAvailable: 4numberMisscheduled: 0numberReady: 4observedGeneration: 19updatedNumberScheduled: 4
5. 配置完成后单击完成,等待 Daemonset 调度至所有超级节点。
步骤 5:完成部署并验证
1. 配置完成后,等待 Daemonset 调度至所有超级节点。
2. 在集群详情页面,单击工作负载 > Daemonset,查看 Daemonset 状态,确保 “运行 / Pod 数量” 与节点数一致。
3. 在数据安全审计 > Agent 管理页面,单击 Agent 列表,确认所有节点对应的 Agent 状态为 “运行中”。
说明:
每个超级节点将自动启动含 Agent 进程的 Pod,实时监听数据库访问流量。
