Utilizzo di Chef InSpec profili con Systems Manager Compliance - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Chef InSpec profili con Systems Manager Compliance

AWS Systems Manager si integra con Chef InSpec. Chef InSpecè un framework di test open source che consente di creare profili leggibili dall'uomo da archiviare in Amazon Simple Storage Service (GitHubAmazon S3). È quindi possibile utilizzare Systems Manager per eseguire analisi della conformità e visualizzare nodi conformi e non conformi. Un profilo è un requisito di sicurezza, conformità o policy dell'ambiente di elaborazione. Ad esempio, è possibile creare profili responsabili dei seguenti controlli nella scansione dei nodi con Conformità, una funzionalità di AWS Systems Manager:

  • Controllo dell'apertura o della chiusura di porte specifiche.

  • Controllo dell'esecuzione di determinate applicazioni.

  • Controllo dell'avvenuta installazione di specifici pacchetti.

  • Controllo delle chiavi del Registro di sistema Windows per proprietà specifiche.

Puoi creare InSpec profili per istanze Amazon Elastic Compute Cloud (Amazon EC2) e server o macchine virtuali (VM) locali che gestisci con Systems Manager. Il seguente Chef InSpec profilo di esempio verifica se la porta 22 è aperta.

control 'Scan Port' do impact 10.0 title 'Server: Configure the service port' desc 'Always specify which port the SSH server should listen to. Prevent unexpected settings.' describe sshd_config do its('Port') { should eq('22') } end end

InSpec include una raccolta di risorse che consentono di scrivere rapidamente controlli e controlli di controllo. InSpec utilizza il InSpec Domain-specific Language (DSL) per scrivere questi controlli in Ruby. È inoltre possibile utilizzare profili creati da una vasta comunità di utenti. InSpec Ad esempio, il progetto DevSec chef-os-hardening on GitHub include dozzine di profili per aiutarvi a proteggere i vostri nodi. Puoi creare e archiviare profili in Amazon S3 GitHub o Amazon S3.

Come funziona

Ecco come funziona il processo di utilizzo dei InSpec profili con Compliance:

  1. Identifica InSpec i profili predefiniti che desideri utilizzare o creane uno personalizzato. Puoi utilizzare profili predefiniti GitHub per iniziare. Per informazioni su come creare i tuoi InSpec profili, vedi Chef Chef InSpec Profiles.

  2. Archivia i profili in un GitHub repository pubblico o privato o in un bucket S3.

  3. Esegui la conformità con InSpec i tuoi profili utilizzando il documento Systems Manager (documento SSM)AWS-RunInspecChecks. È possibile iniziare una scansione di conformità utilizzandoRun Command, una funzionalità di AWS Systems Manager, per le scansioni su richiesta, oppure è possibile pianificare scansioni di conformità regolari utilizzandoState Manager, una funzionalità di. AWS Systems Manager

  4. Per identificare i nodi non conformi ci si può avvalere dell'API di conformità o della console di conformità .

Nota

Osservare le seguenti informazioni.

  • Chefutilizza un client sui nodi per elaborare il profilo. Non è necessario installare il client. Quando Systems Manager esegue il documento SSM AWS-RunInspecChecks, il sistema verifica che il client sia installato. In caso contrario, Systems Manager installa il Chef client durante la scansione, quindi disinstalla il client al termine della scansione.

  • Esecuzione del documento SSM AWS-RunInspecChecks, come descritto in questo argomento, assegna una voce di conformità di tipo Custom:Inspec a ogni nodo di destinazione. Per assegnare questo tipo di conformità, il documento richiama l'operazione API Items. PutCompliance

Esecuzione di una scansione di InSpec conformità

Questa sezione include informazioni su come eseguire una scansione di InSpec conformità utilizzando la console Systems Manager e AWS Command Line Interface (AWS CLI). La procedura della console illustra come configurare State Manager per eseguire la scansione. La AWS CLI procedura mostra come Run Command configurare l'esecuzione della scansione.

Esecuzione di una scansione di InSpec conformità con State Manager (console)

