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 en contraposición con las comprobaciones de SaltStack . 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
- Descargue el SDK de contenido personalizado de SaltStack SecOps Compliance.
- Instale Docker. Consulte Documentación de instalación de Docker.
Inicializar el SDK
- 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.
- Mac OS o Linux
- (Opcional) Confirme los cambios en un repositorio controlado por versiones.
Crear comprobaciones personalizadas
La inicialización del SDK es un requisito previo para crear contenido personalizado. Consulte Inicializar el SDK.
- 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. - 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
. - 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.
- Edite el contenido del archivo de estado. Para obtener más información, consulte Carpetas y archivos.
- 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
- En el SDK de contenido personalizado, vaya al directorio
benchmarks
. Este contiene un metarchivo de banco de pruebas de muestra (.meta
). - Realice una copia de
Sample_Benchmark.meta
y cambie el nombre de este archivo por uno descriptivo para su banco de pruebas. - 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
- 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. - Cree una imagen de Docker de CentOS7 con Salt para realizar pruebas.
./build.sh
- Inicie el contenedor de pruebas.
./up.sh
- 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.
- Una vez completada la prueba, apague el contenedor de pruebas.
./down.sh
Crear la biblioteca de contenido personalizado
- 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.
- Cree la biblioteca de contenido personalizado.
./secops_sdk build -a
El directorio raíz del SDK ahora incluye el subdirectorio
_dist
. Este contiene dos archivostar.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
- Haga clic en Administración > SecOps en el menú lateral.
- 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.
- 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 en contraposición con las comprobaciones de SaltStack .
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
- En la interfaz de usuario, vaya a SecOps > Comprobaciones.
- Haga clic en el 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 en contraposición con el contenido de SaltStack .
- 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.
- En Eliminar comprobación > Advertencia, haga clic en Eliminar. El cuadro de diálogo confirmará que se eliminó la comprobación.
- Haga clic en Listo para cerrar el cuadro de diálogo.
Eliminar bancos de pruebas personalizados
- En la interfaz de usuario, vaya a SecOps > Bancos de pruebas.
- Haga clic en el 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 en contraposición con el contenido de SaltStack .
- 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.
- En Eliminar banco de pruebas > Advertencia, haga clic en Eliminar. El cuadro de diálogo confirmará que se eliminó el banco de pruebas.
- 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.
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
).
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 desecops_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 desecops_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.