详情页标题前

阿里云日志服务SLSKubernetes中的通用数据库审计部署方案-云淘科技

详情页1

通用数据库审计是日志服务提供的一种轻量级、低成本数据库安全方案,支持通过抓包方式上报数据库的操作行为流量到日志服务。当您将数据库部署在Kubernetes集群中时,可在容器中部署抓包程序。本文介绍如何在容器中部署抓包程序。

前提条件

已创建通用数据库审计任务。具体操作,请参见配置通用数据库审计。


说明 只需完成配置向导中的任务配置步骤,其余步骤可直接跳过,直至完成。

部署方式

Kubernetes包括Sidecar和Daemonset两种部署方式。

  • Sidecar方式

    采用Sidecar方式时,sidecar容器与业务容器是部署在同一个Pod下的,共享网络命名空间。您可以将抓包程序部署在sidecar容器中,用于上报业务容器中的数据库的操作行为流量。

  • Daemonset方式

    采用Daemonset方式时,需在每个节点上运行一个Daemonset Pod。您需要让Daemonset Pod拥有网络监听能力,使得部署在Daemonset Pod中的抓包程序可以通过节点中veth-pair接口的一端对业务容器中的数据库的操作行为流量进行抓包。

Daemonset模式

  1. 登录Kubernetes集群。
  2. 创建ConfigMap。
    1. 执行如下命令创建一个名为packetbeat.yml的YAML文件。
      vim packetbeat.yml
    2. 在packetbeat.yml文件中添加如下脚本,并根据实际情况设置其中的参数。


      说明 packetbeat.flows用于抓取网络设备的所有流量。如果不需要,可添加enabled:false,以减少数据的传输。

      packetbeat.interfaces.device: any
      
      # Set `enabled: false` or comment out all options to disable flows reporting.
      packetbeat.flows:
        timeout: 30s
        period: 10s
      
      packetbeat.protocols:
      - type: mysql
        ports: [3306,3307]
      
      output.kafka:
        hosts: ["test-project.cn-hangzhou.log.aliyuncs.com:10012"]
        username: "test-project"
        password: "{ak}#{sk}"
        ssl.certificate_authorities:
        topic: 'general-db-logstore'
        partition.round_robin:
          reachable_only: false
      
        required_acks: 1
        compression: gzip
        max_message_bytes: 1000000

      重要参数说明如下,其他参数说明请参见Configure Packetbeat。

      参数 说明
      hosts 设置连接地址,格式为{Project名称}.{Endpoint}:Port,请根据Project的访问域名进行设置。更多信息,请参见服务入口。

      • 阿里云内网:端口号为10011,例如test-project.cn-hangzhou-intranet.log.aliyuncs.com:10011。
      • 公网:端口号为10012,例如test-project.cn-hangzhou.log.aliyuncs.com:10012。
      username 设置为您在创建通用数据库审计任务时所选择的日志服务Project名称。
      password 设置为阿里云账号的AccessKey,格式为{ak}#{sk}。请根据实际情况,将{ak}替换为您的AccessKey ID,将{sk}替换为您的AccessKey Secret。如何获取AccessKey,请参见访问密钥。

      建议使用RAM用户的AccessKey。更多信息,请参见授权。

      topic 设置为日志服务Logstore名称,固定为general-db-logstore。

      该Logstore是您在创建通用数据库审计任务后,自动生成。

    3. 执行如下命令,使配置生效。
      kubectl create configmap packetbeat-config --from-file=packetbeat.yml=packetbeat.yml
  3. 部署抓包工具。
    1. 执行如下命令创建一个名为packetbeat-daemonset.yaml的YAML文件。
      vim packetbeat-daemonset.yaml
    2. 在packetbeat-daemonset.yaml文件中添加如下脚本。其中:
      • hostNetwork: true表示开启hostNetwork,使得Daemonset Pod可以感知到Host机器上的网络设备。
      • – NET_ADMIN表示增加NET_ADMIN能力,用于监听网络设备的流量。
      apiVersion: apps/v1
      kind: DaemonSet
      metadata:
        name: packetbeat-daemonset
        namespace: default
      spec:
        selector:
          matchLabels:
            app: packetbeat-daemonset
        template:
          metadata:
            name: packetbeat-daemonset
            labels:
               app: packetbeat-daemonset
          spec:
            restartPolicy: Always
            hostNetwork: true
            containers:
            - name: packetbeat
              image: docker.elastic.co/beats/packetbeat:8.1.0
              resources:
                limits:
                  cpu: 500m
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
              command: ["/bin/sh", "-c"]
              args: ["/usr/share/packetbeat/packetbeat --strict.perms=false --path.config=/etc/packetbeat/config"]
              securityContext:
                capabilities:
                  add:
                  - NET_ADMIN
              volumeMounts:
              - name: packetbeat-config
                mountPath: /etc/packetbeat/config
            terminationGracePeriodSeconds: 30
      
            volumes:
            - name: packetbeat-config
              configMap:
                name: packetbeat-config
                items:
                - key: packetbeat.yml
                  path: packetbeat.yml
                              
    3. 执行如下命令,使配置生效。
      kubectl apply -f packetbeat-daemonset.yaml

