日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Kubernetes中的通用數據庫審計部署方案

通用數據庫審計是日志服務提供的一種輕量級、低成本數據庫安全方案,支持通過抓包方式上報數據庫的操作行為流量到日志服務SLS。當您將數據庫部署在Kubernetes集群中時,可在容器中部署抓包程序。本文介紹如何在容器中部署抓包程序。

前提條件

  • 已有正在運行的Kubernetes集群,如未創建,推薦使用容器服務 Kubernetes 版

  • 已創建通用數據庫審計任務。具體操作,請參見配置通用數據庫審計

    說明

    只需完成配置向導中的任務配置步驟,其余步驟可直接跳過,直至完成。

方案概覽

Kubernetes支持Daemonset和Sidecar兩種部署方式,您可根據實際需要選擇部署。

  • Daemonset方式

    采用Daemonset方式時,需在每個節點上運行一個Daemonset Pod。您需要讓Daemonset Pod擁有網絡監聽能力,使得部署在Daemonset Pod中的抓包程序可以通過節點中veth-pair接口的一端對業務容器中的數據庫的操作行為流量進行抓包。

  • Sidecar方式

    采用Sidecar方式時,sidecar容器與業務容器是部署在同一個Pod下的,共享網絡命名空間。您可以將抓包程序部署在sidecar容器中,用于上報業務容器中的數據庫的操作行為流量。

步驟一:創建ConfigMap

  1. 登錄Kubernetes控制臺服務器,創建一個名為packetbeat.yml的YAML文件,并寫入以下內容,請根據實際情況設置其中的參數。

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
說明

packetbeat.flows用于捕獲網絡設備的所有流量。如果不需要,可添加enabled:false,以減少數據的傳輸。

重要參數說明如下,其他參數說明請參見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是您在創建通用數據庫審計任務后,自動生成。

  1. 執行如下命令,創建ConfigMap。

    kubectl create configmap packetbeat-config --from-file=packetbeat.yml=packetbeat.yml

步驟二:部署抓包程序

方式一:Daemonset模式部署

  1. 登錄Kubernetes 控制臺服務器,創建一個名為packetbeat-daemonset.yaml的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          
  2. 執行如下命令,創建packetbeat-daemonset容器。

    kubectl apply -f packetbeat-daemonset.yaml

方式二:Sidecar模式部署

  1. 登錄Kubernetes 控制臺服務器,執行如下命令創建一個名為packetbeat-sidecar.yaml的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
                            
  2. 執行如下命令,創建packetbeat-sidecar容器。

    kubectl apply -f packetbeat-sidecar.yaml

后續步驟

在目標通用數據庫審計任務中,查看已上報的數據。具體操作,請參見數據報表