I contenuti di conformità personalizzati consentono di definire i propri standard di sicurezza, per completare la libreria dei benchmark di sicurezza e i controlli integrati in SaltStack SecOps Compliance. Questi contenuti personalizzati sono utili per migliorare i criteri di SaltStack SecOps Compliance e adattarli ai requisiti interni.

Un controllo è uno standard di sicurezza sottoposto a valutazione della conformità da parte di SaltStack SecOps Compliance. I benchmark sono categorie dei controlli di sicurezza.

SaltStack SecOps Compliance include un SDK (Software Development Kit) dei contenuti personalizzati che è possibile utilizzare per creare, testare e generare contenuti di sicurezza personalizzati. È possibile importare i contenuti di sicurezza personalizzati da utilizzare con la libreria di sicurezza integrata di SaltStack SecOps Compliance per la valutazione e la correzione. La possibilità di importare contenuti personalizzati permette anche di controllare la versione dei contenuti utilizzando il sistema di controllo delle versioni preferito.

Per utilizzare i controlli personalizzati, inizializzare innanzitutto l'SDK Custom Content di SaltStack SecOps Compliance. L'SDK include file di esempio che è possibile modificare per creare controlli personalizzati, nonché benchmark. L'SDK include anche un ambiente di test basato su Docker in cui è possibile testare i nuovi contenuti.

Una volta creati e testati i contenuti personalizzati, è possibile creare un file di contenuti e importarlo in SaltStack SecOps Compliance per iniziare la valutazione e la correzione. I controlli personalizzati includono un'icona dell'utente custom-checks-user-icon, a differenza dei controlli di SaltStack built-in-checks-shield-icon. SaltStack SecOps Compliance monitora le dipendenze tra i criteri e i contenuti personalizzati e fornisce un elenco delle dipendenze che potrebbero interrompersi se si eliminano i contenuti.

Prerequisiti

Inizializzazione dell'SDK

  1. Dalla riga di comando, passare alla directory contenente il file ed eseguire quanto segue in base al sistema operativo.
    • Mac OS o Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    Nessun output mostrato. Questo comportamento è previsto. La directory ora contiene le seguenti cartelle e file:

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

    Per ulteriori informazioni su queste cartelle e file, vedere Cartelle e file.

  2. (Facoltativo) Eseguire il commit delle modifiche in un repository controllato della versione.

Creazione di controlli personalizzati

Nota:

L'inizializzazione dell'SDK è un prerequisito per creare contenuti personalizzati. Vedere Inizializzazione dell'SDK.

  1. Nell'SDK dei contenuti personalizzati, passare a salt/locke/custom. Questa directory contiene varie sottodirectory con file di stato di esempio (.sls) e metadati (.meta).
    Nota: Tutti i controlli personalizzati devono essere configurati in un file di stato ( .sls) e nel file di metadati ( .meta) corrispondente.
  2. Creare una copia dello stato di esempio (.sls) e del file di metadati (.meta) corrispondente, rinominando entrambi con un nome descrittivo per il controllo personalizzato.

    Entrambi i file associati a un controllo devono trovarsi nella stessa directory e iniziare con lo stesso nome, ad esempio:

    • my_first_check.meta
    • my_first_check.sls

    È possibile salvare questi due file insieme in qualsiasi sottodirectory di salt/locke/custom.

  3. Modificare i contenuti del file di metadati per personalizzare il controllo in base alle proprie esigenze. Il file è compilato in formato YAML. Per un elenco delle diverse opzioni incluse nel file, vedere Cartelle e file.
    Nota: Verificare che i file di metadati contengano riferimenti a benchmark diversi. Quando si creano contenuti personalizzati, assicurarsi di includere tutti i benchmark associati nel file di metadati di controllo.
  4. Modificare i contenuti del file di stato. Per ulteriori informazioni, vedere Cartelle e file.
  5. Assicurarsi che entrambi i file siano salvati nella stessa directory.

    A questo punto, sono stati completati i passaggi minimi necessari per creare un controllo personalizzato. È possibile continuare a testare il controllo, eseguire il commit nel controllo della versione o creare la libreria di contenuti.

