美文网首页Openshift:可靠的Kubernetes发行版
OpenShift日志审计功能与策略配置

OpenShift日志审计功能与策略配置

作者: 潘晓华Michael | 来源:发表于2020-03-23 22:42 被阅读0次
    审计

    OpenShift支持审计功能,它可以记录下所有API服务的请求。如果将所有请求记录下来,它的量非常庞大,同时也是没有太大意义的。所以OpenShift审计记录当然出会支持请求的过滤,通过方便地策略配置,可以有选择地记录下请求的内容。通常我们会记录对集群资源作更改的请求。

    打开审计功能

    在部署OpenShift时可以打开审计功能

    openshift_master_audit_config={"enabled": true, "auditFilePath": "/var/lib/origin/audit-ocp.log", "maximumFileRetentionDays": 14, "maximumFileSizeMegabytes": 500, "maximumRetainedFiles": 5, "policyFile": "/etc/origin/master/adv-audit.yaml", "logFormat":"json"}
    openshift_master_audit_policyfile="/<path>/adv-audit.yaml"
    

    /etc/origin/master/master-config.yaml中的配置如下:

    auditConfig:
      auditFilePath: "/var/lib/origin/audit-ocp.log"
      enabled: true
      maximumFileRetentionDays: 10
      maximumFileSizeMegabytes: 10
      maximumRetainedFiles: 5
      policyFile: "/etc/origin/master/adv-audit.yaml"
      logFormat: json
    

    其中:
    auditFilePath:审计日志保存地址
    maximumFileRetentionDays:最长保留时间
    maximumFileSizeMegabytes:每个文件最大大小
    maximumRetainedFiles:保留最大文件数
    policyFile:审计规则配置路径
    openshift_master_audit_policyfile:安装时指定部署机上的审计规则配置文件路径
    logFormat:日志格式

    审计规则设置

    审计规则策略实例

    apiVersion: audit.k8s.io/v1beta1
    kind: Policy
    rules:
    
      # Do not log watch requests by the "system:kube-proxy" on endpoints or services
      - level: None 
        users: ["system:kube-proxy"] 
        verbs: ["watch"] 
        resources: 
        - group: ""
          resources: ["endpoints", "services"]
    
      # Do not log authenticated requests to certain non-resource URL paths.
      - level: None
        userGroups: ["system:authenticated"] 
        nonResourceURLs: 
        - "/api*" # Wildcard matching.
        - "/version"
    
      # Log the request body of configmap changes in kube-system.
      - level: Request
        resources:
        - group: "" # core API group
          resources: ["configmaps"]
        # This rule only applies to resources in the "kube-system" namespace.
        # The empty string "" can be used to select non-namespaced resources.
        namespaces: ["kube-system"] 
    
      # Log configmap and secret changes in all other namespaces at the metadata level.
      - level: Metadata
        resources:
        - group: "" # core API group
          resources: ["secrets", "configmaps"]
    
      # Log all other resources in core and extensions at the request level.
      - level: Request
        resources:
        - group: "" # core API group
        - group: "extensions" # Version of group should NOT be included.
    
      # A catch-all rule to log all other requests at the Metadata level.
      - level: Metadata 
    
      # Log login failures from the web console or CLI. Review the logs and refine your policies.
      - level: Metadata
        nonResourceURLs:
        - /login* 
        - /oauth* 
    

    每个事件可记录的有四个级别level

    • None:不记录与此规则匹配的事件
    • Metadata:记录请求元数据(请求用户,时间戳,资源,动词等),但不记录请求或响应正文。 此级别与基本审核中使用的级别相同。
    • Request:记录事件元数据和请求正文,但不记录响应正文。
    • RequestResponse:记录事件元数据,请求和响应主体。

    用户users:规则适用的用户列表。 空列表表示每个用户
    请求类型verbs:调用 API的请求类型,(get, list, watch, create, update, patch, delete, deletecollection以及 proxy)。空列表表示每个动词。
    资源类型resources:规则适用的资源列表。 空列表表示所有资源。
    组列表userGroups:规则适用的组列表。 空列表表示每个组。
    nonResourceURLs:规则适用的非资源URL列表。
    namespaces:规则适用的名称空间列表。 空列表表示每个名称空间。

    一个实用的例子

    apiVersion: audit.k8s.io/v1beta1
    kind: Policy
    rules:
    
      - level: None
        userGroups: ["system:masters", "system:nodes", "system:serviceaccounts:kube-system"]
      - level: None
        verbs: ["get", "list", "watch"]
      - level: Metadata
    

    该配置将会过滤掉大部分组件之间交互的请求,同时也会过滤掉一些查询请求的审计。

    参考文章:

    OpenShift官方文档:master-node-config-advanced-audit

    相关文章

      网友评论

        本文标题:OpenShift日志审计功能与策略配置

        本文链接:https://www.haomeiwen.com/subject/dtejyhtx.html