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.

Esta es documentación inédita para Admission Controller 1.34-dev.

Escáner de Auditoría - InformesDeDirectiva

Al utilizar el Escáner de Auditoría SUSE Security Admission Controller, almacenas los resultados de los escaneos de directivas utilizando los Recursos Personalizados OpenReports.

Con SUSE Security Admission Controller 1.33, la función del Escáner de Auditoría guarda los informes en los CRDs de OpenReports de [openreports.io](https://openreports.io) por defecto.

Los CRDs de PolicyReport del grupo de trabajo de Directivas de K8s no están instalados por defecto, están marcados como obsoletos y se eliminarán en una futura versión.

Los usuarios que deseen seguir utilizando los PolicyReports obsoletos, es decir, el comportamiento anterior a 1.33, necesitan: - Cambiar el valor del gráfico Helm kubewarden-crds de .Values.install.installPolicyReportCRDs a true. - Cambiar el valor del gráfico Helm kubewarden-controller de .Values.auditScanner.reportCRDsKind de openreports a policyreport.

Estos CRDs de OpenReports ofrecen una forma estructurada de almacenar y gestionar los resultados de auditoría.

Almacenas los resultados del escaneo de directivas del escáner de auditoría utilizando Report y ClusterReport. El escáner de auditoría crea un Report o un ClusterReport para cada recurso escaneado, dependiendo del alcance del recurso. Los objetos Report están disponibles en el espacio de nombres del recurso, mientras que los objetos ClusterReport están disponibles en el alcance del clúster.

Los resultados de auditoría generados por el escáner incluyen:

  • la directiva evaluada

  • el recurso escaneado

  • el resultado de la evaluación (aprobado, fallido o omitido)

  • una marca de tiempo que indica cuándo tuvo lugar la evaluación.

También puedes definir anotaciones de severidad y categoría para tus directivas.

Los operadores pueden consultar los informes utilizando kubectl. También pueden utilizar la interfaz de usuario opcional proporcionada por el proyecto de código abierto policy-reporter para la monitorización y la observabilidad de los CRDs de OpenReports.

Consultando los informes

Usando la CLI de kubectl, es posible consultar los resultados del escaneo:

Lista los informes en el espacio de nombres por defecto:

$ kubectl get report -o wide
NAME                                   KIND   NAME            PASS   FAIL   WARN   ERROR   SKIP   AGE
44da974b-6057-4745-a92c-9dd8a1b01cc4   Pod    nginx-secrets   6      1      0      0       0      33m

Lista los informes a nivel de clúster:

$ kubectl get clusterreport -o wide
NAME                                   KIND        NAME                 PASS   FAIL   WARN   ERROR   SKIP   AGE
6c66175f-e15f-47e8-8c33-2c63d5ecde3e   Namespace   namespace1           3      1     0       0       0      1h
d0ffbf4f-7348-4350-af7b-fdbfc079cc49   Namespace   namespace2           0      4     0       0       0      1h
e48d9bbc-a9c4-4c36-8519-bc7390d9ec64   Namespace   namespace3           4      0     0       0       0      15h

Obtén los detalles de un Informe específico:

kubectl get report 44da974b-6057-4745-a92c-9dd8a1b01cc4 -o yaml

Obtén los detalles de un ClusterReport específico:

kubectl get clusterreport e48d9bbc-a9c4-4c36-8519-bc7390d9ec64 -o yaml

Ejemplo de informe

El siguiente ejemplo muestra un Report para el recurso Deployment deployment1 en el espacio de nombres default. El informe indica que el Pod ha fallado la safe-labels directiva de admisión.

apiVersion: wgpolicyk8s.io/v1beta1
kind: PolicyReport
metadata:
  creationTimestamp: “2024-02-29T06:55:37Z”
  generation: 6
  labels:
    app.kubernetes.io/managed-by: kubewarden
    kubewarden.io/policyreport-version: v2
  name: 009805e4-6e16-4b70-80c9-cb33b6734c82
  namespace: default
  ownerReferences:
    - apiVersion: apps/v1
      kind: Deployment
      name: deployment1
      uid: 009805e4-6e16-4b70-80c9-cb33b6734c82
  resourceVersion: “2685996”
  uid: c5a88847-d678-4733-8120-1b83fd6330cb
results:
  - category: Resource validation
    message: “The following mandatory labels are missing: cost-center”
    policy: namespaced-default-safe-labels
    properties:
      policy-resource-version: “2684810”
      policy-uid: 826dd4ef-9db5-408e-9482-455f278bf9bf
      policy-name: “safe-labels”
      policy-namespace: “default”
      validating: “true”
    resourceSelector: {}
    result: fail
    scored: true
    severity: low
    source: kubewarden
    timestamp:
      nanos: 0
      seconds: 1709294251
scope:
  apiVersion: apps/v1
  kind: Deployment
  name: deployment1
  namespace: default
  resourceVersion: “3”
  uid: 009805e4-6e16-4b70-80c9-cb33b6734c82
summary:
  error: 0
  fail: 1
  pass: 0
  skip: 0
  warn: 0

Ejemplo de ClusterReport

El siguiente ejemplo muestra un ClusterReport para el recurso Namespace default. El informe indica que el recurso ha fallado la validación de la safe-annotations ClusterAdmissionPolicy.

apiVersion: wgpolicyk8s.io/v1beta1
kind: ClusterPolicyReport
metadata:
  creationTimestamp: “2024-02-28T14:44:37Z”
  generation: 3
  labels:
    app.kubernetes.io/managed-by: kubewarden
    kubewarden.io/policyreport-version: v2
  name: 261c9492-deec-4a09-8aa9-cd464bb4b8d1
  ownerReferences:
    - apiVersion: v1
      kind: Namespace
      name: default
      uid: 261c9492-deec-4a09-8aa9-cd464bb4b8d1
  resourceVersion: “2403034”
  uid: 20a3d00e-e955-4f21-a887-317d40f3f052
results:
  - category: Resource validation
    message: “The following mandatory annotations are not allowed: owner”
    policy: clusterwide-safe-annotations
    properties:
      policy-resource-version: “2396437”
      policy-uid: 46780d6e-e51a-4d65-8572-a6af01380aa7
      policy-name: “safe-annotations”
      validating: “true”
    resourceSelector: {}
    result: fail
    scored: true
    severity: low
    source: kubewarden
    timestamp:
      nanos: 0
      seconds: 1709294251
scope:
  apiVersion: v1
  kind: Namespace
  name: default
  resourceVersion: “37”
  uid: 261c9492-deec-4a09-8aa9-cd464bb4b8d1
summary:
  error: 0
  fail: 1
  pass: 0
  skip: 0
  warn: 0

Interfaz de usuario del Policy Reporter

El Policy Reporter viene incluido como un subchart de kubewarden-controller. Consulta la página Audit Scanner Installation para más información.

La interfaz de usuario del Policy Reporter proporciona un panel que muestra todas las violaciones. Consulta la captura de pantalla a continuación:

Ejemplo de panel del Policy Reporter

Admission Controller incluye la interfaz de usuario del Policy Reporter con un filtro preconfigurado que solo muestra Admission Controller directivas, junto con información ampliada:

Ejemplo de PolicyReports del Policy Reporter

Otras características del Policy Reporter incluyen el reenvío de resultados a diferentes clientes (como Grafana Loki, Elasticsearch, aplicaciones de chat), puntos finales de métricas y más. Consulta la documentación de la comunidad de Policy Reporter para más información.