Creazione di benchmark personalizzati

Nota: L'inizializzazione dell'SDK è un prerequisito per creare contenuti personalizzati. Vedere Inizializzazione dell'SDK.
  1. Nell'SDK dei contenuti personalizzati, passare alla directory benchmarks. Contiene un file di metadati benchmark di esempio (.meta).
  2. Creare una copia di Sample_Benchmark.meta e rinominarla con un nome descrittivo per il benchmark.
  3. Modificare i contenuti del file di metadati per personalizzare il benchmark in base alle esigenze. Il file è compilato in formato YAML. Per una descrizione delle diverse opzioni incluse nel file, vedere Cartelle e file.

Test dei contenuti personalizzati

Nota: L'installazione di Docker è un prerequisito per i seguenti elementi. Per ulteriori informazioni sul download e l'installazione di Docker, vedere la documentazione sull'installazione di Docker.
  1. Dopo aver creato i contenuti personalizzati, aprire la riga di comando e passare alla directory sample_tests dell'SDK dei contenuti personalizzati.
  2. Creare un'immagine docker di CentOS7 con Salt per il test.
    ./build.sh
  3. Avviare il contenitore di test.
    ./up.sh
  4. Eseguire test campione sui controlli creati nella directory salt/locke/custom. È possibile eseguire controlli personalizzati come si farebbe con i normali stati di Salt, ad esempio:
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    Per ulteriori esempi di test, vedere Test dei contenuti personalizzati nel file README dell'SDK. Per ulteriori informazioni sugli stati di Salt, vedere la documentazione di Salt: come si utilizzano gli stati di Salt?.

  5. Al termine del test, arrestare il contenitore di test.
    ./down.sh

Creazione della libreria dei contenuti personalizzati

  1. Dopo aver creato i contenuti personalizzati, aprire la riga di comando e passare alla directory root dell'SDK dei contenuti personalizzati.
  2. Creare la libreria dei contenuti personalizzati.
    ./secops_sdk build -a

    La directory root dell'SDK ora include la sottodirectory _dist. Include due file tar.gz che è possibile utilizzare per importare i contenuti tramite l'API (RaaS) o l'interfaccia utente di SaltStack Config. Per una descrizione di tutti i file inclusi nella directory, vedere Cartelle e file.

Importazione dei contenuti personalizzati

  1. Fare clic su Amministrazione > SecOps nel menu laterale.
  2. In Contenuti di conformità - SaltStack, fare clic su Controlla disponibilità aggiornamenti.
    Nota: Se i contenuti di SaltStack SecOps Compliance sono già stati scaricati durante la sessione corrente, è possibile ignorare questo passaggio.
  3. Fare clic su Carica pacchetto e selezionare il file .tar.gz da Esplora file.
    Nota: Per facilitare l'esplorazione dei controlli personalizzati, utilizzare il file contenente la data e ora nel nome file. Per ulteriori informazioni sui file, vedere Cartelle e file.

    I contenuti personalizzati sono ora disponibili in SaltStack SecOps Compliance per la creazione dei criteri, l'esecuzione delle valutazioni e la correzione dei sistemi. I controlli personalizzati includono un'icona dell'utente custom-checks-user-icon, a differenza dei controlli di SaltStack built-in-checks-shield-icon.

    Nota:

    È inoltre possibile importare i contenuti utilizzando l'API (RaaS) oppure, in alternativa, tramite la riga di comando durante l'installazione. Vedere l'interfaccia dell'API Sec o la guida all'installazione Enterprise.

Eliminazione dei controlli personalizzati

  1. Nell'interfaccia utente, passare a SecOps > Controlli.
  2. Fare clic sul menu menu-icon-light accanto al controllo che si desidera eliminare e fare clic su Elimina.
    Nota: È possibile eliminare solo i contenuti personalizzati. I contenuti personalizzati includono un'icona utente custom-checks-user-icon, a differenza dei contenuti di SaltStack built-in-checks-shield-icon.
  3. Nella finestra di dialogo Elimina controllo, sotto In uso, rivedere l'elenco dei criteri e dei benchmark che includono il controllo. Questo è utile per prevedere eventuali dipendenze nell'ambiente che potrebbero interrompersi se si elimina il controllo.

    Una volta terminata la revisione delle dipendenze in uso, fare clic su Avanti.

  4. In Elimina controllo > Avviso, fare clic su Elimina. La finestra di dialogo conferma l'eliminazione del controllo.
  5. Fare clic su Fine per chiudere la finestra di dialogo.

