×

您可以收集审计日志,这些日志是一组与安全相关的按时间顺序排列的记录,记录了影响系统中各个用户、管理员或其他组件的活动序列。

例如,审计日志可以帮助您了解自动缩放请求来自何处。当后端因用户应用程序发出的自动缩放请求而过载,并且您需要确定哪个应用程序有问题时,此信息至关重要。

配置审计日志记录

您可以通过编辑KedaController自定义资源来配置自定义指标自动缩放操作员的审计。日志被发送到KedaController CR 中使用持久卷声明保护的卷上的审计日志文件。

先决条件
  • 必须安装自定义指标自动缩放操作员。

步骤
  1. 编辑KedaController自定义资源以添加auditConfig

    kind: KedaController
    apiVersion: keda.sh/v1alpha1
    metadata:
      name: keda
      namespace: openshift-keda
    spec:
    # ...
      metricsServer:
    # ...
        auditConfig:
          logFormat: "json" (1)
          logOutputVolumeClaim: "pvc-audit-log" (2)
          policy:
            rules: (3)
            - level: Metadata
            omitStages: "RequestReceived" (4)
            omitManagedFields: false (5)
          lifetime: (6)
            maxAge: "2"
            maxBackup: "1"
            maxSize: "50"
    1 指定审计日志的输出格式,legacyjson
    2 指定用于存储日志数据的现有持久卷声明。所有传入 API 服务器的请求都记录到此持久卷声明中。如果将此字段留空,则日志数据将发送到标准输出。
    3 指定应记录哪些事件以及它们应包含哪些数据
    • None:不记录事件。

    • Metadata:仅记录请求的元数据,例如用户、时间戳等。不记录请求文本和响应文本。这是默认值。

    • Request:仅记录元数据和请求文本,但不记录响应文本。此选项不适用于非资源请求。

    • RequestResponse:记录事件元数据、请求文本和响应文本。此选项不适用于非资源请求。

    4 指定不创建事件的阶段。
    5 指定是否省略从请求和响应正文中写入 API 审计日志的托管字段,使用true省略字段,使用false包含字段。
    6 指定审计日志的大小和生命周期。
    • maxAge:根据其文件名中编码的时间戳,保留审计日志文件的最大天数。

    • maxBackup:要保留的最大审计日志文件数量。设置为0以保留所有审计日志文件。

    • maxSize:审计日志文件在旋转之前允许的最大大小(以兆字节为单位)。

验证
  1. 直接查看审计日志文件

    1. 获取keda-metrics-apiserver-* pod 的名称

      oc get pod -n openshift-keda
      示例输出
      NAME                                                  READY   STATUS    RESTARTS   AGE
      custom-metrics-autoscaler-operator-5cb44cd75d-9v4lv   1/1     Running   0          8m20s
      keda-metrics-apiserver-65c7cc44fd-rrl4r               1/1     Running   0          2m55s
      keda-operator-776cbb6768-zpj5b                        1/1     Running   0          2m55s
    2. 使用类似于以下命令查看日志数据

      $ oc logs keda-metrics-apiserver-<hash>|grep -i metadata (1)
      1 可选:您可以使用grep命令指定要显示的日志级别:MetadataRequestRequestResponse

      例如

      $ oc logs keda-metrics-apiserver-65c7cc44fd-rrl4r|grep -i metadata
      示例输出
       ...
      {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"4c81d41b-3dab-4675-90ce-20b87ce24013","stage":"ResponseComplete","requestURI":"/healthz","verb":"get","user":{"username":"system:anonymous","groups":["system:unauthenticated"]},"sourceIPs":["10.131.0.1"],"userAgent":"kube-probe/1.28","responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2023-02-16T13:00:03.554567Z","stageTimestamp":"2023-02-16T13:00:03.555032Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}}
       ...
  2. 或者,您可以查看特定日志

    1. 使用类似于以下命令登录到keda-metrics-apiserver-* pod

      $ oc rsh pod/keda-metrics-apiserver-<hash> -n openshift-keda

      例如

      $ oc rsh pod/keda-metrics-apiserver-65c7cc44fd-rrl4r -n openshift-keda
    2. 更改到/var/audit-policy/目录

      sh-4.4$ cd /var/audit-policy/
    3. 列出可用的日志

      sh-4.4$ ls
      示例输出
      log-2023.02.17-14:50  policy.yaml
    4. 根据需要查看日志

      sh-4.4$ cat <log_name>/<pvc_name>|grep -i <log_level> (1)
      1 可选:您可以使用grep命令指定要显示的日志级别:MetadataRequestRequestResponse

      例如

      sh-4.4$ cat log-2023.02.17-14:50/pvc-audit-log|grep -i Request
      示例输出
       ...
      {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Request","auditID":"63e7f68c-04ec-4f4d-8749-bf1656572a41","stage":"ResponseComplete","requestURI":"/openapi/v2","verb":"get","user":{"username":"system:aggregator","groups":["system:authenticated"]},"sourceIPs":["10.128.0.1"],"responseStatus":{"metadata":{},"code":304},"requestReceivedTimestamp":"2023-02-17T13:12:55.035478Z","stageTimestamp":"2023-02-17T13:12:55.038346Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"system:discovery\" of ClusterRole \"system:discovery\" to Group \"system:authenticated\""}}
       ...