本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

在下游集群中启用 API 审计日志

Kubernetes 审计提供了关于集群的与安全相关的时间顺序记录集。Kube-apiserver 执行审计。请求在执行的每个阶段生成一个事件,然后根据某种策略进行预处理并写入后端。该策略决定记录什么,后端则持久化这些记录。

您可能希望将审计日志配置作为遵循互联网安全中心 (CIS) Kubernetes 基准控制的一部分。

有关配置详细信息,请参阅 官方 Kubernetes 文档

  • RKE2

  • K3s

方法 1(推荐):在 `machineGlobalConfig` 或 `machineSelectorConfig` 中设置 `audit-policy-file`

您可以在配置文件中使用 audit-policy-filemachineGlobalConfig 来设置 machineSelectorConfig

使用 machineGlobalConfig 时,Rancher 将文件传送到 所有节点 的路径 /var/lib/rancher/rke2/etc/config-files/audit-policy-file(包括控制平面和工作节点),并在 RKE2 服务器中设置适当的选项。这可能会导致在修改审计策略时出现不必要的工作节点协调。

为了避免工作节点协调,请使用 machineSelectorConfig 并搭配标签选择器,仅针对控制平面节点。这确保审计策略文件仅传送到控制平面节点。

使用 machineGlobalConfig 的示例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      audit-policy-file: |
        apiVersion: audit.k8s.io/v1
        kind: Policy
        rules:
          - level: RequestResponse
            resources:
              - group: ""
                resources:
                  - pods

使用 machineSelectorConfig 的示例(推荐以避免工作节点协调):

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineSelectorConfig:
      - config:
          audit-policy-file: |
            apiVersion: audit.k8s.io/v1
            kind: Policy
            rules:
              - level: RequestResponse
                resources:
                  - group: ""
                    resources:
                      - pods
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

方法 2:使用指令 `machineSelectorFiles` 和 `machineGlobalConfig`

此功能在 Rancher v2.7.2 及更高版本中可用。

您可以使用 machineSelectorFiles 将审计策略文件传送到控制平面节点,并使用 machineGlobalConfig 在 kube-apiserver 上设置选项。

作为前提,您必须创建一个 secretconfigmap 作为审计策略的来源。

秘密或配置映射必须满足以下要求:

  1. 它必须位于 fleet-default 名称空间中,其中存在 Cluster 对象。

  2. 它必须具有注释 rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2>,允许目标集群使用它。

Rancher Dashboard 提供了一个易于使用的表单,用于创建 Secret 或 ConfigMap。

示例:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: <name1>
  namespace: fleet-default

通过编辑 YAML 中的集群并利用 machineSelectorFilesmachineGlobalConfig 指令来启用和配置审计日志。

示例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      kube-apiserver-arg:
        - audit-policy-file=<customized-path>/dev-audit-policy.yaml
        - audit-log-path=<customized-path>/dev-audit.logs
    machineSelectorFiles:
      - fileSources:
          - configMap:
              name: ''
            secret:
              items:
                - key: audit-policy
                  path: <customized-path>/dev-audit-policy.yaml
              name: dev-audit-policy
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

有关集群配置的更多信息,请参阅 RKE2 集群配置参考 页面。

此功能在 Rancher v2.7.2 及更高版本中可用。

您可以使用 machineSelectorFiles 将审计策略文件传送到控制平面节点,并使用 machineGlobalConfig 在 kube-apiserver 上设置选项。

作为前提,您必须创建一个 secretconfigmap 作为审计策略的来源。

秘密或配置映射必须满足以下要求:

  1. 它必须位于 fleet-default 名称空间中,其中存在 Cluster 对象。

  2. 它必须具有注释 rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2>,允许目标集群使用它。

Rancher Dashboard 提供了一个易于使用的表单,用于创建 secretconfigmap

示例:

apiVersion: v1
data:
  audit-policy: >-
    IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
  annotations:
    rke.cattle.io/object-authorized-for-clusters: cluster1
  name: <name1>
  namespace: fleet-default

通过编辑 YAML 中的集群并利用 machineSelectorFilesmachineGlobalConfig 指令来启用和配置审计日志。

示例:

apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
  rkeConfig:
    machineGlobalConfig:
      kube-apiserver-arg:
        - audit-policy-file=<customized-path>/dev-audit-policy.yaml
        - audit-log-path=<customized-path>/dev-audit.logs
    machineSelectorFiles:
      - fileSources:
          - configMap:
              name: ''
            secret:
              items:
                - key: audit-policy
                  path: <customized-path>/dev-audit-policy.yaml
              name: dev-audit-policy
        machineLabelSelector:
          matchLabels:
            rke.cattle.io/control-plane-role: 'true'

有关集群配置的更多信息,请参阅 K3s 集群配置参考 页面。