Collecter les journaux d'audit Cisco Umbrella

Compatible avec :

Ce document explique comment collecter des journaux d'audit Cisco Umbrella dans un flux Google Security Operations à l'aide d'un bucket AWS S3. L'analyseur normalise les données brutes des journaux CSV, en gérant différents délimiteurs et les éventuelles incohérences de mise en forme. Ensuite, en fonction du type de journal (DNS ou audit), il mappe les champs extraits au schéma UDM correspondant, en enrichissant les données avec un contexte supplémentaire et en normalisant la représentation pour une analyse plus approfondie.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à AWS IAM et S3.
  • Assurez-vous de disposer d'un accès privilégié à Cisco Umbrella.

Configurer un bucket Amazon S3 géré par Cisco

  1. Connectez-vous au tableau de bord Cisco Umbrella.
  2. Accédez à Admin > Gestion des journaux.
  3. Sélectionnez l'option Utiliser un bucket Amazon S3 géré par Cisco.
  4. Fournissez les informations de configuration suivantes :
    • Sélectionnez une région : sélectionnez une région plus proche de votre emplacement pour réduire la latence.
    • Sélectionnez une durée de conservation : sélectionnez la période. La durée de conservation est de 7, 14 ou 30 jours. Passé le délai sélectionné, les données sont supprimées et ne peuvent pas être récupérées. Si votre cycle d'ingestion est régulier, utilisez une période plus courte. Vous pourrez modifier la durée de conservation ultérieurement.
  5. Cliquez sur Enregistrer.
  6. Cliquez sur Continuer pour confirmer vos sélections et recevoir une notification d'activation.
    Dans la fenêtre Activation terminée qui s'affiche, les valeurs Clé d'accès et Clé secrète sont affichées.
  7. Copiez les valeurs Clé d'accès et Clé secrète. Si vous perdez ces clés, vous devez les régénérer.
  8. Cliquez sur OK > Continuer.
  9. Une page récapitulative affiche la configuration et le nom de votre bucket. Vous pouvez activer ou désactiver la journalisation selon les besoins de votre organisation. Toutefois, les journaux sont supprimés en fonction de la durée de conservation, que de nouvelles données soient ajoutées ou non.

Facultatif : Configurer les clés d'accès utilisateur pour le bucket AWS S3 autogéré

  1. Connectez-vous à l'AWS Management Console.
  2. Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
  3. Sélectionnez l'utilisateur créé.
  4. Sélectionnez l'onglet Informations d'identification de sécurité.
  5. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  6. Sélectionnez Service tiers comme Cas d'utilisation.
  7. Cliquez sur Suivant.
  8. Facultatif : ajoutez un tag de description.
  9. Cliquez sur Créer une clé d'accès.
  10. Cliquez sur Télécharger le fichier CSV pour enregistrer la clé d'accès et la clé d'accès secrète pour une utilisation ultérieure.
  11. Cliquez sur OK.
  12. Sélectionnez l'onglet Autorisations.
  13. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  14. Sélectionnez Ajouter des autorisations.
  15. Sélectionnez Joindre directement des règles.
  16. Recherchez et sélectionnez la règle AmazonS3FullAccess.
  17. Cliquez sur Suivant.
  18. Cliquez sur Ajouter des autorisations.

Facultatif : configurer un bucket Amazon S3 autogéré

  1. Connectez-vous à l'AWS Management Console.

  2. Accédez à S3.

  3. Cliquez sur Créer un bucket.

  4. Fournissez les informations de configuration suivantes :

    • Nom du bucket : indiquez le nom du bucket Amazon S3.
    • Région : sélectionnez une région.
  5. Cliquez sur Créer.

