El contenido de conformidad personalizado permite definir estándares de seguridad propios para complementar la biblioteca de bancos de pruebas de seguridad y las comprobaciones integradas en SaltStack SecOps Compliance. Este contenido personalizado es útil para mejorar las directivas de SaltStack SecOps Compliance con el fin de que se ajusten a los requisitos internos.

Una comprobación es un estándar de seguridad que SaltStack SecOps Compliance evalúa para fines de conformidad. Los bancos de pruebas son categorías de comprobaciones de seguridad.

SaltStack SecOps Compliance incluye un kit de desarrollo de software (Software Development Kit, SDK) de contenido personalizado que se puede utilizar para crear, probar y compilar contenido de seguridad personalizado propio. Es posible importar el contenido de seguridad personalizado para utilizarlo junto con la biblioteca de seguridad integrada de SaltStack SecOps Compliance con fines de evaluación y corrección. La capacidad de importar contenido personalizado también le permite crear versiones de su contenido mediante un sistema de control de versiones de su elección.

Para utilizar las comprobaciones personalizadas, primero inicialice el SDK de contenido personalizado de SaltStack SecOps Compliance. El SDK incluye archivos de muestra que puede modificar para crear sus propias comprobaciones personalizadas, así como bancos de pruebas. El SDK también contiene un entorno de prueba basado en Docker donde puede probar el contenido nuevo.

Una vez creado y probado el contenido personalizado, puede crear un archivo de contenido e importarlo en SaltStack SecOps Compliance para comenzar a evaluar y corregir. Las comprobaciones personalizadas incluyen un icono de usuario icono de usuario de comprobaciones personalizadas en contraposición con las comprobaciones de SaltStack icono de escudo de comprobaciones integradas. SaltStack SecOps Compliance realiza un seguimiento de las dependencias entre las directivas y el contenido personalizado, y proporciona una lista de dependencias que se pueden destruir si se elimina el contenido.

Requisitos previos

Inicializar el SDK

  1. Desde la línea de comandos, desplácese hasta el directorio que contiene el archivo y ejecute lo siguiente según su sistema operativo.
    • Mac OS o Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    No se muestra ninguna salida. Esto se espera. El directorio ahora contiene las siguientes carpetas y archivos:

    • benchmarks
    • salt/locke/custom
    • sample_tests
    • README.md

    Para obtener más información sobre estas carpetas y archivos, consulte Carpetas y archivos.

  2. (Opcional) Confirme los cambios en un repositorio controlado por versiones.

Crear comprobaciones personalizadas

Nota:

La inicialización del SDK es un requisito previo para crear contenido personalizado. Consulte Inicializar el SDK.

  1. En el SDK de contenido personalizado, vaya a salt/locke/custom. Este directorio contiene diversos subdirectorios con archivos de estado de muestra (.sls) y metarchivos (.meta).
    Nota: Es necesario configurar todas las comprobaciones personalizadas en un archivo de estado ( .sls) y en el metarchivo ( .meta) correspondiente.
  2. Realice una copia de un archivo de estado de muestra (.sls) y su metarchivo (.meta) correspondiente, y cambie el nombre de ambos archivos por uno descriptivo para la comprobación personalizada.

    Los dos archivos asociados con una comprobación deben estar en el mismo directorio y comenzar con el mismo nombre, por ejemplo:

    • my_first_check.meta
    • my_first_check.sls

    Puede guardar estos dos archivos juntos en cualquier subdirectorio de salt/locke/custom.

  3. Edite el contenido del archivo de metadatos para personalizar la comprobación en función de sus necesidades. El archivo se escribirá en YAML. Para obtener una lista de las diferentes opciones incluidas en el archivo, consulte Carpetas y archivos.
    Nota: Los metarchivos de comprobaciones contienen referencias a distintos bancos de pruebas. Al crear contenido personalizado, asegúrese de incluir todos los bancos de pruebas asociados en el metarchivo de comprobaciones.
  4. Edite el contenido del archivo de estado. Para obtener más información, consulte Carpetas y archivos.
  5. Asegúrese de que ambos archivos se guarden en el mismo directorio.

    Ya completó los pasos mínimos necesarios para crear una comprobación personalizada. Puede continuar con la prueba de la comprobación, confirmar el control de versiones o compilar la biblioteca de contenido.

