数据安全审计 TKE(容器服务)集群部署数审 Agent 实践教程

这篇档详细介绍数据安全审计 Agent 在腾讯云 TKE(容器服务)集群中的三种部署方式,包括集群 CVM 节点部署、集群 Pod 部署及超级节点 Daemonset 部署,适用于不同网络环境和业务场景,助力快速实现数据资产审计能力。

相关产品
数据安全审计 产品页,含版本规格、价格与购买入口。

一、前提条件

·已创建腾讯云 TKE 标准集群(支持 CVM 节点、超级节点架构)。

·部署环境已安装 Docker、containerd(按需)等工具。

·具备集群管理员权限,可执行镜像构建、Pod 创建、Daemonset 配置等操作。

二、方式一:在集群 CVM 节点部署 Agent 服务

参考 数据安全审计 Agent 部署,直接在 TKE 集群的 CVM 节点执行 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.tar docker.io/library/monog:4.2.18

2. 连接所有 K8S worker node,导入镜像。

ctr -n k8s.io image import mongo4.2.18.tar

3. 验证镜像导入结果。

ctr -n k8s.io image list | grep mongo4.2.18.tar

六、步骤4:创建/更新 Pod 并启动 Agent

1. 登录 TKE 控制台,选择目标集群,单击集群名称。

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

3. 在 Pod 配置管理页面,新建或编辑目标 Pod。镜像与镜像版本请填写步骤2或步骤3构建的自定义镜像和版本。

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。

七、步骤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/eklet operator: Exists effect: 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: 19 labels: k8s-app: agent-test qcloud-app: agent-test managedFields: – apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: 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-api operation: Update time: "2024-12-31T09:53:39Z" – apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:currentNumberScheduled: {} f:desiredNumberScheduled: {} f:numberAvailable: {} f:numberReady: {} f:observedGeneration: {} f:updatedNumberScheduled: {} manager: kube-controller-manager operation: Update subresource: status time: "2024-12-31T09:56:22Z" name: agent-test namespace: default resourceVersion: "1506133824" uid: 2884870b-5992-4dd1-9a72-2dde6574d48dspec: revisionHistoryLimit: 10 selector: matchLabels: k8s-app: agent-test qcloud-app: agent-test template: metadata: annotations: eks.tke.cloud.tencent.com/ds-injection: "true" creationTimestamp: null labels: k8s-app: agent-test qcloud-app: agent-test spec: affinity: {} containers: – args: – -c – /start.sh command: – /bin/sh env: – name: PATH value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin image: xxx.test.com/xxx/agent-centos:2412311753 imagePullPolicy: IfNotPresent name: agent-test resources: limits: cpu: 500m memory: 1Gi requests: cpu: 250m memory: 256Mi securityContext: capabilities: add: – NET_ADMIN privileged: false terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst hostNetwork: true imagePullSecrets: – name: docker-login restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 tolerations: – effect: NoSchedule key: eks.tke.cloud.tencent.com/eklet operator: Exists updateStrategy: rollingUpdate: maxSurge: 0 maxUnavailable: 1 type: RollingUpdatestatus: currentNumberScheduled: 4 desiredNumberScheduled: 4 numberAvailable: 4 numberMisscheduled: 0 numberReady: 4 observedGeneration: 19 updatedNumberScheduled: 4

5. 配置完成后单击完成,等待 Daemonset 调度至所有超级节点。

十一、步骤 5:完成部署并验证

1. 配置完成后,等待 Daemonset 调度至所有超级节点。

2. 在集群详情页面,单击工作负载 > Daemonset,查看 Daemonset 状态,确保 “运行 / Pod 数量” 与节点数一致。

3. 在数据安全审计 > Agent 管理页面,单击 Agent 列表,确认所有节点对应的 Agent 状态为 “运行中”。

注意:说明:

注意:每个超级节点将自动启动含 Agent 进程的 Pod,实时监听数据库访问流量。

赞 (0)
上一篇 5天前
下一篇 5天前