Sidecar模式

  1. 登录Kubernetes集群。
  2. 创建ConfigMap。
    1. 执行如下命令创建一个名为packetbeat.yml的YAML文件。
      vim packetbeat.yml
    2. 在packetbeat.yml文件中添加如下脚本,并根据实际情况设置其中的参数。


      说明 packetbeat.flows用于抓取网络设备的所有流量。如果不需要,可添加enabled:false,以减少数据的传输。

      packetbeat.interfaces.device: any
      
      # Set `enabled: false` or comment out all options to disable flows reporting.
      packetbeat.flows:
        timeout: 30s
        period: 10s
      
      packetbeat.protocols:
      - type: mysql
        ports: [3306,3307]
      
      output.kafka:
        hosts: ["test-project.cn-hangzhou.log.aliyuncs.com:10012"]
        username: "test-project"
        password: "{ak}#{sk}"
        ssl.certificate_authorities:
        topic: 'general-db-logstore'
        partition.round_robin:
          reachable_only: false
      
        required_acks: 1
        compression: gzip
        max_message_bytes: 1000000

      重要参数说明如下,其他参数说明请参见Configure Packetbeat。

      参数 说明
      hosts 设置连接地址,格式为{Project名称}.{Endpoint}:Port,请根据Project的访问域名进行设置。更多信息,请参见服务入口。

      • 阿里云内网:端口号为10011,例如test-project.cn-hangzhou-intranet.log.aliyuncs.com:10011。
      • 公网:端口号为10012,例如test-project.cn-hangzhou.log.aliyuncs.com:10012。
      username 设置为您在创建通用数据库审计任务时所选择的日志服务Project名称。
      password 设置为阿里云账号的AccessKey,格式为{ak}#{sk}。请根据实际情况,将{ak}替换为您的AccessKey ID,将{sk}替换为您的AccessKey Secret。如何获取AccessKey,请参见访问密钥。

      建议使用RAM用户的AccessKey。更多信息,请参见授权。

      topic 设置为日志服务Logstore名称,固定为general-db-logstore。

      该Logstore是您在创建通用数据库审计任务后,自动生成。

    3. 执行如下命令,使配置生效。
      kubectl create configmap packetbeat-config --from-file=packetbeat.yml=packetbeat.yml
  3. 部署抓包工具。
    1. 执行如下命令创建一个名为packetbeat-sidecar.yaml的YAML文件。
      vim packetbeat-sidecar.yaml
    2. 在packetbeat-sidecar.yaml文件中添加如下脚本。

      其中mysql-test为业务容器名称,请根据实际情况替换。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: packetbeat-sidecar
        namespace: default
      spec:
        selector:
          matchLabels:
            app: packetbeat-sidecar
        template:
          metadata:
            name: packetbeat-sidecar
            labels:
               app: packetbeat-sidecar
          spec:
            restartPolicy: Always
            containers:
            - name: mysql-test
              image: imega/mysql-client
              command: ["/bin/sh", "-c"]
              args: ["mysql --host='xxx' --user=xxx --password='xxx' --database=mysql --execute='show tables;'; sleep 6000"]
      
            - name: packetbeat-sidecar
              image: docker.elastic.co/beats/packetbeat:8.1.0
              command: ["/bin/sh", "-c"]
              args: ["/usr/share/packetbeat/packetbeat --strict.perms=false --path.config=/etc/packetbeat/config"]
              securityContext:
                capabilities:
                  add:
                  - NET_ADMIN
              volumeMounts:
              - name: packetbeat-config
                mountPath: /etc/packetbeat/config
      
            volumes:
            - name: packetbeat-config
              configMap:
                name: packetbeat-config
                items:
                - key: packetbeat.yml
                  path: packetbeat.yml
                              
    3. 执行如下命令,使配置生效。
      kubectl apply -f packetbeat-sidecar.yaml

