

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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates"></a>

*Ram Kandaswamy, Amazon Web Services*

## Riepilogo
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-summary"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html), 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](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html), 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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)funzioni 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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-prereqs"></a>

**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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-architecture"></a>

**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 

![\[Utilizzo di uno CloudFormation stack da abilitare GuardDuty in un account AWS.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/3abd7cb7-0937-41fe-8eaa-79aedb182732/images/71624052-eebc-474a-9aa3-8606d87fc51d.png)


1. Implementate un CloudFormation modello per creare uno CloudFormation stack.

1. Lo stack crea un ruolo IAM e una funzione Lambda.

1. La funzione Lambda assume il ruolo IAM.

1. 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) nella CloudFormation documentazione.

## Tools (Strumenti)
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) è uno strumento open source che consente di interagire Servizi AWS tramite comandi nella shell della riga di comando.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ti 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](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html) è 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è 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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-epics"></a>

### Crea il CloudFormation modello e distribuisci lo stack
<a name="create-the-cfnshort-template-and-deploy-the-stack"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Memorizza il codice in Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Crea il CloudFormation modello. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Crea lo CloudFormation stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Convalida che GuardDuty sia abilitato per. Account AWS | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) nella CloudFormation documentazione. | Amministratore cloud, amministratore AWS | 

## Risorse correlate
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-resources"></a>

**Riferimenti**
+ [AWS CloudFormation documentazione](https://docs.aws.amazon.com/cloudformation/index.html)
+ [AWS Lambda riferimento al tipo di risorsa](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Lambda.html)
+ [CloudFormation tipo di risorsa: AWS: :IAM: :Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)
+ [CloudFormation tipo di risorsa:: AWS: GuardDuty :Detector](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-detector.html)
+ [Quattro modi per recuperare qualsiasi proprietà del AWS servizio utilizzando AWS CloudFormation](https://aws.amazon.com/blogs/mt/four-ways-to-retrieve-any-aws-service-property-using-aws-cloudformation-part-1/) (post sul blog)

**Tutorial e video**
+ [Semplifica la gestione dell'infrastruttura utilizzando AWS CloudFormation(tutorial](https://www.youtube.com/watch?v=1h-GPXQrLZw))
+ [Usa Amazon GuardDuty e AWS Security Hub CSPM per proteggere più account](https://www.youtube.com/watch?v=Rg2ZzAAi1nY) (AWS re:Invent 2020)
+ [Le migliori pratiche per la creazione (re:Invent 2019 AWS CloudFormation](https://www.youtube.com/watch?v=bJHHQM7GGro))AWS 
+ [Rilevamento delle minacce su AWS: un'introduzione ad Amazon GuardDuty](https://www.youtube.com/watch?v=czsuZXQvD8E) (AWS re:InForce 2019)

## Informazioni aggiuntive
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-additional"></a>

**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, {})
```