Eliminazione dei benchmark personalizzati

  1. Nell'interfaccia utente, passare a SecOps > Benchmark.
  2. Fare clic sul menu menu-icon-light accanto al controllo che si desidera eliminare e fare clic su Elimina.
    Nota:

    È possibile eliminare solo i contenuti personalizzati. I contenuti personalizzati includono un'icona utente custom-checks-user-icon, a differenza dei contenuti di SaltStack built-in-checks-shield-icon.

  3. Nella finestra di dialogo Elimina benchmark, sotto In uso, rivedere l'elenco dei criteri e dei controlli associati al benchmark. Questo è utile per prevedere eventuali dipendenze nell'ambiente che potrebbero interrompersi se si elimina il benchmark.

    Una volta terminata la revisione delle dipendenze in uso, fare clic su Avanti.

  4. In Elimina benchmark > Avviso, fare clic su Elimina. La finestra di dialogo conferma l'eliminazione del benchmark.
  5. Fare clic su Fine per chiudere la finestra di dialogo.

Cartelle e file

Dopo l'inizializzazione dell'SDK, la directory include le cartelle e i file seguenti:

  • benchmarks: contiene i file di metadati (.meta) dei benchmark personalizzati
  • salt/locke/custom: contiene i file di stato dei controlli personalizzati (.sls) e dei file di metadati (.meta)
  • sample_tests: contiene i file di esempio per il test tramite Docker
  • README.md: fornisce informazioni più dettagliate sull'SDK

Di seguito sono descritti più dettagliatamente i file importanti.

File dei benchmark personalizzati

I benchmark sono categorie dei controlli di sicurezza. I benchmark integrati di SaltStack SecOps Compliance sono definiti da esperti di un certo prestigio. Tuttavia, i benchmark personalizzati possono essere definiti dagli standard della propria organizzazione. Ogni benchmark contiene un elenco di suggerimenti, denominati controlli, ed è dotato di un file .meta corrispondente nella directory benchmarks. Per ulteriori informazioni sui benchmark in SaltStack SecOps Compliance, vedere Benchmark.

Creando un file di metadati di benchmark, si crea una categoria di controlli. È quindi possibile aggiungere controlli a tale benchmark assegnando un nome al benchmark in un file di metadati di controllo in benchmark_id. Vedere Cartelle e file.

Il file di metadati è compilato in formato YAML e include le seguenti opzioni che è possibile personalizzare per i contenuti:

nome

Nome benchmark

display_name

Nome del benchmark così come visualizzato nell'elenco dei benchmark in SaltStack SecOps Compliance

desc

Descrizione benchmark

Nota:

Oltre alle opzioni precedenti, il file di metadati include anche una serie di elementi riservati, ad esempio version, authority e ids. Non modificare questi elementi riservati a meno che non sia indicato dall'amministratore.

File dei controlli personalizzati

Un controllo è uno standard di sicurezza sottoposto a valutazione della conformità da parte di SaltStack SecOps Compliance. Si tratta di un suggerimento associato a un benchmark. Il suggerimento fornisce una descrizione, una logica, un controllo e informazioni per la correzione. Ogni controllo è definito da almeno due file: un file di stato (.sls) e un file di metadati (.meta) corrispondente.

Nota:

Entrambi i file associati a un controllo devono trovarsi nella stessa directory e iniziare con lo stesso nome, ad esempio:

  • my_first_check.meta
  • my_first_check.sls

È possibile salvare questi due file insieme in qualsiasi sottodirectory di salt/locke/custom.

Ogni tipo di file è descritto più dettagliatamente di seguito.

