

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Activez Amazon de GuardDuty manière conditionnelle à l'aide de modèles AWS CloudFormation
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates"></a>

*Ram Kandaswamy, Amazon Web Services*

## Résumé
<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), un outil d'infrastructure sous forme de code (IaC), vous aide à gérer les AWS ressources par le biais de déploiements basés sur des modèles. CloudFormation est généralement utilisé pour gérer les AWS ressources. L'utiliser pour activer Services AWS, comme [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html), peut présenter des défis uniques. GuardDuty est un service de détection des menaces qui surveille en permanence vos Comptes AWS activités malveillantes et vos comportements non autorisés. Contrairement aux ressources classiques qui peuvent être créées plusieurs fois, GuardDuty il s'agit d'un service qui doit être activé une fois par compte et Région AWS. Les CloudFormation conditions traditionnelles ne prennent en charge que les comparaisons de valeurs statiques, ce qui rend difficile la vérification de l'état actuel de services tels que GuardDuty. Si vous essayez de l'activer GuardDuty via CloudFormation un compte où il est déjà actif, le déploiement de la pile échoue. Cela peut créer des défis opérationnels pour les DevOps équipes qui gèrent des environnements multi-comptes.

Ce modèle apporte une solution à ce défi. Il utilise des ressources CloudFormation personnalisées soutenues par des [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)fonctions pour effectuer des vérifications d'état dynamiques. La logique conditionnelle GuardDuty ne s'active que si elle n'est pas déjà activée. Il utilise les sorties de la pile pour enregistrer le GuardDuty statut pour référence future.

En suivant ce modèle, vous pouvez automatiser les GuardDuty déploiements au sein de votre AWS infrastructure tout en maintenant des opérations de CloudFormation stack propres et prévisibles. Cette approche est particulièrement utile pour les organisations qui :
+ Gestion de plusieurs Comptes AWS via IaC
+ Mise en œuvre de services de sécurité à grande échelle
+ Exiger des déploiements d'infrastructures idempotents
+ Automatisation des déploiements de services de sécurité

## Conditions préalables et limitations
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Rôle Gestion des identités et des accès AWS (IAM) autorisé à créer, mettre à jour et supprimer des piles CloudFormation 
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Limites**

S'il GuardDuty a été désactivé manuellement pour un Compte AWS ou Région AWS, ce modèle ne s'active pas GuardDuty pour ce compte ou cette région cible.

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

**Pile technologique cible**

Le modèle est utilisé CloudFormation pour l'infrastructure en tant que code (IaC). Vous utilisez une ressource CloudFormation personnalisée soutenue par une fonction Lambda pour obtenir la fonctionnalité d'activation dynamique des services.

**Architecture cible**

Le schéma d'architecture de haut niveau suivant montre le processus d'activation GuardDuty par le déploiement d'un CloudFormation modèle :

![\[Utiliser une CloudFormation pile pour l'activer GuardDuty dans un compte AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/3abd7cb7-0937-41fe-8eaa-79aedb182732/images/71624052-eebc-474a-9aa3-8606d87fc51d.png)


1. Vous déployez un CloudFormation modèle pour créer une CloudFormation pile.

1. La pile crée un rôle IAM et une fonction Lambda.

1. La fonction Lambda assume le rôle IAM.

1. Si GuardDuty ce n'est pas déjà le cas sur la cible Compte AWS, la fonction Lambda l'active.

**Automatisation et mise à l'échelle**

Vous pouvez utiliser cette AWS CloudFormation StackSet fonctionnalité pour étendre cette solution à plusieurs Comptes AWS et Régions AWS. Pour plus d'informations, consultez la section [Travailler avec AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dans la CloudFormation documentation.

## Outils
<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) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie dans toutes Comptes AWS les régions.
+ [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html) est un service de surveillance continue de la sécurité qui analyse et traite les journaux afin d'identifier les activités inattendues et potentiellement non autorisées dans votre AWS environnement.
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

## Épopées
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-epics"></a>

### Création du CloudFormation modèle et déploiement de la pile
<a name="create-the-cfnshort-template-and-deploy-the-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Stockez le code dans Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Créez le CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Créez la CloudFormation pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Validez que cette option GuardDuty est activée pour le Compte AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | Administrateur cloud, administrateur AWS | 
| Configurez des comptes ou des régions supplémentaires. | Selon les besoins de votre cas d'utilisation, utilisez cette CloudFormation StackSet fonctionnalité pour étendre cette solution à plusieurs Comptes AWS et Régions AWS. Pour plus d'informations, consultez la section [Travailler avec AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dans la CloudFormation documentation. | Administrateur cloud, administrateur AWS | 

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

**Références**
+ [AWS CloudFormation documentation](https://docs.aws.amazon.com/cloudformation/index.html)
+ [AWS Lambda référence de type de ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Lambda.html)
+ [CloudFormation type de ressource : :IAM AWS : :Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)
+ [CloudFormation type de ressource : AWS : GuardDuty : :Detector](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-detector.html)
+ [Quatre façons de récupérer n'importe quelle propriété AWS de service en utilisant AWS CloudFormation](https://aws.amazon.com/blogs/mt/four-ways-to-retrieve-any-aws-service-property-using-aws-cloudformation-part-1/) (article de blog)

**Tutoriels et vidéos**
+ [Simplifiez la gestion de votre infrastructure à l'aide](https://www.youtube.com/watch?v=1h-GPXQrLZw) de AWS CloudFormation(didacticiel)
+ [Utilisez Amazon GuardDuty AWS Security Hub CSPM pour sécuriser plusieurs comptes](https://www.youtube.com/watch?v=Rg2ZzAAi1nY) (AWS re:Invent 2020)
+ [Bonnes pratiques en matière de création AWS CloudFormation](https://www.youtube.com/watch?v=bJHHQM7GGro) (AWS re:Invent 2019)
+ [Détection des menaces sur AWS : présentation d'Amazon GuardDuty](https://www.youtube.com/watch?v=czsuZXQvD8E) (AWS Re:InForce 2019)

## Informations supplémentaires
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-additional"></a>

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