后续步骤

在目标通用数据库审计任务中,查看已上报的数据。具体操作,请参见数据报表。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/163583.html

(0)
上一篇 2023年12月10日 上午5:29
下一篇 2023年12月10日
详情页2

相关推荐

  • 腾讯云云函数(SCF)SCF + MPS 视频任务回调通知工具-云淘科技

    操作场景 本文为您介绍如何使用云函数 SCF 推送 视频处理 MPS 回调信息。其中,SCF 主要提供回调消息处理,MPS 主要用于视频处理任务。 操作步骤 创建云函数 1. 登录 Serverless 控制台,单击左侧导航栏的函数服务。2. 在“函数服务”页面上方选择北京地域,并单击新建进入新建函数页面,根据页面相关信息提示进行配置。如下图所示: n …

    2023年12月9日
  • 腾讯云对象存储语音合成模板接口

    简介 本文档提供关于语音合成模板接口的 API 概览和 SDK 示例代码。注意 旧版本可能存在 bug,使用时建议升级到 最新版本。 API 操作描述 创建语音合成模板 创建语音合成模板 更新语音合成模板 更新语音合成模板 创建语音合成模板 功能说明 创建语音合成模板。 方法原型 public Guzzle\Service\Resource\Mode…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云点播删除图片

    操作场景 通过云点播控制台,您可以进行删除图片操作。本文将为您介绍如何删除图片。注意:执行删除操作后,图片将从腾讯云完全删除,无法找回,亦不可从 CDN 节点访问到该图片,请谨慎操作。 操作步骤 1. 登录 云点播控制台,单击左侧导航栏应用管理,进入应用列表页。2. 找到需要处理图片文件的应用,点击应用名称进入应用管理页。3. 默认进入媒资管理 > 音…

    腾讯云 2023年12月9日
  • 腾讯云Serverless HTTP 服务快速部署 Django 框架

    操作场景 本文将为您指导如何通过 Web Function,将您的本地 Django 快速部署到云端。说明本文档主要介绍控制台部署方案,您也可以通过命令行完成部署,详情请参见 通过命令行完成框架部署。 前提条件 在使用腾讯云云函数服务之前,您需要 注册腾讯云账号 并完成 实名认证。 操作步骤 模板部署:一键部署 Django 项目 1. 登录 Serverl…

    2023年12月9日
  • 腾讯云对象存储开通文件处理服务

    功能描述 本接口用于开通文件处理服务并生成队列。 授权说明 授权策略中 action 设置为 ci:CreateFileProcessBucket 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。 使用限制 使用该接口时,请先确认相关限制条件。详情请参见 使用限制。 请求 请求示例 POST /fi…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。