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à.
Abilita Amazon in GuardDuty modo condizionale utilizzando modelli AWS CloudFormation
Ram Kandaswamy, Amazon Web Services
Riepilogo
AWS CloudFormation, uno strumento di infrastruttura come codice (IaC), ti aiuta a gestire AWS le risorse tramite implementazioni basate su modelli. CloudFormation viene in genere utilizzato per gestire le risorse. AWS Usarlo per abilitare Servizi AWS, come Amazon GuardDuty, può presentare sfide uniche. GuardDuty è un servizio di rilevamento delle minacce che monitora continuamente Account AWS le attività dannose e i comportamenti non autorizzati. A differenza delle risorse tipiche che possono essere create più volte, GuardDuty è un servizio che deve essere abilitato una volta per account e. Regione AWS CloudFormation Le condizioni tradizionali supportano solo confronti di valori statici, il che rende difficile verificare lo stato attuale di servizi come GuardDuty. Se tenti di GuardDuty abilitarlo CloudFormation in un account in cui è già attivo, la distribuzione dello stack fallisce. Ciò può creare sfide operative per i DevOps team che gestiscono ambienti con più account.
Questo modello introduce una soluzione a questa sfida. Utilizza risorse CloudFormation personalizzate supportate da AWS Lambdafunzioni per eseguire controlli di stato dinamici. La logica condizionale si attiva GuardDuty solo se non è già abilitata. Utilizza gli output dello stack per registrare lo GuardDuty stato per riferimenti futuri.
Seguendo questo schema, è possibile automatizzare le GuardDuty implementazioni nell' AWS infrastruttura mantenendo al contempo operazioni di stack pulite e prevedibili. CloudFormation Questo approccio è particolarmente utile per le organizzazioni che sono:
Gestione multipla Account AWS tramite IaC
Implementazione di servizi di sicurezza su larga scala
Richiede implementazioni di infrastrutture idempotenti
Automatizzazione delle implementazioni dei servizi di sicurezza
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS
Un ruolo AWS Identity and Access Management (IAM) che dispone delle autorizzazioni per creare, aggiornare ed eliminare gli stack CloudFormation
AWS Command Line Interface (AWS CLI), installato e configurato
Limitazioni
Se GuardDuty è stato disabilitato manualmente per un Account AWS o Regione AWS, questo pattern non è abilitato GuardDuty per quell'account o regione di destinazione.
Architecture
Stack tecnologico Target
Il modello utilizza CloudFormation l'infrastruttura come codice (IaC). Si utilizza una risorsa CloudFormation personalizzata supportata da una funzione Lambda per ottenere la funzionalità di abilitazione dinamica dei servizi.
Architettura Target
Il seguente diagramma di architettura di alto livello mostra il processo di abilitazione GuardDuty mediante l'implementazione di un modello: CloudFormation

Implementate un CloudFormation modello per creare uno CloudFormation stack.
Lo stack crea un ruolo IAM e una funzione Lambda.
La funzione Lambda assume il ruolo IAM.
Se non GuardDuty è già abilitato sulla destinazione Account AWS, la funzione Lambda lo abilita.
Automazione e scalabilità
È possibile utilizzare la AWS CloudFormation StackSet funzionalità per estendere questa soluzione a più Account AWS e Regioni AWS. Per ulteriori informazioni, consulta Lavorare con AWS CloudFormation StackSets nella CloudFormation documentazione.
Tools (Strumenti)
AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire Servizi AWS tramite comandi nella shell della riga di comando.
AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita in tutte le regioni. Account AWS
Amazon GuardDuty è un servizio di monitoraggio continuo della sicurezza che analizza ed elabora i log per identificare attività impreviste e potenzialmente non autorizzate nel tuo ambiente. AWS
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Epiche
| Operazione | Description | Competenze richieste |
|---|---|---|
Memorizza il codice in Amazon S3. |
| AWS DevOps |
Crea il CloudFormation modello. |
| AWS DevOps |
Crea lo CloudFormation stack. |
| AWS DevOps |
Convalida che GuardDuty sia abilitato per. Account AWS |
| Amministratore cloud, amministratore AWS |
Configura account o regioni aggiuntivi. | Se necessario per il tuo caso d'uso, utilizza la CloudFormation StackSet funzionalità per estendere questa soluzione a più Account AWS e Regioni AWS. Per ulteriori informazioni, consulta Lavorare con AWS CloudFormation StackSets nella CloudFormation documentazione. | Amministratore cloud, amministratore AWS |
Risorse correlate
Riferimenti
Tutorial e video
Semplifica la gestione dell'infrastruttura utilizzando AWS CloudFormation(tutorial
) Usa Amazon GuardDuty e AWS Security Hub CSPM per proteggere più account
(AWS re:Invent 2020) Le migliori pratiche per la creazione (re:Invent 2019 AWS CloudFormation
)AWS Rilevamento delle minacce su AWS: un'introduzione ad Amazon GuardDuty
(AWS re:InForce 2019)
Informazioni aggiuntive
Codice Python
import boto3 import os import json from botocore.exceptions import ClientError import cfnresponse guardduty=boto3.client('guardduty') cfn=boto3.client('cloudformation') def lambda_handler(event, context): print('Event: ', event) if 'RequestType' in event: if event['RequestType'] in ["Create","Update"]: enabled=False try: response=guardduty.list_detectors() if "DetectorIds" in response and len(response["DetectorIds"])>0: enabled="AlreadyEnabled" elif "DetectorIds" in response and len(response["DetectorIds"])==0: cfn_response=cfn.create_stack( StackName='guardduty-cfn-stack', TemplateBody='{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Guard duty creation template", "Resources": { "IRWorkshopGuardDutyDetector": { "Type": "AWS::GuardDuty::Detector", "Properties": { "Enable": true } } } }' ) enabled="True" except Exception as e: print("Exception: ",e) responseData = {} responseData['status'] = enabled cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, "CustomResourcePhysicalID" ) elif event['RequestType'] == "Delete": cfn_response=cfn.delete_stack( StackName='guardduty-cfn-stack') cfnresponse.send(event, context, cfnresponse.SUCCESS, {})