Aller au contenu principal

Ingestion par Bucket S3

Cette procédure décrit la configuration prérequis à la configuration d'un bucket S3 AWS pour l'ingestion de données'.

Prérequis

Permissions

  • Rôle administrateur ou équivalent dans un compte AWS dédié à la surveillance

Fonctionnement

Diagramme Architectural - Surveillance AWSDiagramme Architectural - Surveillance AWS

Diagramme du fonctionnement avec certains connecteurs AWS

Étapes de configuration d'un Bucket S3

Variables à déterminer

Voici la liste des variables que vous allez rencontrer lors de la procédure :

  • {{S3AuditBucketName}} : Le nom du bucket S3 à créer


    attention

    Le nom est unique pour l'ensemble de l'environnement AWS

  • {{Region}} : La région dans lequel le bucket doit être crée

  • {{MondataOrgID}} : ID d'organisation fournie par Mondata pour assigner les droits de lecture dans le Bucket

  • {{KMSDataEncryptionKeyARN}} (Optionel) : ARN de la clé utilisée pour encrypter les logs

Création du bucket S3

attention

Si le bucket S3 est déjà configuré, s'assurer que la configuration Object Ownership possède la valeur BucketOwnerEnforced.

aws s3api create-bucket --bucket {{S3AuditBucketName}} --region {{Region}} --object-ownership BucketOwnerEnforced --create-bucket-configuration LocationConstraint={{Region}}

Bloquer l'accès publique

aws s3api put-public-access-block --bucket {{S3AuditBucketName}} --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"

Activer l'encryption

aws s3api put-bucket-encryption --bucket {{S3AuditBucketName}} --server-side-encryption-configuration '{
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "AES256"
}
}
]
}

Activer le lifecycle (rétention 90 jours)

aws s3api put-bucket-lifecycle --bucket {{S3AuditBucketName}} --lifecycle-configuration '{
"Rules": [
{
"Expiration": {
"Days": 90
},
"Prefix":"",
"ID": "90 days retention",
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 90
}
}
]
}'

Ajouter une politique de base

Permet à Mondata de venir récupérer les logs, à cela s'ajoutera la configuration pour chaque service qui viendra porter des logs dans le bucket.

{
"Statement": [
{
"Sid": "Allow mondata to fetch objects from the bucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{{MondataOrgID}}:role/mondata-log-fetching-role"
},
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::{{S3AuditBucketName}}/*",
"arn:aws:s3:::{{S3AuditBucketName}}"
]
}
]
}

Optionnel: Clé KMS personnalisée

Ajout d'un statement dans la politique de la clé pour permettre à Mondata de décrypter le contenu du bucket lorsque la gestion des clés est faite avec des clés gérées par l'entreprise. Non requis si les clés sont gérées par AWS.

GuardDuty peut utiliser cette configuration.

{
"Sid": "Allow mondata to use the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::{{MondataOrgID}}:role/mondata-log-fetching-role"
]
},
"Action": [
"kms:Decrypt"
],
"Resource": "{{KMSDataEncryptionKeyARN}}"
}

Prendre en notes les informations pour configurer les intégrations

  • {{S3AuditBucketName}}