File di metadati di controllo

I file di metadati di controllo includono una descrizione del controllo, oltre a dettagli aggiuntivi relativi al controllo, ad esempio la versione, i sistemi operativi applicabili e altro ancora. I metadati sono compilati in formato YAML e utilizzano l'estensione file .meta.

I file di metadati di controllo personalizzati includono le seguenti opzioni:

version

Versione dei contenuti di controllo. Al momento è supportato un valore di 1.

display_name

Il nome di questo controllo come visualizzato nell'elenco di controlli nell'interfaccia utente di SaltStack Config.

global_description

Descrizione dettagliata del controllo. Consente di fornire più informazioni rispetto a quelle fornite tramite il controllo e i nomi dei benchmark.

osfinger

Elenco dei sistemi operativi autorizzati a eseguire questo controllo. Se l'host non dispone di un valore osfinger corrispondente a un valore in questo elenco, il risultato della valutazione del controllo verrà restituito come notapplicable.

refs

Informazioni di riferimento incrociato relative ad altri controlli in altri benchmark o standard di sicurezza soddisfatti da questo controllo.

benchmark_id

Elenco di ciascun benchmark a cui appartiene il controllo.

Ogni voce di benchmark crea una nuova sezione che include le seguenti opzioni secondarie:

type

Tipo di benchmark. Immettere custom quando si definisce un controllo personalizzato non fornito da un'autorità specifica.

desc

Titolo del suggerimento di sicurezza come visualizzato nell'elenco di controlli nell'interfaccia utente di SaltStack Config.

control_id

Numero del suggerimento, ad esempio da un documento CIS corrispondente.

scored

Questo campo è modellato in base ai suggerimenti CIS che possono essere classificati o meno. I suggerimenti CIS che non sono stati classificati non vengono considerati per o rispetto a una classificazione punteggio di sicurezza.``true`` indica classificato e false indica non classificato. È possibile scegliere se classificare o meno un controllo, in base alle esigenze interne.

profile

CIS e altri benchmark sono suddivisi in profili. Ad esempio, il benchmark CIS CentOS Linux 7 ha quattro profili, rappresentati come:

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

Descrizione del controllo. Questo campo può essere simile al campo global_description del controllo.

rationale

Descrizione della logica di implementazione del controllo.

remediation

Istruzioni su come correggere un sistema in uno stato non conforme.

File di stato dei controlli

I file di stato dei controlli applicano gli stati di Salt per eseguire valutazioni e correzioni. Una funzione di stato è una funzione contenuta in un modulo di stato che può gestire l'applicazione di uno stato specifico a un sistema. Le funzioni di stato richiamano frequentemente uno o più moduli di esecuzione per eseguire una determinata attività. I file di stato sono compilati sia in formato YAML che Jinja, e utilizzano l'estensione file .sls.

Il risultato di una valutazione è il risultato dell'esecuzione del file di stato in modalità test=True. Se il risultato indica che la modifica dello stato ha causato una modifica, l'host viene considerato non conforme. Se l'applicazione dello stato non causa una modifica, l'host viene considerato conforme.

Per ulteriori informazioni sugli stati di Salt, vedere la documentazione di Salt: come si utilizzano gli stati di Salt?.

File della libreria dei contenuti personalizzati

Una volta compilata la libreria dei contenuti personalizzati, la directory include la directory _dist, che contiene i seguenti file aggiuntivi:

  • digest.json: contiene hash e altre informazioni sui contenuti
  • secops_custom.tar.gz: file tar gzip pronto per l'inserimento. Questa opzione è adatta per il caricamento tramite l'interfaccia utente di SaltStack Config. Per ulteriori informazioni sull'inserimento dei contenuti, vedere la guida all'installazione Enterprise.
  • secops_custom.txt: versione con codifica base64 del file secops_custom.tar.gz. Questa operazione è utile quando si effettuano chiamate API
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz: una copia identica del file secops_custom.tar.gz, preferita per il caricamento tramite l'interfaccia utente di SaltStack Config a causa del suo nome file descrittivo, che include la data di creazione e l'UUID del tarball