Per eseguire una scansione di InSpec conformità State Manager utilizzando la AWS Systems Manager console
  1. Apri la AWS Systems Manager console all'indirizzo https://console.aws.amazon.com/systems-manager/.

  2. Nel riquadro di navigazione, scegli State Manager.

  3. Selezionare Create association (Crea associazione).

  4. Immettere un nome nella sezione Provide association details (Fornisci dettagli associazione).

  5. Nell'elenco Command document (Documento comando) scegliere AWS-RunInspecChecks.

  6. Nell'elenco Document version (Versione del documento), scegliere Latest at runtime (Ultima versione al tempo di esecuzione).

  7. Nella sezione Parametri, nell'elenco Tipo di origine, scegli uno GitHubo S3.

    Se lo desideri GitHub, inserisci il percorso di un InSpec profilo in un GitHub archivio pubblico o privato nel campo Informazioni sulla fonte. Di seguito è riportato un esempio di percorso a un profilo pubblico fornito dal team di Systems Manager dal seguente percorso: https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck.

    {"owner":"awslabs","repository":"amazon-ssm","path":"Compliance/InSpec/PortCheck","getOptions":"branch:master"}

    Se scegli S3, inserisci un URL valido per un InSpec profilo in un bucket S3 nel campo Informazioni sulla fonte.

    Per ulteriori informazioni su come Systems Manager si integra con GitHub Amazon S3, consulta. Esecuzione di script da GitHub

  8. Nella sezione Targets (Destinazioni), identificare i nodi in cui si desidera eseguire questa operazione specificando i tag, selezionando manualmente le istanze, i dispositivi edge o indicando un gruppo di risorse.

    Suggerimento

    Se un nodo gestito che ti aspetti di vedere non è presente nell'elenco, consulta Risoluzione dei problemi relativi alla disponibilità dei nodi gestiti per suggerimenti sulla risoluzione dei problemi.

  9. Nella sezione Specify schedule (Specifica pianificazione), è possibile programmare su base periodica l'esecuzione della scansione di conformità avvalendosi delle opzioni specifiche del generatore di pianificazione.

  10. In Rate control (Controllo velocità):

    • In Concurrency (Simultaneità), specificare un numero o una percentuale di nodi gestiti su cui eseguire contemporaneamente il comando.

      Nota

      Se sono state selezionate le destinazioni specificando i tag applicati ai nodi gestiti o specificando gruppi di risorse AWS , e non si conosce con certezza il numero di nodi gestiti di destinazione, limitare il numero di destinazioni che possono eseguire il documento contemporaneamente specificando una percentuale.

    • Per Error threshold (Soglia di errore) specificare quando interrompere l'esecuzione del comando sulle altri nodi gestiti dopo un errore su un numero o una percentuale di nodi. Se ad esempio si specificano 3 errori, Systems Manager interrompe l'invio del comando quando riceve il quarto errore. Anche i nodi gestiti che stanno ancora elaborando il comando potrebbero inviare errori.

  11. (Opzionale) Nella sezione Output options (Opzioni di output), per salvare l'output del comando in un file, selezionare la casella Write command output to an S3 bucket (Scrivi l'output del comando in un bucket S3). Digita i nomi del bucket e del prefisso (cartella) nelle caselle.

    Nota

    Le autorizzazioni S3 che assegnano la possibilità di scrivere dati in un bucket S3 sono quelle del profilo dell'istanza (per istanze EC2) o ruoli di servizio IAM (in macchine attivate da sistemi ibridi) assegnate all'istanza, non quelle dell'utente IAM che esegue questo processo. Per ulteriori informazioni, consulta Configurare le autorizzazioni di istanza richieste per Systems Manager o Creare un ruolo di servizio IAM per un ambiente ibrido. Inoltre, se il bucket S3 specificato si trova in un altro bucket Account AWS, assicurati che il profilo di istanza o il ruolo del servizio IAM associato al nodo gestito disponga delle autorizzazioni necessarie per scrivere su quel bucket.

  12. Scegliere Create Association (Crea associazione). Il sistema crea l'associazione ed esegue automaticamente la scansione di conformità.

  13. Attendere per alcuni minuti il completamento della scansione, poi selezionare Compliance (Conformità) nel riquadro di navigazione.

  14. In Corresponding managed instances (Istanze gestite corrispondenti), individuare i nodi in cui la colonna Compliance Type (Tipo di conformità) è Custom:Inspec (Personalizzata:Inspec).

  15. Scegliere un ID nodo per visualizzare i dettagli degli stati non conformi.

Esecuzione di una scansione di InSpec conformità con () Run CommandAWS CLI

  1. Installa e configura AWS Command Line Interface (AWS CLI), se non l'hai già fatto.

    Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.

  2. Esegui uno dei seguenti comandi per eseguire un InSpec profilo da uno GitHub o da Amazon S3.

    Il comando accetta i parametri seguenti:

    • SourceType: o Amazon S3 GitHub

    • SourceInfo: URL della cartella InSpec del profilo GitHub in o in un bucket S3. La cartella deve contenere il InSpec file di base (*.yml) e tutti i controlli correlati (*.rb).

    GitHub

    aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"Inspec.yml_file"}"]}'

    Ecco un esempio.

    aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters '{"sourceType":["GitHub"],"getOptions":"branch:master","sourceInfo":["{\"owner\":\"awslabs\", \"repository\":\"amazon-ssm\", \"path\": \"Compliance/InSpec/PortCheck\"}"]}'

    Amazon S3

    aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/DOC-EXAMPLE-BUCKET/Inspec.yml_file\"}"]}'

    Ecco un esempio.

    aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/DOC-EXAMPLE-BUCKET/InSpec/PortCheck.yml\"}"]}'
  3. Con il comando seguente è possibile visualizzare un riepilogo della scansione di conformità.

    aws ssm list-resource-compliance-summaries --filters Key=ComplianceType,Values=Custom:Inspec
  4. Eseguire il seguente comando per visualizzare i dettagli di un nodo non conforme.

    aws ssm list-compliance-items --resource-ids node_ID --resource-type ManagedInstance --filters Key=DocumentName,Values=AWS-RunInspecChecks