Crear bancos de pruebas personalizados

Nota: La inicialización del SDK es un requisito previo para crear contenido personalizado. Consulte Inicializar el SDK.
  1. En el SDK de contenido personalizado, vaya al directorio benchmarks. Este contiene un metarchivo de banco de pruebas de muestra (.meta).
  2. Realice una copia de Sample_Benchmark.meta y cambie el nombre de este archivo por uno descriptivo para su banco de pruebas.
  3. Edite el contenido del archivo de metadatos para personalizar el banco de pruebas en función de sus necesidades. El archivo se escribirá en YAML. Para obtener una descripción de las diferentes opciones incluidas en el archivo, consulte Carpetas y archivos.

Probar el contenido personalizado

Nota: La instalación de Docker es un requisito previo para lo siguiente. Para obtener más información sobre la descarga y la instalación de Docker, consulte Documentación de instalación de Docker.
  1. Una vez creado el contenido personalizado, abra la línea de comandos y desplácese hasta el directorio sample_tests del SDK de contenido personalizado.
  2. Cree una imagen de Docker de CentOS7 con Salt para realizar pruebas.
    ./build.sh
  3. Inicie el contenedor de pruebas.
    ./up.sh
  4. Ejecute pruebas de muestra en las comprobaciones que creó en el directorio salt/locke/custom. Puede ejecutar comprobaciones personalizadas como lo hace con los estados de Salt normales, por ejemplo:
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    Para obtener más ejemplos de pruebas, consulte Probar contenido personalizado en el archivo LÉAME del SDK. Para obtener más información sobre los estados de Salt, consulte Documentación de Salt: Cómo se utilizan los estados de Salt.

  5. Una vez completada la prueba, apague el contenedor de pruebas.
    ./down.sh

Crear la biblioteca de contenido personalizado

  1. Una vez creado el contenido personalizado, abra la línea de comandos y desplácese hasta el directorio raíz del SDK de contenido personalizado.
  2. Cree la biblioteca de contenido personalizado.
    ./secops_sdk build -a

    El directorio raíz del SDK ahora incluye el subdirectorio _dist. Este contiene dos archivos tar.gz que puede utilizar para importar el contenido a través de la interfaz de usuario de SaltStack Config o la API (RaaS). Para obtener una descripción de todos los archivos incluidos en el directorio, consulte Carpetas y archivos.

Importar contenido personalizado

  1. Haga clic en Administración > SecOps en el menú lateral.
  2. En Contenido de conformidad - SaltStack, haga clic en Buscar actualizaciones.
    Nota: Si ya descargó contenido de SaltStack SecOps Compliance durante su sesión actual, puede omitir este paso.
  3. Haga clic en Cargar paquete y seleccione el archivo .tar.gz en el explorador de archivos.
    Nota: Para facilitar la navegación entre las comprobaciones personalizadas, utilice el archivo que contiene una marca de tiempo en el nombre de archivo. Para obtener más información sobre los archivos, consulte Carpetas y archivos.

    El contenido personalizado estará disponible en SaltStack SecOps Compliance para crear directivas, ejecutar evaluaciones y corregir los sistemas. Las comprobaciones personalizadas incluyen un icono de usuario icono de usuario de comprobaciones personalizadas en contraposición con las comprobaciones de SaltStack icono de escudo de comprobaciones integradas.

    Nota:

    También puede importar contenido mediante la API (RaaS) o, de forma alternativa, a través de la línea de comandos durante la instalación. Consulte la interfaz de la API de Sec o la Guía de instalación empresarial.

Eliminar comprobaciones personalizadas

  1. En la interfaz de usuario, vaya a SecOps > Comprobaciones.
  2. Haga clic en el menú luz de icono de menú junto a la comprobación que desea eliminar y haga clic en Eliminar.
    Nota: Solo se puede eliminar contenido personalizado. El contenido personalizado incluye un icono de usuario icono de usuario de comprobaciones personalizadas en contraposición con el contenido de SaltStack icono de escudo de comprobaciones integradas.
  3. En el cuadro de diálogo Eliminar comprobación, debajo de En uso, revise la lista de directivas y bancos de pruebas que incluyen la comprobación. Esto es útil para predecir las dependencias en el entorno que se pueden destruir si se elimina la comprobación.

    Cuando haya terminado de revisar las dependencias en uso, haga clic en Siguiente.

  4. En Eliminar comprobación > Advertencia, haga clic en Eliminar. El cuadro de diálogo confirmará que se eliminó la comprobación.
  5. Haga clic en Listo para cerrar el cuadro de diálogo.

