3.7. 收集审计日志


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

例如,审计日志可帮助您了解自动扩展请求来自哪里。当后端因为用户应用程序发出的请求造成过载时,这个信息非常重要,您需要确定哪个是有问题的应用程序。

3.7.1. 配置审计日志记录

您可以通过编辑 KedaController 自定义资源来为自定义 Metrics Autoscaler Operator 配置审计。日志通过 KedaController CR 中的持久性卷声明发送到卷的审计日志文件。

先决条件

  • 必须安装 Custom Metrics Autoscaler Operator。

流程

  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 服务器的请求都会记录到此持久性卷声明。如果将此字段留空,日志数据将发送到 stdout。
    3
    指定应记录哪些事件及其应包含哪些数据:
    • None :不记录事件。
    • Metadata :仅记录请求的元数据,如用户、时间戳等。不要记录请求文本和响应文本。这是默认值。
    • Request :仅记录元数据和请求文本,而不记录响应文本。这个选项不适用于非资源请求。
    • RequestResponse :日志事件元数据、请求文本和响应文本。这个选项不适用于非资源请求。
    4
    指定没有创建事件的阶段。
    5
    指定是否省略请求的 managed 字段,并从写入 API 审计日志的响应正文,可以是 true 来省略字段,或 false 包含字段。
    6
    指定审计日志的大小和生命周期。
    • MaxAge :根据文件名中编码的时间戳,保留审计日志文件的最大天数。
    • maxBackup :要保留的审计日志文件的最大数量。设置为 0 以保留所有审计日志文件。
    • maxsize :在轮转审计日志文件前以 MB 为单位的最大大小。

验证

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

    1. 获取 keda-metrics-apiserver the 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 the 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\""}}
       ...

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.