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 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
attentionLe 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
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}}