Intégrer AWS CloudWatch à Google SecOps

Ce document explique comment intégrer AWS CloudWatch à Google Security Operations (Google SecOps).

Cas d'utilisation

Actions actives : rechercher dans les journaux, créer des groupes/flux de journaux, supprimer des groupes/flux de journaux, mettre à jour les règles de conservation.

Paramètres d'intégration

Utilisez les paramètres suivants pour configurer l'intégration :

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
AWS Access Key ID (ID de clé d'accès AWS) Chaîne N/A Oui ID de clé d'accès AWS à utiliser dans l'intégration.
Clé secrète AWS Mot de passe N/A Oui Clé secrète AWS à utiliser dans l'intégration.
Région AWS par défaut Chaîne N/A Oui Région AWS par défaut à utiliser dans l'intégration, par exemple "us-west-2".

Pour savoir comment configurer une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement si nécessaire. Après avoir configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour en savoir plus sur la configuration et la prise en charge de plusieurs instances, consultez Prendre en charge plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis votre bureau et Exécuter une action manuelle dans votre demande.

Ping

Testez la connectivité à AWS CloudWatch.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
En cas de réussite : "Successfully connected to the AWS CloudWatch server with the provided connection parameters!"

L'action doit échouer et arrêter l'exécution d'un playbook :
if not successful: "Failed to connect to the AWS CloudWatch server! Error is {0}".format(exception.stacktrace)

Général

Lister les groupes de journaux

Répertoriez les groupes de journaux disponibles dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Nombre maximal de groupes à renvoyer Integer 50 Non Spécifiez le nombre de groupes à renvoyer. Valeur par défaut : 50.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Résultat JSON
[
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611581795766,
        "logGroupName": "CloudTrail/DefaultLogGroup",
        "metricFilterCount": 0,
        "storedBytes": 24529015
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1606993203235,
        "logGroupName": "Example",
        "metricFilterCount": 1,
        "storedBytes": 730
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611652265055,
        "logGroupName": "aws-cloudtrail-logs",
        "metricFilterCount": 0,
        "storedBytes": 51354815
    }
]
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si des données sont disponibles (is_success = true) : "Successfully returned available log groups in AWS CloudWatch".

Si aucune donnée n'est disponible (is_success = true) : "No log groups were found in AWS CloudWatch".

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "List Log Groups". Reason: {0}''.format(error.Stacktrace)

Général
Tableau du mur des cas

Nom : "Groupes de journaux"

Colonne :

Nom

Nombre de filtres de métriques

Octets stockés

Heure de création

Général

Lister les flux de journaux

Répertoriez les flux de journaux disponibles dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Groupes de journaux CSV N/A Oui Spécifiez une liste de noms de groupes pour lesquels vous souhaitez récupérer des flux de journaux, séparés par une virgule.
Order By (Trier par) LDD

Nom du flux de journaux

Valeurs possibles :

Nom du flux de journaux

Heure du dernier événement

Non Spécifiez l'ordre des flux de journaux.
Ordre de tri LDD

Croissant

Valeurs possibles :

Croissant

Décroissant

Non Spécifiez l'ordre de tri à utiliser.
Nombre maximal de flux à renvoyer Integer 50 Non Spécifiez le nombre de flux à renvoyer par groupe de journaux.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Résultat JSON
[{
    "group":"{group name}"
"logStreams": [
        {
            "arn": "arn:aws:logs:us-east-1:log-group:aws-cloudtrail-logs:log-stream:CloudTrail_us-east-1",
            "creationTime": 1611652272827,
            "firstEventTimestamp": 1611652287716,
            "lastEventTimestamp": 1612271538268,
            "lastIngestionTime": 1612271538289,
            "logStreamName": "CloudTrail_us-east-1",
            "storedBytes": 0,
            "uploadSequenceToken": "49039859450784908968417870788122674924958823185025535393"
        }
    ]
}
]
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si des données sont disponibles pour au moins un groupe de journaux (is_success = true) : "Successfully returned available log streams for the following log groups in AWS CloudWatch: {group names}".

Si les données ne sont pas disponibles pour au moins un groupe de journaux (is_success = true) : "L'action n'a pas pu renvoyer les flux de journaux disponibles pour les groupes de journaux suivants dans AWS CloudWatch : {group names}".

