AWS Security Hub
AWS Security Hub est un service de sécurité en nuage qui automatise les contrôles de sécurité et rassemble les alertes de sécurité dans un emplacement central. Le service effectue une validation des meilleures pratiques par rapport à vos paramètres de sécurité, regroupe les alertes et automatise la correction des paramètres de sécurité non conformes.
Pour en savoir plus sur le service voir la documentation AWS Security Hub.
Prérequis
- Rôle administrateur dans AWS permettant de configurer les comptes et services Security Hub
- Rôle « Organization Admin » dans MD.ECO
- AWS Security Hub configuré dans votre environnement
- Le compte Security Hub delegated administrator est désigné dans le présent document comme
{{SecurityHubAdministratorAccountID}}
- Les findings doivent êtres agrégés dans une région désignée comme
{{AggregationRegion}}
dans le présent document
- Le compte Security Hub delegated administrator est désigné dans le présent document comme
- Un bucket S3 crée suivant la procédure Ingestion par Bucket S3
- Désigné dans le présent document comme
{{S3SecurityHubAuditBucketName}}
- Désigné dans le présent document comme
Recommandations Security Hub
- Il est conseillé d'activer le référentiel FSBP, celui-ci contient les contrôles pertinents aux usecases proposées par Mondata : AWSNorme sur les meilleures pratiques de sécurité fondamentales (FSBP)
- AWS Cloud Config doit être configuré pour permettre la découverte des ressources requises pour les contrôles Security Hub : AWS Configressources nécessaires pour générer des résultats de contrôle
- Il est conseillé d'utiliser le déploiement automatique de Security Hub par le bias de l'intégration avec la gestion de l'organisation AWS, ceci permet l'ajout systématique des nouveaux comptes dans Security Hub : Configuration du AWS Security Hub
Fonctionnement
Export des « findings » vers un bucket S3
L'intégration entre AWS Security Hub et Mondata se fait par un bucket S3. Plusieurs opérations sont nécessaires au niveau de la stack AWS afin de pouvoir automatiquement exporter les données de AWS Security Hub vers le bucket d'intégration.
Pour ce faire, il suffit de construire la chaîne de transformation de message suivante dans la région en charge de l'agrégation seulement.
Diagramme de la solution
Étapes de configuration
Configuration Kinesis Firehose
Créer un flux de diffusion dans Kinesis.
Ou
Data Firehose - Créer un flux de diffusion
- Choisir la source « Direct PUT »
- Choisir la destination « Amazon S3 »
- Choisir un nom de flux de diffusion descriptif et le garder en note
- Garder les options par défaut pour la catégorie « Transformer et convertir les enregistrements »
- Sous « Paramètre de destination », sélectionner le bucket S3
{{S3SecurityHubAuditBucketName}}
créé préalablement - Laisser les valeurs par défaut pour les autres configurations et cliquer sur « Créer un flux de diffusion »
La création du « delivery stream » peut prendre quelques minutes.
AWS - Kinesis Data Firehose - Créer un flux de diffusion
Configuration EventBridge
La prochaine étape consiste à créer une règle EventBridge entre Security Hub et CloudWatch.
- Dans EventBridge, rendez-vous dans la section « Règles » sous la catégorie « Autobus »
- Cliquer sur le bouton « Créer une règle »
Créer une règle - Définir les détails de la règle
- Donnez un nom significatif à la règle
- Donnez une description significative à la règle
- Sélectionnez le type de règle « Règle avec un modèle d'événement »
- Cliquez sur suivant
Créer une règle - Générer un modèle d'événement
- Sélectionnez la source « Événements AWS [ou événements partenaires EventBridge] »
- Sélectionnez la méthode de création « Utiliser le formulaire d'événement »
- Sélectionnez la source d'événement « Services AWS »
- Sélectionnez le service AWS « Security Hub »
- Sélectionnez le type d'événement « Security Hub Findings - Imported »
- Laissez les autres valeurs par défaut et cliquez sur « Suivant »
AWS - Amazon EventBridge - Règles - Créer une règle - Générer un modèle d'événement
Créer une règle - Sélectionner la ou les cibles
- Sélectionnez le type de cible « Service AWS »
- Sélectionnez la cible « Groupe de journaux CloudWatch »
- Choisissez un nom descriptif pour le nouveau groupe de journaux et gardez le en note
- Gardez les « Réglages supplémentaires » par défaut et cliquez sur « Suivant »
Terminez la configuration et créer la règle.
Configuration CloudWatch
Avant de pouvoir configurer CloudWatch, un rôle et sa politique devront être créé au préalable pour celui-ci dans IAM.
Création d'une politique IAM pour CloudWatch
- Rendez-vous dans la section « Politiques » du service IAM
- Cliquez sur « Créer une politique »
Créer une politique - Spécifier les autorisations
-
Cliquez sur l'onglet « JSON »
-
Utilisez le modèle de politique suivant
Remplacer les valeurs suivantes :
{{AggregationRegion}}
: le nom de la region d'agrégation{{SecurityHubAdministratorAccountID}}
: le numéro du compte administrateur Security Hub
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Effect": "Allow",
"Resource": "arn:aws:firehose:{{AggregationRegion}}:{{SecurityHubAdministratorAccountID}}:deliverystream/*"
}
]
}
Cette politique donnera les droit à CloudWatch d'écrire dans tous les « Flux de diffusion Kinesis Firehose ». Vous pouvez restreindre les accès au flux de diffusion créée précédemment en changeant la clef « ARN » de la ressource.
Créer une politique - Vérifier et créer
- Choisissez un nom descriptif pour la politique et gardez-le en note pour pour lui faire référence à la création du rôle IAM.
- Cliquez sur « Créer une politique »
Création d'un rôle IAM pour CloudWatch
- Rendez-vous dans la section « Rôles » du service IAM
- Cliquez sur « Créer un rôle »
Sélectionner une entité de confiance
- Sélectionnez le type d'entité approuvée « Service AWS »
- Sélectionnez « Kinesis » comme service
- Sélectionnez « Kinesis Firehose » comme cas d'utilisation
- Cliquez sur « Suivant »
Ajouter des autorisations
- Cochez la nouvelle politique
- Cliquez sur « Suivant »
Nommer, vérifier et créer
- Choisissez un nom de rôle descriptif et gardez-le en note pour la création du filtre d'abonnement Kinesis Firehose
- Cliquez sur « Créer un rôle »
Déléguer le rôle au service CloudWatch
- Dans la page du nouveau rôle, cliquez sur l'onglet « Relations d'approbation »
- Cliquez sur « Modifier la politique d'approbation »
Remplacez la politique par le gabarit suivant.
Remplacer les valeurs suivantes :
{{AggregationRegion}}
: le nom de la region d'agrégation{{SecurityHubAdministratorAccountID}}
: le numéro du compte administrateur Security Hub
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "logs.{{AggregationRegion}}.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:logs:{{AggregationRegion}}:{{SecurityHubAdministratorAccountID}}:*"
}
}
}
]
}
Sauvegardez pour terminer la configuration du rôle.
Création du filtre d'abonnement Kinesis Firehose
- Dans CloudWatch, rendez-vous dans la section « Groupes de journaux »
- Trouvez le groupe de journaux créé plus tôt et cliquez dessus pour voir ses détails
Détails du groupe de journaux
- Cliquez sur l'onglet « Filtres d'abonnement »
- Cliquez sur le bouton « Créer »
- Sélectionnez « Créer un filtre d'abonnement Kinesis Firehose »
Créer un filtre d'abonnement Kinesis Firehose pour le groupe de journaux
- Sélectionnez le « Flux de diffusion Kinesis Firehose » créé plus tôt
- Sélectionnez le rôle créé plus tôt
- Donnez un nom descriptif au filtre
- Cliquez sur « Démarrer la diffusion en continu »
Si vous obtenez une erreur au moment de la création, assurez-vous que le rôle possède les bonnes permissions.
AWS - CloudWatch - Groupes de journaux - Filtres d'abonnement - Créer un filtre d'abonnement Kinesis Firehose
Vérification de l'installation
La configuration sera valide si des événements de contrôles apparaissent dans le bucket S3. La propagation n'est pas instantanée entre les services et peut prendre un certain temps. Le résultat attendu est une arborescence Année/Mois/Jour/Heure
qui comprendra les fichiers compressés des findings générés par Security Hub.
Notifier Mondata avec les informations sur l'instance
Inclure les informations suivantes :
{{S3SecurityHubAuditBucketName}}