Facultatif : Configurez une stratégie de bucket pour le bucket AWS S3 autogéré

  1. Cliquez sur le bucket que vous venez de créer pour l'ouvrir.
  2. Sélectionnez Propriétés> Autorisations.
  3. Dans la liste Autorisations, cliquez sur Ajouter une règle de bucket.
  4. Saisissez la règle de bucket préconfigurée comme suit :

    {
      "Version": "2008-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::BUCKET_NAME/*"
        },
        {
          "Sid": "",
          "Effect": "Deny",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::BUCKET_NAME/*"},
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:GetBucketLocation",
          "Resource": "arn:aws:s3:::BUCKET_NAME"
        },
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::BUCKET_NAME"
        }
      ]
    }
    
    • Remplacez BUCKET_NAME par le nom du bucket Amazon S3 que vous avez fourni.
  5. Cliquez sur Enregistrer.

Facultatif : validation requise pour le bucket Amazon S3 autogéré

  1. Dans le tableau de bord Cisco Umbrella, sélectionnez Admin > Log management > Amazon S3.
  2. Dans le champ Nom du bucket, spécifiez le nom exact de votre bucket Amazon S3, puis cliquez sur Valider.
  3. Lors de la procédure de validation, un fichier nommé README_FROM_UMBRELLA.txt est importé de Cisco Umbrella vers votre bucket Amazon S3. Vous devrez peut-être actualiser votre navigateur pour que le fichier Readme s'affiche une fois importé.
  4. Téléchargez le fichier README_FROM_UMBRELLA.txt et ouvrez-le à l'aide d'un éditeur de texte.
  5. Copiez et enregistrez le jeton Cisco Umbrella unique du fichier.
  6. Accédez au tableau de bord Cisco Umbrella.
  7. Dans le champ Numéro de jeton, spécifiez le jeton, puis cliquez sur Enregistrer.
  8. Si l'opération réussit, un message de confirmation s'affiche dans votre tableau de bord pour indiquer que le bucket a bien été validé. Si vous recevez une erreur indiquant que votre bucket ne peut pas être validé, vérifiez à nouveau la syntaxe du nom du bucket et examinez la configuration.

Configurer un flux dans Google SecOps pour ingérer les journaux d'audit Cisco Umbrella

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux d'audit Cisco Umbrella).
  4. Sélectionnez Amazon S3 V2 comme type de source.
  5. Sélectionnez Audit Cisco Umbrella comme Type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URI S3 : URI du bucket.
      • s3:/BUCKET_NAME
        • Remplacez BUCKET_NAME par le nom réel du bucket.
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
  8. Cliquez sur Suivant.

  9. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ du journal Mappage UDM Logique
action_type security_result.action_details Mappé directement à partir du champ de journal brut action_type.
action_type security_result.action Si action_type contient allow (non sensible à la casse), définissez la valeur sur ALLOW. Si action_type contient block (non sensible à la casse), définissez la valeur sur BLOCK.
additionalValue additional.fields{}.key Variable définie sur Additional Value.
additionalValue additional.fields{}.value.string_value Mappé directement à partir du champ de journal brut additionalValue.
blocked_categories additional.fields{}.key Variable définie sur blocked_categories.
blocked_categories additional.fields{}.value.string_value Mappé directement à partir du champ de journal brut blocked_categories.
catégories security_result.category_details Mappé directement à partir du champ de journal brut categories, après avoir été divisé par une virgule.
column1 metadata.product_log_id Mappé à partir du champ de journal brut column1 si le journal est un journal d'audit.
column1 date_time Mappé à partir du champ de journal brut column1 si le journal est un journal DNS.
column10 catégories Mappé directement à partir du champ de journal brut column10.
column11 most_granular_identity_type Mappé directement à partir du champ de journal brut column11.
column12 identity_types Mappé directement à partir du champ de journal brut column12.
column13 blocked_categories Mappé directement à partir du champ de journal brut column13.
column2 date_time Mappé à partir du champ de journal brut column2 si le journal est un journal d'audit.
column2 most_granular_identity Mappé à partir du champ de journal brut column2 si le journal est un journal DNS.
column3 principal.user.email_addresses Mappé à partir du champ de journal brut column3 si le journal est un journal d'audit.
column3 identités Mappé à partir du champ de journal brut column3 si le journal est un journal DNS.
column4 principal.user.userid Mappé à partir du champ de journal brut column4 si le journal est un journal d'audit.
column4 internal_ip Mappé à partir du champ de journal brut column4 si le journal est un journal DNS.
column5 security_result.rule_name Mappé à partir du champ de journal brut column5 si le journal est un journal d'audit.
column5 external_ip Mappé à partir du champ de journal brut column5 si le journal est un journal DNS.
column6 action_type Mappé directement à partir du champ de journal brut column6.
column7 principal.ip Mappé à partir du champ de journal brut column7 si le journal est un journal d'audit.
column7 dns_query_type Mappé à partir du champ de journal brut column7 si le journal est un journal DNS.
column8 additionalValue Mappé à partir du champ de journal brut column8 si le journal est un journal d'audit.
column8 dns_response_code Mappé à partir du champ de journal brut column8 si le journal est un journal DNS.
column9 domaine Mappé directement à partir du champ de journal brut column9.
date_time metadata.event_timestamp.seconds Code temporel epoch extrait du champ date_time.
dns_query_type network.dns.questions.type Extrait du champ dns_query_type à l'aide d'une expression régulière, converti en entier.
dns_response_code network.dns.response_code Mappé à partir du champ dns_response_code, converti en entier en fonction des valeurs du code de réponse DNS.
domaine network.dns.questions.name Mappé directement à partir du champ domain.
external_ip principal.ip Mappé à partir du champ external_ip s'il n'est pas vide et différent de internal_ip.
identités principal.location.name Mappé à partir du champ identities si le champ identity_types correspondant est défini sur Networks.
identités principal.hostname Mappé à partir du champ identities si le champ identity_types correspondant est défini sur AD Computers, Roaming Computers ou Anyconnect Roaming Client.
identités principal.asset.hostname Mappé à partir du champ identities si le champ identity_types correspondant est défini sur AD Computers, Roaming Computers ou Anyconnect Roaming Client.
identités principal.location.city Mappé à partir du champ identities si le champ identity_types correspondant est défini sur Sites.
identity_types additional.fields{}.key Variable définie sur identities_types.
identity_types additional.fields{}.value.string_value Mappé directement à partir du champ de journal brut identity_types.
internal_ip principal.ip Mappé à partir du champ internal_ip s'il n'est pas vide.
most_granular_identity additional.fields{}.key Variable définie sur most_granular_identity.
most_granular_identity additional.fields{}.value.string_value Mappé directement à partir du champ de journal brut most_granular_identity.
most_granular_identity_type additional.fields{}.key Variable définie sur most_granular_identity_type.
most_granular_identity_type additional.fields{}.value.string_value Mappé directement à partir du champ de journal brut most_granular_identity_type.
metadata.event_type Définie sur NETWORK_DNS si le journal est un journal DNS.
metadata.event_type Défini sur STATUS_UPDATE si le journal est un journal d'audit et que principal_ip n'est pas vide.
metadata.event_type Définissez la valeur sur GENERIC_EVENT si le journal est un journal d'audit et que principal_ip est vide.
metadata.vendor_name Variable définie sur CISCO UMBERLLA.
metadata.product_name Variable définie sur CISCO UMBERLLA.
metadata.log_type Variable définie sur AUDITD.
network.application_protocol Définie sur DNS si le journal est un journal DNS.

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