Si les données ne sont pas disponibles pour au moins un groupe de journaux (is_success = false) : "No log streams were found for the provided log groups in AWS CloudWatch" (Aucun flux de journaux n'a été trouvé pour les groupes de journaux fournis dans AWS CloudWatch).

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "List Log Streams". Reason: {0}''.format(error.Stacktrace)

Général
Tableau du mur des cas

Nom : "{Group Name}: Log Streams"

Colonne :

Nom

Octets stockés

Heure de création

Code temporel du dernier événement

Général

Événement de journal de recherche

Recherchez des événements de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Groupe de journaux Chaîne N/A Oui Spécifiez le nom du groupe de journaux dans lequel vous souhaitez rechercher des événements.
Flux de journaux CSV N/A Non Spécifiez une liste de flux de journaux séparés par une virgule, dans lesquels vous souhaitez rechercher des événements.
Période LDD

La dernière heure

Valeurs possibles :

La dernière heure

Les 6 dernières heures

Dernières 24 heures

La semaine dernière

Le mois dernier

Personnalisé

Non Spécifiez une période pour la recherche. Si vous sélectionnez "Personnalisé", vous devez également définir une "Heure de début".
Heure de début Chaîne N/A Non Spécifiez l'heure de début de la recherche. Ce paramètre est obligatoire si "Personnalisé" est sélectionné pour le paramètre "Période". Format : ISO 8601
Heure de fin Chaîne N/A Non Spécifiez l'heure de fin de la recherche. Format : ISO 8601. Si aucune valeur n'est fournie et que "Personnalisé" est sélectionné pour le paramètre "Période", ce paramètre utilisera l'heure actuelle.
Filtre personnalisé Chaîne N/A Non Spécifiez le filtre personnalisé pour la recherche. Pour en savoir plus, consultez le portail de documentation.
Nombre maximal d'événements à renvoyer Integer 50 Non Spécifiez le nombre d'événements à renvoyer. Valeur par défaut : 50.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Résultat JSON
[
        {
            "eventId": "ID",
            "ingestionTime": 1611652287896,
            "logStreamName": "CloudTrail_us-east-1",
            "message": {
                "eventVersion": "1.08",
                "userIdentity": {
                    "type": "AssumedRole",
                    "principalId": "ID",
                    "arn":"arn:aw
s:sts: : ACCOUNT_ID:assumed-role/AWSServiceRoleForAmazonMacie/AmazonMacieSession","accountId":"ACCOUNT_ID","accessKeyId":"KEY_ID","sessionC
ontext":{"sessionIssuer":{"type":"Role","principalId":"ID","arn":"arn:aws:iam: : ACCOUNT_ID:role/aws-service-role/macie.amazonaws.com/AW
SServiceRoleForAmazonMacie","accountId":"ACCOUNT_ID","userName":"AWSServiceRoleForAmazonMacie"},"webIdFederationData":{},"attributes":{"mfaAuthenticated": "false",
                    "creationDate": "2021-01-26T08:53:52Z"
                }
            },
            "invokedBy": "AWS Internal",
            "eventTime": "2021-01-26T08:53:52Z",
            "eventSource": "s3.amazonaws.com",
            "eventName": "GetBucketLogging",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "AWSInternal",
            "userAgent": "AWS Internal",
            "requestParameters": {
                "logging": "",
                "bucketName": "example",
                "Host": "example.s3.amazonaws.com"
            },
            "responseElements": null,
            "additionalEventData": {
                "SignatureVersion": "SigV4",
                "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
                "bytesTransferredIn": 0,
                "AuthenticationMethod": "AuthHeader",
                "x-amz-id-2": "PFM+6pyK/gCPy95gh8dtstgtXftrpHkL8s=",
                "bytesTransferredOut": 289
            },
            "requestID": "8FA919A428BC82D7",
            "eventID": "7eb5dd44-7021-4945-b9be-27f5b1e0d8d0",
            "readOnly": true,
            "resources": [
                {
                    "accountId": "ACCOUNT_ID",
                    "type": "AWS::S3::Bucket",
                    "ARN": "arn:aws:s3:::example"
                }
            ],
            "eventType": "AwsApiCall",
            "managementEvent": true,
            "eventCategory": "Management",
            "recipientAccountId": "ACCOUNT_ID"
        },
        "timestamp": 1611652287716
    }
]
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si des données sont disponibles (is_success = true) : "Successfully executed search in AWS CloudWatch".

