10.3. 集群日志
本节论述了集群中生成的操作日志的类型。
10.3.1. 服务日志
OpenShift Container Platform 为在集群中静态 pod 上运行的服务生成日志:
-
API(使用
master-logs api api
) -
控制器(使用
master-logs controllers controllers
) -
etcd(使用
master-logs etcd etcd
) -
atomic-openshift-node(使用
journalctl -u atomic-openshift-node.service
)
这些日志主要用于调试目的,而不是安全审核。您可以使用 master-logs api api
、master-logs controllers controllers
或 master-logs etcd etcd
命令来检索各个服务的日志。如果您的集群运行一个聚合的日志记录堆栈(如 Ops 集群 ),集群管理员可以从 logging .operations 索引中检索日志。
API 服务器、控制器和 etcd 静态 Pod 在 kube-system 命名空间中运行。
10.3.2. Master API 审计日志
要记录用户、管理员或系统组件对 master API 请求的日志,请启用 主 API 审计日志记录。这将在每个 master 主机上创建一个文件,如果没有配置文件,则将包含在服务日志中。日志中的条目可以通过搜索 "AUDIT" 找到。
审计日志条目 包括一行,在收到每个 REST 请求时记录每个 REST 请求,在完成时使用 HTTP 响应代码记录一行。例如,这里是系统管理员请求列出节点列表的记录:
2017-10-17T13:12:17.635085787Z AUDIT: id="410eda6b-88d4-4491-87ff-394804ca69a1" ip="192.168.122.156" method="GET" user="system:admin" groups="\"system:cluster-admins\",\"system:authenticated\"" as="<self>" asgroups="<lookup>" namespace="<none>" uri="/api/v1/nodes" 2017-10-17T13:12:17.636081056Z AUDIT: id="410eda6b-88d4-4491-87ff-394804ca69a1" response="200"
定期轮询每个响应代码的最新请求数量可能会有帮助,如下例所示:
$ tail -5000 /var/lib/origin/audit-ocp.log \ | grep -Po 'response="..."' \ | sort | uniq -c | sort -rn 3288 response="200" 8 response="404" 6 response="201"
以下列表更详细地描述了一些响应代码:
-
200
或201
响应代码代表请求成功。 -
400
响应代码可能值得关注,因为它们表示请求格式不正确,大多数客户端不应该发生这种请求。 -
404
响应代码通常是对尚不存在的资源的异步请求。 -
500
-599
响应代码显示服务器错误,这可能是 bug、系统故障甚至恶意活动所致。
如果出现异常的错误响代码,就可以检索相应请求的审计日志条目以供进一步调查。
请求的 IP 地址通常是集群主机或 API 负载均衡器,且没有负载均衡器代理请求后面的 IP 地址记录(但负载均衡器日志对确定请求来源很有用)。
查找特定用户或组群的异常请求数量会很有用。
以下示例根据审计日志的最后 5000 行中的请求数列出了前 10 个用户:
$ tail -5000 /var/lib/origin/audit-ocp.log \ | grep -Po ' user="(.*?)(?<!\\)"' \ | sort | uniq -c | sort -rn | head -10 976 user="system:openshift-master" 270 user="system:node:origin-node-1.example.local" 270 user="system:node:origin-master.example.local" 66 user="system:anonymous" 32 user="system:serviceaccount:kube-system:cronjob-controller" 24 user="system:serviceaccount:kube-system:pod-garbage-collector" 18 user="system:serviceaccount:kube-system:endpoint-controller" 14 user="system:serviceaccount:openshift-infra:serviceaccount-pull-secrets-controller" 11 user="test user" 4 user="test \" user"
更高级的查询通常需要使用额外的日志分析工具。审核员需要详细了解 OpenShift v1 API 和 Kubernetes v1 API,以汇总审计日志中涉及的资源类型( uri
字段)的请求摘要。详情请查看 REST API 参考。
更多高级审计日志记录功能 可用。此功能支持提供审计策略文件来控制哪些请求的日志记录和日志的详细程度。高级审计日志条目以 JSON 格式提供更详细的信息,可以通过 webhook 而不是文件或系统 journal 记录。