Collecter les journaux d'audit Slack
Ce document explique comment ingérer des journaux d'audit Slack dans Google Security Operations à l'aide de fonctions Google Cloud Run ou d'Amazon S3 avec AWS Lambda.
Les journaux d'audit Slack fournissent un enregistrement détaillé des événements liés à la sécurité dans votre organisation Slack Enterprise Grid. L'API Audit Logs vous permet de surveiller les actions des utilisateurs, telles que les connexions, les téléchargements de fichiers, les installations d'applications et les modifications administratives, à des fins de conformité et de surveillance de la sécurité.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps.
Un forfait Slack Enterprise Grid avec accès en tant que propriétaire de l'organisation.
Un accès privilégié à l'un des éléments suivants :
- Google Cloud (pour l'option 1 : Cloud Run Functions et Cloud Scheduler), ou
- AWS (pour l'option 2 : S3, IAM, Lambda, EventBridge).
Collecter les identifiants Slack
Créer l'application Slack
L'API Slack Audit Logs nécessite un jeton OAuth utilisateur avec le champ d'application auditlogs:read. Ce jeton doit être obtenu en installant une application au niveau de l'organisation Enterprise Grid, et non au niveau de l'espace de travail.
- Connectez-vous à Slack en tant que propriétaire de votre organisation Enterprise Grid.
- Accédez à la page Applications de l'API Slack.
- Cliquez sur Créer une application.
- Sélectionnez À partir de zéro.
- Fournissez les informations de configuration suivantes :
- Nom de l'application : saisissez un nom descriptif (par exemple,
Google SecOps Audit Integration). - Choisissez un espace de travail pour développer votre application : sélectionnez votre espace de travail Slack de développement (n'importe quel espace de travail de l'organisation).
- Nom de l'application : saisissez un nom descriptif (par exemple,
- Cliquez sur Créer une application.
Configurer les niveaux d'accès OAuth
- Sur la page des paramètres de votre application, sélectionnez OAuth & Permissions (OAuth et autorisations) dans le panneau de navigation de gauche.
- Accédez à la section Champs d'application.
- Sous Niveaux d'accès des jetons utilisateur (et NON "Niveaux d'accès des jetons de bot"), cliquez sur Ajouter un niveau d'accès OAuth.
- Ajoutez le champ d'application suivant :
auditlogs:read: ce champ d'application permet d'accéder à l'API Audit Logs pour l'organisation Enterprise Grid.
- Sous Niveaux d'accès du jeton du bot, cliquez sur Ajouter un niveau d'accès OAuth.
- Ajoutez le champ d'application suivant :
users:read: présent pour que l'application puisse être installée au niveau de l'organisation.
Installer l'application dans l'organisation Enterprise
L'API Audit Logs lit les événements pour l'ensemble de l'organisation Enterprise. L'application doit donc être installée au niveau de l'organisation plutôt que dans un seul espace de travail. Slack propose deux méthodes pour ce faire. Les deux méthodes génèrent le même jeton OAuth utilisateur au niveau de l'organisation. Utilisez-en un.
Option A : Installer depuis les paramètres de l'application (application au niveau de l'organisation)
Il s'agit du chemin d'accès à la page Developing apps for Enterprise orgs (Développer des applications pour les organisations Enterprise) de Slack. Il ne nécessite pas d'URL de redirection, de distribution publique ni de service Web.
- Sur la page des paramètres de votre application, sélectionnez Applications au niveau de l'organisation dans le panneau de navigation de gauche.
- Cliquez sur Activer.
Dans l'invite de confirmation, cliquez sur Oui, activer.
Connectez-vous en tant que propriétaire de l'organisation Enterprise.
Sélectionnez OAuth et autorisations dans le menu de navigation de gauche.
Cliquez sur Installer dans l'organisation.
Examinez les autorisations demandées sur l'écran de confirmation, puis cliquez sur Autoriser.
Option B : Distribution publique et URL partageable
Il s'agit du chemin d'accès à la page de l'API Slack Audit Logs. L'activation de la distribution publique ne liste pas l'application sur le Slack Marketplace. Elle permet uniquement l'installation en dehors de l'espace de travail de développement.
- Sur la page des paramètres de votre application, sélectionnez OAuth & Permissions (OAuth et autorisations) dans le panneau de navigation de gauche.
Dans la section URL de redirection, cliquez sur Ajouter une URL de redirection, saisissez une URL, cliquez sur Ajouter, puis sur Enregistrer les URL.
Sélectionnez Gérer la distribution dans le menu de navigation de gauche.
Sous Partager votre application avec d'autres espaces de travail, vérifiez que les quatre sections de la checklist sont cochées en vert. Si une section affiche une croix rouge, développez-la et effectuez l'action requise.
Cochez la case J'ai vérifié et supprimé toutes les informations codées en dur.
Cliquez sur Activer la distribution publique.
Connectez-vous en tant que propriétaire de l'organisation Enterprise.
Sous Partager votre application avec votre espace de travail, copiez l'URL partageable et ouvrez-la dans votre navigateur.
Sur l'écran d'installation, ouvrez le menu déroulant en haut à droite et sélectionnez l'organisation Enterprise, et non un espace de travail individuel.
Consultez les autorisations demandées, puis cliquez sur Autoriser.
Récupérer les identifiants
- Une fois l'installation terminée, vous êtes redirigé vers la page OAuth et autorisations.
- Dans la section Jetons OAuth, recherchez le jeton OAuth utilisateur.
- Le jeton commence par
xoxp-. Cliquez sur Copier et enregistrez ce jeton de manière sécurisée.
Important : Il s'agit de votre
SLACK_ADMIN_TOKENpour la fonction Cloud Run ou Lambda. Stockez-le de manière sécurisée. Il fournit un accès en lecture à tous les journaux d'audit de votre organisation Enterprise Grid.Notez votre ID d'organisation :
- Ouvrez Slack dans un navigateur Web en utilisant l'URL de votre organisation (par exemple,
acmeinc.enterprise.slack.com). - Une fois la page chargée, lisez l'URL. Il est au format
https://app.slack.com/client/EXXXXXXX/CXXXXXXX. - Copiez la chaîne commençant par
E. Il s'agit de l'ID de votre organisation.
- Ouvrez Slack dans un navigateur Web en utilisant l'URL de votre organisation (par exemple,
Vérifier les autorisations
Pour vérifier que votre application dispose des autorisations requises :
- Accédez à la page Applications de l'API Slack.
- Sélectionnez votre application.
- Sélectionnez OAuth et autorisations dans le menu de navigation de gauche.
- Sous Jetons OAuth, vérifiez qu'un jeton OAuth utilisateur s'affiche (il commence par
xoxp-). - Sous Scopes, vérifiez que
auditlogs:reads'affiche sous User Token Scopes.
Tester l'accès à l'API
Testez votre jeton avant de procéder à l'intégration :
SLACK_TOKEN="xoxp-your-token-here" curl -H "Authorization: Bearer $SLACK_TOKEN" \ "https://api.slack.com/audit/v1/logs?limit=1"
Une réponse réussie contient un tableau entries avec des événements de journaux d'audit. Si vous recevez une erreur invalid_auth ou missing_scope, vérifiez votre jeton et vos autorisations.
Option 1 : Configurer l'exportation des journaux d'audit Slack à l'aide des fonctions Google Cloud Run
Cette option utilise les fonctions Google Cloud Run et Cloud Scheduler pour collecter les journaux d'audit Slack et les ingérer directement dans Google SecOps à l'aide des scripts d'ingestion Google SecOps.
Avant de commencer (option 1)
Assurez-vous de remplir les conditions préalables supplémentaires suivantes :
- Un projet Google Cloud avec les API suivantes activées :
- API Cloud Run Admin
- API Eventarc
- API Pub/Sub
- API Cloud Scheduler
- API Secret Manager
- Autorisations pour créer des fonctions Cloud Run, des sujets Pub/Sub, des déclencheurs Eventarc, des jobs Cloud Scheduler et des secrets dans Secret Manager.
- Fichier JSON d'un compte de service Google SecOps.
Obtenir le compte de service Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM > Agent de collecte.
- Cliquez sur Télécharger pour télécharger le fichier d'authentification pour l'ingestion.
- Enregistrez le fichier JSON de manière sécurisée. Vous l'importerez en tant que secret dans Google Secret Manager.
Préparer le code de la fonction
Téléchargez les fichiers de déploiement à partir du dépôt GitHub Google SecOps ingestion-scripts :
- Dans le dossier
slack, téléchargez les éléments suivants :.env.ymlmain.pyrequirements.txt
À partir de la racine du dépôt, téléchargez l'intégralité du répertoire
commonavec tous ses fichiers.La structure de votre répertoire de déploiement doit se présenter comme suit :
``` deployment_directory/ ├── common/ │ ├── __init__.py │ ├── auth.py │ ├── env_constants.py │ ├── ingest.py │ ├── status.py │ └── utils.py ├── .env.yml ├── main.py └── requirements.txt ```
Configurer les secrets dans Google Secret Manager
Stockez les identifiants sensibles dans Secret Manager pour que la fonction Cloud Run puisse y accéder de manière sécurisée.
Créer un secret pour le compte de service Google SecOps
- Dans la consoleGoogle Cloud , accédez à Sécurité > Secret Manager.
- Cliquez sur Créer un secret.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez
chronicle-service-account. - Valeur du secret : collez l'intégralité du contenu du fichier JSON du compte de service Google SecOps.
- Nom : saisissez
- Cliquez sur Créer un secret.
Copiez le nom de ressource du secret. Il a le format suivant :
projects/PROJECT_ID/secrets/chronicle-service-account/versions/latest
Créer un secret pour le jeton Slack
- Sur la page Secret Manager, cliquez sur Créer un secret.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez
slack-admin-token. - Valeur du secret : collez le jeton OAuth de l'utilisateur Slack (commence par
xoxp-).
- Nom : saisissez
- Cliquez sur Créer un secret.
Copiez le nom de ressource du secret. Il a le format suivant :
projects/PROJECT_ID/secrets/slack-admin-token/versions/latest
Configurer les variables d'environnement
Ouvrez le fichier
.env.ymldans votre répertoire de déploiement et configurez les variables d'environnement :CHRONICLE_CUSTOMER_ID: "<your-chronicle-customer-id>" CHRONICLE_REGION: "us" CHRONICLE_SERVICE_ACCOUNT: "projects/<PROJECT_ID>/secrets/chronicle-service-account/versions/latest" CHRONICLE_NAMESPACE: "" POLL_INTERVAL: "5" SLACK_ADMIN_TOKEN: "projects/<PROJECT_ID>/secrets/slack-admin-token/versions/latest"Remplacez les éléments suivants :
<your-chronicle-customer-id>: ID client Google SecOps.<PROJECT_ID>: ID de votre projet Google Cloud .CHRONICLE_REGION: définie sur votre région Google SecOps. Valeurs valides :us,asia-northeast1,asia-south1,asia-southeast1,australia-southeast1,europe,europe-west2,europe-west3,europe-west6,europe-west9,europe-west12,me-central1,me-central2,me-west1,northamerica-northeast2,southamerica-east1.POLL_INTERVAL: intervalle de fréquence (en minutes) auquel la fonction s'exécute. Cette durée doit être identique à l'intervalle du job Cloud Scheduler.
Enregistrez le fichier
.env.yml.
Créer un sujet Pub/Sub
Cloud Scheduler déclenche la fonction Cloud Run via un sujet Pub/Sub.
- Dans la console GCP, accédez à Pub/Sub > Sujets.
- Cliquez sur Créer un sujet.
- Dans le champ ID du sujet, saisissez
slack-audit-trigger. - Cliquez sur Créer.
Déployer la fonction Cloud Run
Ouvrez un terminal ou Cloud Shell dans la console Google Cloud . Accédez au répertoire de votre déploiement et exécutez la commande suivante :
gcloud run deploy slack-audit-to-chronicle \ --source . \ --function main \ --base-image google-22/python312 \ --region <REGION> \ --service-account <SERVICE_ACCOUNT_EMAIL> \ --env-vars-file .env.yml \ --memory 512Mi \ --timeout 540 \ --max-instances 1 \ --no-allow-unauthenticated- Remplacez
<REGION>par la région (par exemple,us-central1) et<SERVICE_ACCOUNT_EMAIL>par l'adresse e-mail du compte de service que vous souhaitez que votre fonction Cloud Run utilise.
- Remplacez
Créez le déclencheur Pub/Sub pour la fonction comme suit :
gcloud eventarc triggers create slack-audit-trigger \ --location <REGION> \ --destination-run-service slack-audit-to-chronicle \ --destination-run-region <REGION> \ --event-filters "type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic projects/<PROJECT_ID>/topics/slack-audit-trigger \ --service-account <SERVICE_ACCOUNT_EMAIL>- Remplacez
<PROJECT_ID>par l'ID du projet Google Cloud .
- Remplacez
Attendez la fin du déploiement.
Configurer Cloud Scheduler
- Dans la console GCP, accédez à Cloud Scheduler > Créer un job.
Fournissez les informations de configuration suivantes :
Paramètre Valeur Nom slack-audit-schedulerRégion Sélectionnez la même région que celle dans laquelle vous avez déployé la fonction Cloud Run. Fréquence */5 * * * *(toutes les cinq minutes, ce qui correspond à la valeurPOLL_INTERVAL)Fuseau horaire Sélectionnez un fuseau horaire (UTC recommandé). Cliquez sur Continuer.
Dans la section Configurer l'exécution :
- Type de cible : sélectionnez Pub/Sub.
- Thème : sélectionnez
slack-audit-trigger. - Corps du message : saisissez
run.
Cliquez sur Créer.
Options de fréquence de programmation
Choisissez la fréquence en fonction du volume de journaux et des exigences de latence :
| Fréquence | Expression Cron | Cas d'utilisation |
|---|---|---|
| Toutes les 5 minutes | */5 * * * * |
Standard (recommandé) |
| Toutes les 15 minutes | */15 * * * * |
Volume moyen |
| Toutes les heures | 0 * * * * |
Volume faible |
Tester l'intégration (option 1)
- Dans la console Cloud Scheduler, recherchez votre job (
slack-audit-scheduler). - Cliquez sur Exécuter de force pour déclencher le job manuellement.
- Patientez quelques secondes.
- Accédez à Cloud Run.
- Cliquez sur le nom du service (
slack-audit-to-chronicle). - Cliquez sur l'onglet Journaux.
Vérifiez que la fonction s'est exécutée correctement. Par exemple :
Retrieving the Slack Audit logs since: YYYY-MM-DDTHH:MM:SSZ Processing logs... Retrieved X audit logs from the API call Logs processed successfully.
Option 2 : Configurer l'exportation des journaux d'audit Slack à l'aide d'AWS S3
Cette option utilise AWS Lambda pour collecter les journaux d'audit Slack et les stocker dans Amazon S3, puis configure un flux Google SecOps pour ingérer les journaux.
Avant de commencer (option 2)
Assurez-vous de remplir les conditions préalables supplémentaires suivantes :
- Un compte AWS disposant des autorisations nécessaires pour créer des buckets S3, des utilisateurs/rôles/stratégies IAM, des fonctions Lambda et des règles EventBridge.
Créer un bucket Amazon S3
- Créez un bucket Amazon S3 en suivant le guide de l'utilisateur Créer un bucket.
- Enregistrez le nom et la région du bucket pour référence ultérieure (par exemple,
slack-audit-logs).
Configurer les rôles et la stratégie IAM pour les importations S3
- Dans la console AWS, accédez à l'onglet IAM > Stratégies > Créer une stratégie > JSON.
Copiez et collez le règlement suivant. Remplacez
slack-audit-logssi vous avez utilisé un autre nom de bucket :{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObjects", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::slack-audit-logs/*" }, { "Sid": "AllowGetStateObject", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::slack-audit-logs/slack-audit-state.json" } ] }Cliquez sur Suivant.
Saisissez le nom de la règle :
SlackAuditS3Policy.Cliquez sur Créer une règle.
Accédez à IAM > Rôles > Créer un rôle > Service AWS > Lambda.
Associez la règle
SlackAuditS3Policyque vous venez de créer.Nommez le rôle
SlackAuditToS3Role, puis cliquez sur Créer un rôle.
Créer la fonction Lambda
- Dans la console AWS, accédez à Lambda > Fonctions > Créer une fonction.
- Cliquez sur Créer à partir de zéro.
Fournissez les informations de configuration suivantes :
Paramètre Valeur Nom slack_audit_to_s3Durée d'exécution Python 3.13 Architecture x86_64 Rôle d'exécution SlackAuditToS3RoleCliquez sur Créer une fonction.
Une fois la fonction créée, ouvrez l'onglet Code, supprimez le stub et collez le code suivant (
slack_audit_to_s3.py).#!/usr/bin/env python3 # Lambda: Pull Slack Audit Logs (Enterprise Grid) to S3 (JSONL format) import os, json, time, urllib.parse from urllib.request import Request, urlopen from urllib.error import HTTPError, URLError import boto3 BASE_URL = "https://api.slack.com/audit/v1/logs" TOKEN = os.environ["SLACK_AUDIT_TOKEN"] BUCKET = os.environ["S3_BUCKET"] PREFIX = os.environ.get("S3_PREFIX", "slack/audit/") STATE_KEY = os.environ.get("STATE_KEY", "slack-audit-state.json") LIMIT = int(os.environ.get("LIMIT", "200")) MAX_PAGES = int(os.environ.get("MAX_PAGES", "20")) LOOKBACK_SEC = int(os.environ.get("LOOKBACK_SECONDS", "3600")) HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "60")) HTTP_RETRIES = int(os.environ.get("HTTP_RETRIES", "3")) RETRY_AFTER_DEFAULT = int(os.environ.get("RETRY_AFTER_DEFAULT", "2")) # Optional server-side filters (comma-separated 'action' values) ACTIONS = os.environ.get("ACTIONS", "").strip() s3 = boto3.client("s3") def _get_state() -> dict: try: obj = s3.get_object(Bucket=BUCKET, Key=STATE_KEY) st = json.loads(obj["Body"].read() or b"{}") return {"cursor": st.get("cursor")} except Exception: return {"cursor": None} def _put_state(state: dict) -> None: body = json.dumps(state, separators=(",", ":")).encode("utf-8") s3.put_object( Bucket=BUCKET, Key=STATE_KEY, Body=body, ContentType="application/json" ) def _http_get(params: dict) -> dict: qs = urllib.parse.urlencode(params, doseq=True) url = f"{BASE_URL}?{qs}" if qs else BASE_URL req = Request(url, method="GET") req.add_header("Authorization", f"Bearer {TOKEN}") req.add_header("Accept", "application/json") attempt = 0 while True: try: with urlopen(req, timeout=HTTP_TIMEOUT) as r: return json.loads(r.read().decode("utf-8")) except HTTPError as e: # Respect Retry-After on 429/5xx if e.code in (429, 500, 502, 503, 504) and attempt < HTTP_RETRIES: retry_after = 0 try: retry_after = int( e.headers.get("Retry-After", RETRY_AFTER_DEFAULT) ) except Exception: retry_after = RETRY_AFTER_DEFAULT time.sleep(max(1, retry_after)) attempt += 1 continue raise except URLError: if attempt < HTTP_RETRIES: time.sleep(RETRY_AFTER_DEFAULT) attempt += 1 continue raise def _write_page(data: dict, page_idx: int) -> str: """Extract entries from Slack API response and write as JSONL.""" entries = data.get("entries") or [] if not entries: return None lines = [json.dumps(entry, separators=(",", ":")) for entry in entries] body = "\n".join(lines).encode("utf-8") ts = time.strftime("%Y/%m/%d/%H%M%S", time.gmtime()) key = f"{PREFIX}{ts}-slack-audit-p{page_idx:05d}.json" s3.put_object( Bucket=BUCKET, Key=key, Body=body, ContentType="application/json" ) return key def lambda_handler(event=None, context=None): state = _get_state() cursor = state.get("cursor") params = {"limit": LIMIT} if ACTIONS: params["action"] = [a.strip() for a in ACTIONS.split(",") if a.strip()] if cursor: params["cursor"] = cursor else: # First run (or reset): fetch a recent window by time params["oldest"] = int(time.time()) - LOOKBACK_SEC pages = 0 total = 0 last_cursor = None while pages < MAX_PAGES: data = _http_get(params) _write_page(data, pages) entries = data.get("entries") or [] total += len(entries) # Cursor for next page meta = data.get("response_metadata") or {} next_cursor = meta.get("next_cursor") or data.get("next_cursor") if next_cursor: params = {"limit": LIMIT, "cursor": next_cursor} if ACTIONS: params["action"] = [ a.strip() for a in ACTIONS.split(",") if a.strip() ] last_cursor = next_cursor pages += 1 continue break if last_cursor: _put_state({"cursor": last_cursor}) return { "ok": True, "pages": pages + (1 if total or last_cursor else 0), "entries": total, "cursor": last_cursor, } if __name__ == "__main__": print(lambda_handler())
Configurer les variables d'environnement Lambda
- Accédez à Configuration > Variables d'environnement > Modifier > Ajouter une variable d'environnement.
Saisissez les variables d'environnement suivantes en remplaçant les valeurs par les vôtres :
Clé Exemple de valeur SLACK_AUDIT_TOKENxoxp-...(jeton utilisateur au niveau de l'organisation avecauditlogs:read)S3_BUCKETslack-audit-logsS3_PREFIXslack/audit/STATE_KEYslack-audit-state.jsonLIMIT200MAX_PAGES20LOOKBACK_SECONDS3600HTTP_TIMEOUT60HTTP_RETRIES3RETRY_AFTER_DEFAULT2ACTIONS(facultatif, filtre d'action séparé par une virgule) Cliquez sur Enregistrer.
Accédez à l'onglet Configuration. Dans le panneau Configuration générale, cliquez sur Modifier.
Définissez Délai d'inactivité sur
5 minutes(300 secondes), puis cliquez sur Enregistrer.
Créer une programmation EventBridge
- Accédez à Amazon EventBridge> Scheduler> Créer une programmation.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez
slack-audit-1h. - Programmation récurrente : sélectionnez Programmation basée sur le taux.
- Expression du taux : saisissez
1 hours. - Période flexible : sélectionnez Désactivée.
- Nom : saisissez
- Cliquez sur Suivant.
- Sélectionnez la cible :
- API cible : sélectionnez Invocation AWS Lambda.
- Fonction lambda : sélectionnez
slack_audit_to_s3.
- Cliquez sur Suivant.
- Cliquez sur Suivant (ignorez les paramètres facultatifs).
- Vérifiez, puis cliquez sur Créer la programmation.
(Facultatif) Créez un utilisateur IAM en lecture seule pour Google SecOps.
- Accédez à la console AWS> IAM> Utilisateurs> Créer un utilisateur.
- Fournissez les informations de configuration suivantes :
- Nom d'utilisateur : saisissez
secops-reader. - Type d'accès : sélectionnez Accès programmatique.
- Nom d'utilisateur : saisissez
- Cliquez sur Suivant.
- Sélectionnez Associer directement les règles.
Cliquez sur Créer une règle. Dans l'onglet JSON, collez le code suivant :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::slack-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::slack-audit-logs" } ] }Cliquez sur Suivant.
Saisissez le nom de la règle :
secops-reader-policy.Cliquez sur Créer une règle.
Revenez à la page de création d'utilisateur, actualisez la liste des règles, puis sélectionnez
secops-reader-policy.Cliquez sur Suivant.
Cliquez sur Create User (Créer un utilisateur).
Sélectionnez l'utilisateur créé
secops-reader.Accédez à Identifiants de sécurité > Clés d'accès > Créer une clé d'accès.
Sélectionnez Service tiers.
Cliquez sur Suivant.
Cliquez sur Créer une clé d'accès.
Cliquez sur Télécharger le fichier .csv pour enregistrer les identifiants.
Configurer un flux dans Google SecOps pour ingérer les journaux d'audit Slack
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter un flux.
- Cliquez sur Configurer un flux unique.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Slack Audit Logs). - Sélectionnez Amazon S3 V2 comme Type de source.
- Sélectionnez Audit Slack comme Type de journal.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
URI S3 : saisissez l'URI du bucket S3 avec le chemin du préfixe :
``` s3://slack-audit-logs/slack/audit/ ``` Replace `slack-audit-logs` with your actual S3 bucket name.Option de suppression de la source : sélectionnez l'option de suppression de votre choix.
Âge maximal du fichier : incluez les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.
ID de clé d'accès : clé d'accès utilisateur avec accès au bucket S3 (à partir de l'utilisateur
secops-readerIdentity and Access Management (IAM)).Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3 (à partir de l'utilisateur IAM
secops-reader).Espace de noms de l'élément : espace de noms de l'élément.
Libellés d'ingestion : libellé à appliquer aux événements de ce flux.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Table de mappage UDM
| Champ de journal | Mappage UDM | Logique |
|---|---|---|
action |
metadata.product_event_type |
Mappé directement à partir du champ action |
actor.type |
principal.labels |
Mappé directement avec la clé actor.type |
actor.user.email |
principal.user.email_addresses |
Mappé directement |
actor.user.id |
principal.user.product_object_id |
Mappé directement |
actor.user.id |
principal.user.userid |
Mappé directement |
actor.user.name |
principal.user.user_display_name |
Mappé directement |
actor.user.team |
principal.user.group_identifiers |
Mappé directement |
context.ip_address |
principal.ip |
Mappé directement |
context.location.domain |
about.resource.attribute.labels |
Mappé directement avec la clé context.location.domain |
context.location.id |
about.resource.id |
Mappé directement |
context.location.name |
about.resource.name |
Mappé directement |
context.location.name |
about.resource.attribute.labels |
Mappé directement avec la clé context.location.name |
context.location.type |
about.resource.resource_subtype |
Mappé directement |
context.session_id |
network.session_id |
Mappé directement |
context.ua |
network.http.user_agent |
Mappé directement |
context.ua |
network.http.parsed_user_agent |
User-agent analysé dérivé du champ context.ua |
country |
principal.location.country_or_region |
Mappé directement |
date_create |
metadata.event_timestamp.seconds |
Code temporel epoch converti en objet code temporel |
details.inviter.email |
target.user.email_addresses |
Mappé directement |
details.inviter.id |
target.user.product_object_id |
Mappé directement |
details.inviter.name |
target.user.user_display_name |
Mappé directement |
details.inviter.team |
target.user.group_identifiers |
Mappé directement |
details.reason |
security_result.description |
Mappé directement ; si le tableau est concaténé avec des virgules |
details.type |
about.resource.attribute.labels |
Mappé directement avec la clé details.type |
details.type |
security_result.summary |
Mappé directement |
entity.app.id |
target.resource.id |
Mappé directement |
entity.app.name |
target.resource.name |
Mappé directement |
entity.channel.id |
target.resource.id |
Mappé directement |
entity.channel.name |
target.resource.name |
Mappé directement |
entity.channel.privacy |
target.resource.attribute.labels |
Mappé directement avec la clé entity.channel.privacy |
entity.file.filetype |
target.resource.attribute.labels |
Mappé directement avec la clé entity.file.filetype |
entity.file.id |
target.resource.id |
Mappé directement |
entity.file.name |
target.resource.name |
Mappé directement |
entity.file.title |
target.resource.attribute.labels |
Mappé directement avec la clé entity.file.title |
entity.huddle.date_end |
about.resource.attribute.labels |
Mappé directement avec la clé entity.huddle.date_end |
entity.huddle.date_start |
about.resource.attribute.labels |
Mappé directement avec la clé entity.huddle.date_start |
entity.huddle.id |
about.resource.attribute.labels |
Mappé directement avec la clé entity.huddle.id |
entity.huddle.participants.0 |
about.resource.attribute.labels |
Mappé directement avec la clé entity.huddle.participants.0 |
entity.huddle.participants.1 |
about.resource.attribute.labels |
Mappé directement avec la clé entity.huddle.participants.1 |
entity.type |
target.resource.resource_subtype |
Mappé directement |
entity.user.email |
target.user.email_addresses |
Mappé directement |
entity.user.id |
target.user.product_object_id |
Mappé directement |
entity.user.name |
target.user.user_display_name |
Mappé directement |
entity.user.team |
target.user.group_identifiers |
Mappé directement |
entity.workflow.id |
target.resource.id |
Mappé directement |
entity.workflow.name |
target.resource.name |
Mappé directement |
id |
metadata.product_log_id |
Mappé directement |
ip |
principal.ip |
Mappé directement |
user_agent |
network.http.user_agent |
Mappé directement |
user_id |
principal.user.product_object_id |
Mappé directement |
username |
principal.user.product_object_id |
Mappé directement |
metadata.event_type |
La valeur par défaut est USER_COMMUNICATION. Définissez-la sur USER_CREATION si l'action est user_created, sur USER_LOGIN si l'action est user_login ou user_login_failed, sur USER_LOGOUT si l'action est user_logout, sur USER_RESOURCE_ACCESS si l'action correspond à file_, sur USER_RESOURCE_UPDATE_PERMISSIONS si l'action correspond à app_, private_, public_ ou auth_policy_, sur USER_CHANGE_PERMISSIONS si l'action correspond à pref, legal_hold_, workflow_, channel_, user_deactivated, user_reactivated, role_change_ ou user_channel_. |
|
metadata.log_type |
Codé en dur sur SLACK_AUDIT |
|
metadata.product_name |
Définie sur Enterprise Grid si date_create existe, sinon sur Audit Logs si user_id existe |
|
metadata.vendor_name |
Codé en dur sur Slack |
|
extensions.auth.mechanism |
Codé en dur sur REMOTE |
|
extensions.auth.type |
Définissez sur SSO si l'action contient user_login ou user_logout, sinon MACHINE. |
|
security_result.action |
La valeur par défaut est ALLOW. Définissez-la sur BLOCK si l'action est user_login_failed. |
|
target.application |
Définie sur Slack si date_create existe, sinon sur SLACK si user_id existe |
Journal des modifications
Afficher le journal des modifications pour ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.