Si les données ne sont pas disponibles (is_success = false) : "Aucune donnée n'a été trouvée pour la recherche fournie."

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Search Log Events". Reason: {0}''.format(error.Stacktrace)

Général
Tableau du mur des cas

Nom : "Résultats de recherche"

Colonne : toutes les clés disponibles.

Général

Définir une règle de conservation

Définissez la règle de conservation pour les groupes de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Groupe de journaux Chaîne N/A Oui Spécifiez le nom du groupe de journaux pour lequel vous souhaitez définir la règle de conservation.
Jours de conservation LDD

1

Valeurs possibles

1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827 et 3653

Oui Spécifiez le nombre de jours pendant lesquels les données doivent être conservées dans le groupe de journaux.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si les données sont correctes (is_success = true) : "Successfully set the retention policy for log group {group} in AWS CloudWatch".

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Set Retention Policy". Reason: {0}''.format(error.Stacktrace)

Général

Supprimer la règle de conservation

Supprimez la règle de conservation du groupe de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Groupe de journaux Chaîne N/A Oui Spécifiez le nom du groupe de journaux dont vous souhaitez supprimer la règle de conservation.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si les données sont récupérées (is_success = true) : "Successfully removed the retention policy from log group {group} in AWS CloudWatch".

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Remove Retention Policy". Reason: {0}''.format(error.Stacktrace)

Général

Créer un groupe de journaux

Créez un groupe de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Nom du groupe de journaux Chaîne N/A Oui Spécifiez le nom du nouveau groupe de journaux.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Résultat JSON
{
"group_name": "GROUP_NAME"
}
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si les données sont correctes (is_success = true) : "Successfully created a new log group {group} in AWS CloudWatch".

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Сreate Log Group". Reason: {0}''.format(error.Stacktrace)

Général

Créer un flux de journaux

Créez un flux de journaux pour le groupe de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Groupe de journaux Chaîne N/A Oui Spécifiez le nom du groupe de journaux dans lequel vous souhaitez créer un flux de journaux.
Nom du flux de journaux Chaîne N/A Oui Spécifiez le nom du nouveau flux de journaux.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Résultat JSON
{
"log_stream": "STREAM_NAME"
}
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si les données ont bien été créées (is_success = true) : "Successfully created a new log stream in log group {group} in AWS CloudWatch".

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Сreate Log Stream". Reason: {0}''.format(error.Stacktrace)

Général

Supprimer le groupe de journaux

Supprimez un groupe de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Nom du groupe de journaux Chaîne N/A Oui Spécifiez le nom du groupe de journaux à supprimer.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si les données sont récupérées (is_success = true) : "Successfully deleted log group {group} in AWS CloudWatch".

Si le groupe n'existe pas (is_success=false) : "L'action n'a pas pu supprimer le groupe de journaux {group} dans AWS CloudWatch. Motif : Le groupe de journaux {group} est introuvable dans AWS CloudWatch."

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Delete Log Group". Reason: {0}''.format(error.Stacktrace)

Général

Supprimer le flux de journaux

Supprimez un flux de journaux dans un groupe de journaux dans AWS CloudWatch.

Paramètres

Nom à afficher du paramètre> Type> Valeur par défaut> Is Mandatory> Description >
Nom du groupe de journaux Chaîne N/A Oui Spécifiez le nom du groupe de journaux contenant le flux de journaux.
Nom du flux de journaux Chaîne N/A Oui Spécifiez le nom du flux de journaux à supprimer.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script> Options de valeur>
is_success is_success=False
is_success is_success=True
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
Si les données sont récupérées (is_success = true) : "Successfully deleted log stream {stream} from log group {group} in AWS CloudWatch".

Si le flux n'existe pas (is_success=false) : "L'action n'a pas pu supprimer le flux de journaux {stream} du groupe de journaux {group} dans AWS CloudWatch. Motif : Le flux de journaux {stream} est introuvable dans le groupe de journaux {group} dans AWS CloudWatch."

Si le groupe n'existe pas (is_success=false) : "L'action n'a pas pu supprimer le flux de journaux {stream} du groupe de journaux {group} dans AWS CloudWatch. Motif : Le groupe de journaux {group} est introuvable dans AWS CloudWatch."

L'action doit échouer et arrêter l'exécution d'un playbook :
en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : "Error executing action "Delete Log Stream". Reason: {0}''.format(error.Stacktrace)

Général

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.