Forwarder SIEM¶
AKKO v2026.04 livre un sub-chart optionnel akko-siem-forwarder
(Fluent Bit, Apache 2.0) qui diffuse chaque événement d'audit vers
un ou plusieurs SIEM entreprise — Splunk HEC, Microsoft Sentinel,
Elastic Stack, ou tout endpoint HTTP JSON générique (logs layer, Sumo Logic,
broker custom).
Traite NIS2 Art. 21(2)(b) — remontée d'éléments de preuve pour la gestion d'incidents.
Activer¶
# 1. Créer le Secret d'identifiants (en prod : SealedSecrets / ExternalSecrets)
kubectl create secret generic akko-siem-creds -n akko \
--from-literal=splunk_token=$SPLUNK_HEC_TOKEN \
--from-literal=sentinel_shared_key=$SENTINEL_KEY \
--from-literal=elastic_api_key=$ELASTIC_KEY
# 2. Upgrade du chart avec les destinations voulues
helm upgrade akko oci://harbor.akko-ai.com/akko-charts/akko \
--version 2026.04 \
-f values-harbor.yaml \
-f values-dev-secrets.yaml \
--set akko-siem-forwarder.enabled=true \
--set akko-siem-forwarder.targets.splunk.enabled=true \
--set akko-siem-forwarder.targets.splunk.hecUrl=https://hec.client.example:8088 \
--set akko-siem-forwarder.targets.sentinel.enabled=true \
--set akko-siem-forwarder.targets.sentinel.workspaceId=<guid>
Ce qui est envoyé¶
Chaque entrée logs layer taguée audit_type:* est incluse :
| Source d'audit | Tag | Producteur |
|---|---|---|
| RBAC fonctions IA | AI_RBAC |
middleware akko-ai-service |
| Lifecycle catalog | CATALOG_MANAGER |
akko-catalog-manager |
| Lifecycle tenant | TENANT_LIFECYCLE |
Jobs Helm hook akko-tenant |
| Événements Keycloak | KEYCLOAK |
webhook kc-events → logs layer |
| Décisions OPA | OPA_DECISION |
plugin OPA decision log |
| Query log Trino | TRINO_QUERY |
event listener trino |
| Audit object storage | MINIO_AUDIT |
webhook audit object storage |
| Endpoint RGPD | GDPR |
akko-catalog-manager routes_gdpr |
| Reçu ADEN | ADEN_RECEIPT |
akko-aden audit_receipt |
Détails par destination¶
Splunk HEC¶
akko-siem-forwarder:
enabled: true
targets:
splunk:
enabled: true
hecUrl: "https://hec.splunk.client.example:8088"
tokenSecretName: akko-siem-creds
tokenSecretKey: splunk_token
index: "akko"
La sortie splunk de Fluent Bit utilise HTTPS + TLS verify On + token
HEC dans le header Authorization.
Microsoft Sentinel¶
akko-siem-forwarder:
targets:
sentinel:
enabled: true
workspaceId: "<GUID>"
sharedKeySecretKey: sentinel_shared_key
logType: "AKKOAudit"
La sortie azure de Fluent Bit POST vers l'API data collector Log
Analytics avec auth HMAC SHA256. Les logs atterrissent dans la table
custom AKKOAudit_CL.
Elastic Stack¶
akko-siem-forwarder:
targets:
elastic:
enabled: true
host: "elastic.client.example:9200"
apiKeySecretKey: elastic_api_key
index: "akko-audit-%{+YYYY.MM.dd}"
Rotation quotidienne façon Logstash. Si vous tournez déjà Elastic
Security, utiliser le template d'index .security-*.
HTTP JSON générique¶
Pour tout autre SIEM (source HTTP Sumo Logic, logs layer
/loki/api/v1/push, broker custom) :
akko-siem-forwarder:
targets:
generic_http:
enabled: true
url: "https://ingest.client.example/v1/events"
authHeaderSecretKey: generic_http_auth
Vérifier¶
# Pod sidecar actif ?
kubectl -n akko get pod -l app.kubernetes.io/name=akko-siem-forwarder
# Le port metrics répond ?
kubectl -n akko port-forward svc/akko-akko-siem-forwarder 2020 &
curl -s http://localhost:2020/api/v1/metrics | jq '.output'
# Envoyer un événement synthétique via l'input HTTP Fluent Bit
kubectl -n akko exec deploy/akko-akko-siem-forwarder -- \
curl -s -X POST http://localhost:8888 \
-H "Content-Type: application/json" \
-d '{"audit_type":"TEST","event":"ping","timestamp":1713542400}'
Puis chercher l'événement dans chaque SIEM — il doit apparaître en moins de 10 s.
Observabilité¶
Fluent Bit expose les métriques Prometheus à /api/v1/metrics/prometheus
sur le port 2020. Compteurs clés :
fluentbit_input_bytes_total{name="http"}fluentbit_output_proc_records_total{name="splunk"}fluentbit_output_errors_total{name="azure"}
Dépannage¶
| Symptôme | Cause | Correctif |
|---|---|---|
| Splunk 401 | Token HEC incorrect ou désactivé | curl -k -H "Authorization: Splunk <token>" $HEC_URL/services/collector/event -d '{"event":"ping"}' |
| Sentinel 403 | Shared key expirée | Rotation dans Azure Portal → Log Analytics workspace → Agents → Primary Key |
| Elastic 401 | API key révoquée | POST /_security/api_key avec permissions sur l'index AKKO |
| Aucun record ne remonte | VLOGS_URL injoignable | kubectl exec ... -- curl -s $VLOGS_URL | head |
| Alertes de backpressure | Quota ingest SIEM atteint | Ralentir temporairement via pollIntervalSeconds |