Utilizzo di profili Chef InSpec con la conformità Systems Manager - AWS Systems Manager

AWS Systems ManagerChange Managernon è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta AWS Systems ManagerChange Managerla pagina Modifica della disponibilità.

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 profili Chef InSpec con la conformità Systems Manager

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 che eseguano i seguenti controlli, quando si esegue la scansione dei nodi con Conformità, uno strumento 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 solo per le istanze Amazon Elastic Compute Cloud (Amazon EC2) gestite con Systems Manager. I server locali o le macchine virtuali (VMs) non sono supportati. Il seguente profilo Chef InSpec di esempio controlla se la porta 22 sia 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 InSpecDomain-specific Language (DSL) per scrivere questi controlli in Ruby. È inoltre possibile utilizzare profili creati da una vasta comunità di utenti. InSpec Ad esempio, il DevSec chef-os-hardeningprogetto GitHub include dozzine di profili per aiutarti a proteggere i tuoi nodi. È possibile creare e memorizzare i profili in 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. Per iniziare, ci si può avvalere dei profili predefiniti disponibili su GitHub. Per informazioni su come creare i tuoi InSpec profili, consulta Chef Chef InSpec Profiles.

  2. I profili possono essere memorizzati in un archivio GitHub pubblico o privato oppure 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, uno strumento in AWS Systems Manager, per le scansioni su richiesta, oppure è possibile pianificare scansioni di conformità regolari utilizzando State Manager uno strumento in. 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.

  • Chef utilizza 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. Se non lo fosse, Systems Manager installa il client Chef durante la scansione, poi, al termine della stessa, lo disinstalla.

  • L’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. PutComplianceItems

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 pannello di navigazione, scegliere 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 Parameters (Parametri), dall'elenco Source Type (Tipo di origine), scegliere GitHub o S3.

    Se lo desideri GitHub, inserisci il percorso di un InSpec profilo in un GitHub archivio pubblico o privato nel campo Informazioni sulla fonte. Ecco un esempio di percorso a un profilo pubblico fornito dal team di Systems Manager dalla seguente posizione: 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 sull'integrazione di Systems Manager con GitHub e 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 hai selezionato le destinazioni specificando i tag applicati ai nodi gestiti o specificando i gruppi di AWS risorse e non sei sicuro di quanti nodi gestiti siano scelti come target, limita 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 garantiscono la possibilità di scrivere i dati in un bucket S3 sono quelle del profilo dell'istanza (per EC2 le istanze) o del ruolo del servizio IAM (macchine ad attivazione ibrida) assegnato all'istanza, non quelle dell'utente IAM che esegue questa attività. Per ulteriori informazioni, consulta le pagine Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager oppure Creazione di un ruolo di servizio IAM per un ambiente ibrido. Inoltre, se il bucket S3 specificato si trova su un Account AWS diverso, assicurarsi che il profilo dell'istanza o il ruolo di 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 conformità con () InSpec 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: GitHub o Amazon S3

    • 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/amzn-s3-demo-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/amzn-s3-demo-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