Eliminar bancos de pruebas personalizados

  1. En la interfaz de usuario, vaya a SecOps > Bancos de pruebas.
  2. Haga clic en el menú luz de icono de menú junto a la comprobación que desea eliminar y haga clic en Eliminar.
    Nota:

    Solo se puede eliminar contenido personalizado. El contenido personalizado incluye un icono de usuario icono de usuario de comprobaciones personalizadas en contraposición con el contenido de SaltStack icono de escudo de comprobaciones integradas.

  3. En el cuadro de diálogo Eliminar banco de pruebas, debajo de En uso, revise la lista de directivas y comprobaciones asociadas con el banco de pruebas. Esto es útil para predecir las dependencias en el entorno que se pueden destruir si se elimina el banco de pruebas.

    Cuando haya terminado de revisar las dependencias en uso, haga clic en Siguiente.

  4. En Eliminar banco de pruebas > Advertencia, haga clic en Eliminar. El cuadro de diálogo confirmará que se eliminó el banco de pruebas.
  5. Haga clic en Listo para cerrar el cuadro de diálogo.

Carpetas y archivos

Después de inicializar el SDK, el directorio incluirá los siguientes archivos y carpetas:

  • benchmarks: contiene metarchivos (.meta) de bancos de pruebas personalizados.
  • salt/locke/custom: contiene archivos de estado (.sls) y metarchivos (.meta) de comprobaciones personalizadas.
  • sample_tests: contiene archivos de ejemplo para realizar pruebas con Docker.
  • README.md: proporciona información más detallada sobre el SDK.

A continuación, se describen en detalle los archivos importantes.

Archivos de bancos de pruebas personalizados

Los bancos de pruebas son categorías de comprobaciones de seguridad. Los bancos de pruebas integrados de SaltStack SecOps Compliance son definidos por expertos ampliamente aceptados. Sin embargo, los bancos de pruebas personalizados pueden definirse según los estándares de la propia organización. Cada banco de pruebas contiene una lista de recomendaciones, denominadas comprobaciones, y un archivo .meta correspondiente en el directorio benchmarks. Para obtener más información sobre los bancos de pruebas de SaltStack SecOps Compliance, consulte Bancos de pruebas.

Al crear un metarchivo de banco de pruebas, se crea una categoría de comprobaciones. A continuación, es posible agregar comprobaciones a ese banco de pruebas. Para ello, asigne un nombre al banco de pruebas en un metarchivo de comprobaciones en benchmark_id. Consulte Carpetas y archivos.

El metarchivo se escribe en YAML y contiene las siguientes opciones que se pueden personalizar según el contenido:

name

El nombre del banco de pruebas.

display_name

El nombre del banco de pruebas tal como aparecerá en la lista de bancos de pruebas en SaltStack SecOps Compliance.

desc

La descripción del banco de pruebas.

Nota:

Además de las opciones anteriores, el metarchivo también incluye una variedad de elementos reservados, como version, authority e ids. No modifique estos elementos reservados a menos que lo indique el administrador.

Archivos de comprobaciones personalizadas

Una comprobación es un estándar de seguridad que SaltStack SecOps Compliance evalúa para fines de conformidad. Se trata de una recomendación asociada a un banco de pruebas. La recomendación proporciona una descripción, la lógica, datos de auditoría e información de corrección. Cada comprobación se define mediante al menos dos archivos: un archivo de estado (.sls) y el metarchivo correspondiente (.meta).

Nota:

Los dos archivos asociados con una comprobación deben estar en el mismo directorio y comenzar con el mismo nombre, por ejemplo:

  • my_first_check.meta
  • my_first_check.sls

Puede guardar estos dos archivos juntos en cualquier subdirectorio de salt/locke/custom.

A continuación, se describe en detalle cada tipo de archivo.

Metarchivos de comprobaciones

