×

您可以通过选择要使用的审计日志策略配置文件来控制记录到 API 服务器审计日志中的信息量。

关于审计日志策略配置文件

审计日志配置文件定义如何记录到达 OpenShift API 服务器、Kubernetes API 服务器、OpenShift OAuth API 服务器和 OpenShift OAuth 服务器的请求。

OpenShift Container Platform 提供以下预定义的审计策略配置文件

配置文件 描述

默认

仅记录读取和写入请求的元数据;不记录请求正文,除非是 OAuth 访问令牌请求。这是默认策略。

WriteRequestBodies

除了记录所有请求的元数据外,还记录对 API 服务器的每个写入请求的请求正文(`create`、`update`、`patch`、`delete`、`deletecollection`)。此配置文件比`Default`配置文件具有更高的资源开销。[1]

AllRequestBodies

除了记录所有请求的元数据外,还记录对 API 服务器的每个读取和写入请求的请求正文(`get`、`list`、`create`、`update`、`patch`)。此配置文件的资源开销最大。[1]

不记录任何请求,包括 OAuth 访问令牌请求和 OAuth 授权令牌请求。设置此配置文件时,将忽略自定义规则。

除非您完全了解不记录在排查问题时可能很有用的数据所带来的风险,否则请勿使用`None`配置文件禁用审计日志记录。如果您禁用了审计日志记录并出现支持情况,您可能需要启用审计日志记录并重现问题才能正确进行排查。

  1. 敏感资源(例如`Secret`、`Route`和`OAuthClient`对象)仅在元数据级别记录。OpenShift OAuth 服务器事件仅在元数据级别记录。

默认情况下,OpenShift Container Platform 使用 `Default` 审计日志配置文件。您可以使用其他审计策略配置文件,该配置文件也会记录请求正文,但请注意,这会增加资源使用量,例如 CPU、内存和 I/O。

配置审计日志策略

您可以配置在记录到达 API 服务器的请求时使用的审计日志策略。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问集群。

步骤
  1. 编辑 `APIServer` 资源

    $ oc edit apiserver cluster
  2. 更新 `spec.audit.profile` 字段

    apiVersion: config.openshift.io/v1
    kind: APIServer
    metadata:
    ...
    spec:
      audit:
        profile: WriteRequestBodies    (1)
    1 设置为 `Default`、`WriteRequestBodies`、`AllRequestBodies` 或 `None`。默认配置文件为 `Default`。

    除非您完全了解不记录在故障排除时可能会有益的数据的风险,否则不建议使用 `None` 配置文件禁用审计日志记录。如果您禁用了审计日志记录并且出现支持问题,则可能需要启用审计日志记录并重现问题才能正确进行故障排除。

  3. 保存文件以应用更改。

验证
  • 验证 Kubernetes API 服务器 pod 的新版本是否已推出。所有节点更新到新版本可能需要几分钟时间。

    $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'

    查看 Kubernetes API 服务器的 `NodeInstallerProgressing` 状态条件,以验证所有节点是否都处于最新版本。成功更新后,输出显示 `AllNodesAtLatestRevision`

    AllNodesAtLatestRevision
    3 nodes are at revision 12 (1)
    
    1 在此示例中,最新版本号为 `12`。

    如果输出显示类似于以下消息之一的消息,则更新仍在进行中。等待几分钟,然后重试。

    • 3 个节点处于版本 11;0 个节点已达到新版本 12

    • 2 个节点处于版本 11;1 个节点处于版本 12

使用自定义规则配置审计日志策略

您可以配置定义自定义规则的审计日志策略。您可以指定多个组并定义要为该组使用的配置文件。

这些自定义规则优先于顶级配置文件字段。自定义规则从上到下进行评估,并且应用第一个匹配的规则。

如果顶级配置文件字段设置为 `None`,则忽略自定义规则。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问集群。

步骤
  1. 编辑 `APIServer` 资源

    $ oc edit apiserver cluster
  2. 添加 `spec.audit.customRules` 字段

    apiVersion: config.openshift.io/v1
    kind: APIServer
    metadata:
    ...
    spec:
      audit:
        customRules:                        (1)
        - group: system:authenticated:oauth
          profile: WriteRequestBodies
        - group: system:authenticated
          profile: AllRequestBodies
        profile: Default                    (2)
    1 添加一个或多个组,并为该组指定要使用的配置文件。这些自定义规则优先于顶级配置文件字段。自定义规则从上到下进行评估,并且应用第一个匹配的规则。
    2 设置为 `Default`、`WriteRequestBodies` 或 `AllRequestBodies`。如果您不设置此顶级配置文件字段,则默认为 `Default` 配置文件。

    如果您要使用自定义规则,请不要将顶级配置文件字段设置为 `None`。如果顶级配置文件字段设置为 `None`,则忽略自定义规则。

  3. 保存文件以应用更改。

验证
  • 验证 Kubernetes API 服务器 pod 的新版本是否已推出。所有节点更新到新版本可能需要几分钟时间。

    $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'

    查看 Kubernetes API 服务器的 `NodeInstallerProgressing` 状态条件,以验证所有节点是否都处于最新版本。成功更新后,输出显示 `AllNodesAtLatestRevision`

    AllNodesAtLatestRevision
    3 nodes are at revision 12 (1)
    
    1 在此示例中,最新版本号为 `12`。

    如果输出显示类似于以下消息之一的消息,则更新仍在进行中。等待几分钟,然后重试。

    • 3 个节点处于版本 11;0 个节点已达到新版本 12

    • 2 个节点处于版本 11;1 个节点处于版本 12

禁用审计日志记录

您可以为 OpenShift Container Platform 禁用审计日志记录。禁用审计日志记录后,甚至不会记录 OAuth 访问令牌请求和 OAuth 授权令牌请求。

除非您完全了解不记录在故障排除时可能会有益的数据的风险,否则不建议使用 `None` 配置文件禁用审计日志记录。如果您禁用了审计日志记录并且出现支持问题,则可能需要启用审计日志记录并重现问题才能正确进行故障排除。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问集群。

步骤
  1. 编辑 `APIServer` 资源

    $ oc edit apiserver cluster
  2. 将 `spec.audit.profile` 字段设置为 `None`

    apiVersion: config.openshift.io/v1
    kind: APIServer
    metadata:
    ...
    spec:
      audit:
        profile: None

    您还可以通过在 `spec.audit.customRules` 字段中指定自定义规则来仅为特定组禁用审计日志记录。

  3. 保存文件以应用更改。

验证
  • 验证 Kubernetes API 服务器 pod 的新版本是否已推出。所有节点更新到新版本可能需要几分钟时间。

    $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="NodeInstallerProgressing")]}{.reason}{"\n"}{.message}{"\n"}'

    查看 Kubernetes API 服务器的 `NodeInstallerProgressing` 状态条件,以验证所有节点是否都处于最新版本。成功更新后,输出显示 `AllNodesAtLatestRevision`

    AllNodesAtLatestRevision
    3 nodes are at revision 12 (1)
    
    1 在此示例中,最新版本号为 `12`。

    如果输出显示类似于以下消息之一的消息,则更新仍在进行中。等待几分钟,然后重试。

    • 3 个节点处于版本 11;0 个节点已达到新版本 12

    • 2 个节点处于版本 11;1 个节点处于版本 12