Openshift:可靠的Kubernetes发行版

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

2020-03-23  本文已影响0人  潘晓华Michael
审计

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

用户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

上一篇下一篇

猜你喜欢

热点阅读