Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Habilitando el registro de auditoría de la API en clústeres en sentido descendente

La auditoría de Kubernetes proporciona un conjunto de registros cronológicos relevantes para la seguridad sobre un clúster. Kube-apiserver realiza la auditoría. Las solicitudes generan un evento en cada etapa de su ejecución, que luego se preprocesa de acuerdo con una cierta directiva y se escribe en un backend. La directiva determina qué se registra y el backend persiste los registros.

Es posible que desees configurar el registro de auditoría como parte del cumplimiento con los controles del Centro para la Seguridad en Internet (CIS) del Benchmark de Kubernetes.

Para detalles de configuración, consulta la documentación oficial de Kubernetes.

  • RKE2

  • K3s

Método 1 (Recomendado): Establece `audit-policy-file` en `machineGlobalConfig` o `machineSelectorConfig`

Puedes establecer audit-policy-file en el archivo de configuración utilizando machineGlobalConfig o machineSelectorConfig.

Al usar machineGlobalConfig, Rancher entrega el archivo en la ruta /var/lib/rancher/rke2/etc/config-files/audit-policy-file en todos los nodos (tanto en nodos de control como en nodos de trabajo), y establece las opciones adecuadas en el servidor RKE2. Esto puede causar una reconciliación no deseada de los nodos de trabajo cuando se modifica la directiva de auditoría.

Para evitar la reconciliación de nodos de trabajo, utiliza machineSelectorConfig con un selector de etiquetas para dirigirte solo a los nodos de control. Esto asegura que el archivo de directiva de auditoría solo se entregue a los nodos de control.

Ejemplo usando 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

Ejemplo usando machineSelectorConfig (recomendado para evitar la reconciliación de nodos de trabajo):

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'

Método 2: Utiliza las directivas, `machineSelectorFiles` y `machineGlobalConfig`

Esta función está disponible en Rancher v2.7.2 y versiones posteriores.

Puedes usar machineSelectorFiles para entregar el archivo de directiva de auditoría a los nodos del plano de control, y machineGlobalConfig para establecer las opciones en kube-apiserver.

Como requisito previo, debes crear un secreto o un configmap que sea la fuente de la directiva de auditoría.

El secreto o configmap debe cumplir con los siguientes requisitos:

  1. Debe estar en el espacio de nombres fleet-default donde existe el objeto Cluster.

  2. Debe tener la anotación rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2> que permite a los clústeres de destino usarlo.

Rancher Dashboard proporciona un formulario fácil de usar para crear el secreto o configmap.

Ejemplo:

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

Habilita y configura el registro de auditoría editando el clúster en YAML, y utilizando las directivas machineSelectorFiles y machineGlobalConfig.

Ejemplo:

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'

Para más información sobre la configuración del clúster, consulta las páginas de referencia de configuración del clúster RKE2.

Esta función está disponible en Rancher v2.7.2 y versiones posteriores.

Puedes usar machineSelectorFiles para entregar el archivo de directiva de auditoría a los nodos del plano de control, y machineGlobalConfig para establecer las opciones en kube-apiserver.

Como requisito previo, debes crear un secreto o un configmap que sea la fuente de la directiva de auditoría.

El secreto o configmap debe cumplir con los siguientes requisitos:

  1. Debe estar en el espacio de nombres fleet-default donde existe el objeto Cluster.

  2. Debe tener la anotación rke.cattle.io/object-authorized-for-clusters: <cluster-name1>,<cluster-name2> que permite a los clústeres de destino usarlo.

Rancher Dashboard proporciona un formulario fácil de usar para crear el secreto o el configmap.

Ejemplo:

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

Habilita y configura el registro de auditoría editando el clúster en YAML, y utilizando las directivas machineSelectorFiles y machineGlobalConfig.

Ejemplo:

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'

Para más información sobre la configuración del clúster, consulta las páginas de referencia de configuración de K3s.