Los metarchivos de comprobaciones incluyen una descripción de las comprobaciones, así como detalles adicionales relacionados con estas, como la versión, los sistemas operativos aplicables, etc. Los metarchivos se escriben en YAML y usan la extensión de archivo .meta.

Los metarchivos de comprobaciones personalizadas incluyen las siguientes opciones:

version

La versión del contenido de comprobación. Actualmente, solo se admite el valor 1.

display_name

El nombre de esta comprobación tal como aparecerá en la lista de comprobaciones de la interfaz de usuario de SaltStack Config.

global_description

Una descripción detallada de la comprobación. Esta es una oportunidad para brindar más información de la que se proporciona a través de los nombres de la comprobación y el banco de pruebas.

osfinger

Una lista de los sistemas operativos que pueden ejecutar esta comprobación. Si el host no contiene un valor osfinger que coincida con un valor de esta lista, el resultado de la evaluación de la comprobación devuelto será notapplicable.

refs

La información de referencia cruzada sobre otras comprobaciones en otros bancos de pruebas o estándares de seguridad que se cumplen con esta comprobación.

benchmark_id

Una lista de cada banco de pruebas al que pertenece la comprobación.

Cada entrada de banco de pruebas crea una nueva sección que incluye las siguientes subopciones:

type

El tipo de banco de pruebas. Introduzca custom al definir una comprobación personalizada no proporcionada por una entidad específica.

desc

El título de la recomendación de seguridad tal como aparecerá en la lista de comprobaciones de la interfaz de usuario de SaltStack Config.

control_id

El número de recomendación, por ejemplo, de un documento de CIS correspondiente.

scored

Este campo se modela según las recomendaciones de CIS que pueden ser puntuadas o sin puntuar. Las recomendaciones de CIS sin puntuar no se consideran en la puntuación de seguridad.El valor “true” indica que se ha puntuado y el valor “false” indica que no se ha puntuado. Puede optar por puntuar o no puntuar una comprobación en función de sus necesidades internas.

profile

CIS y otros bancos de pruebas se dividen en perfiles. Por ejemplo, el banco de pruebas CentOS Linux 7 de CIS tiene cuatro perfiles que se representan de la siguiente manera:

profile:
  server:level1
  workstation:level1
  server:level2
  workstation:level3
information

La descripción de la comprobación. Esto puede ser similar al campo global_description de la comprobación.

rationale

Una descripción de la lógica para implementar la comprobación.

remediation

Las instrucciones sobre cómo corregir un sistema en un estado no conforme.

Archivos de estado de comprobaciones

Los archivos de estado de comprobaciones aplican los estados de Salt para realizar evaluaciones y correcciones. Una función de estado es una función dentro de un módulo de estado que puede administrar la aplicación de un estado determinado en un sistema. A menudo, las funciones de estado llaman a uno o varios módulos de ejecución para realizar una tarea determinada. Los archivos de estado se escriben tanto en YAML como en Jinja, y usan la extensión de archivo .sls.

El resultado de una evaluación es la consecuencia de ejecutar el archivo de estado en modo test=True. Si el resultado muestra que la aplicación del estado hubiera provocado un cambio, el host se considera no conforme. Si la aplicación del estado no hubiera provocado ningún cambio, se considera que el host es conforme.

Para obtener más información sobre los estados de Salt, consulte Documentación de Salt: Cómo se utilizan los estados de Salt.

Archivos de biblioteca de contenido personalizados

Cuando se crea una biblioteca de contenido personalizado, el directorio incluye el directorio _dist, el cual contiene los siguientes archivos adicionales:

  • digest.json: contiene hashes y otra información sobre el contenido.
  • secops_custom.tar.gz: el archivo tar gzip listo para el consumo. Esto es adecuado para la carga a través de la interfaz de usuario de SaltStack Config. Para obtener más información sobre el consumo de contenido, consulte la Guía de instalación empresarial.
  • secops_custom.txt: la versión codificada en base64 de secops_custom.tar.gz. Esto resulta útil al realizar llamadas de API.
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz: una copia idéntica de secops_custom.tar.gz, que se prefiere para la carga a través de la interfaz de usuario de SaltStack Config debido a su nombre de archivo descriptivo, el cual incluye la fecha de creación y el UUID de tarball.