Collecter les journaux d'audit HashiCorp
Cet analyseur traite les journaux d'audit HashiCorp au format JSON, Syslog ou combiné. Il extrait des champs, effectue l'analyse Grok et KV pour les messages standards et de type "runner", gère les charges utiles JSON et met en correspondance les données extraites avec l'UDM. L'analyseur inclut également la gestion des exceptions et la suppression des journaux mal formés.
Avant de commencer
- Assurez-vous de disposer d'une instance Google Security Operations.
- Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
- Si vous exécutez l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un accès privilégié à HCP.
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion.
Obtenir le numéro client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- Copiez et sauvegardez l'ID client dans la section Détails de l'organisation.
Installer l'agent BindPlane
- Pour l'installation sous Windows, exécutez le script suivant:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Pour l'installation Linux, exécutez le script suivant:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Pour en savoir plus sur les options d'installation, consultez ce guide d'installation.
Configurer l'agent BindPlane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez à la machine sur laquelle BindPlane est installé.
Modifiez le fichier
config.yaml
comme suit :receivers: udplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: auditd raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Redémarrez l'agent BindPlane pour appliquer les modifications:
sudo systemctl restart bindplane
Activer Syslog pour HCP Vault
- Connectez-vous au portail HCP.
- Accédez à Clusters Vault.
- Sélectionnez votre cluster Vault dans la liste des clusters déployés.
- Dans la section Vue d'ensemble du cluster, recherchez et copiez l'adresse Vault (par exemple, https://vault-cluster-name.hashicorpcloud.com:8200).
- Accédez à la section Détails d'accès, puis copiez le Jeton racine.
Installer la CLI Vault
Pour Linux :
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install vault
Pour macOS (à l'aide de Homebrew):
brew tap hashicorp/tap brew install hashicorp/tap/vault
Pour Windows :
Download the executable file. Extract it and add the Vault binary to your system's PATH.
Vérifiez l'installation de la CLI Vault en exécutant la commande suivante:
vault --version
Configurer HCP Vault à l'aide de la CLI pour envoyer des journaux d'audit à BindPlane
- Ouvrez le terminal ou l'invite de commande.
Définissez l'adresse du serveur Vault à l'aide de la variable d'environnement:
export VAULT_ADDR="https://vault-cluster-name.hashicorpcloud.com:8200"
Connectez-vous à Vault à l'aide du jeton racine:
vault login <root-token>
Configurer le chemin d'accès syslog vers un socket syslog externe
Exécutez la commande suivante pour activer le syslog et l'envoyer à BindPlane:
vault audit enable socket address="udp://<bindplane-ip>:<bindplane-port>" socket_type="udp" tag="vault"
Confirmez la nouvelle configuration:
vault audit list
La sortie doit afficher la nouvelle configuration du socket.
Facultatif: Automatisez la configuration à l'aide de Terraform:
- Créez un fichier de configuration Terraform (audit.tf):
resource "vault_audit" "syslog" { type = "syslog" description = "Syslog audit logs" options = { tag = "vault" facility = "LOCAL0" } } resource "vault_audit" "socket" { type = "socket" description = "Remote syslog socket" options = { address = "udp://<syslog-server-ip>:514" socket_type = "udp" tag = "vault" } }
- Appliquez la configuration :
terraform init terraform apply
Journaux de dépannage non reçus
Vérifiez que le serveur syslog est accessible:
ping <syslog-server-ip>
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
auth.accessor |
security_result.about.resource.attribute.labels.value |
La valeur de auth.accessor du journal brut est mappée sur un libellé avec la clé "auth_accessor" sous security_result.about.resource.attribute.labels dans l'UDM. |
auth.client_token |
security_result.about.resource.attribute.labels.value |
La valeur de auth.client_token du journal brut est mappée sur un libellé avec la clé "auth_client_token" sous security_result.about.resource.attribute.labels dans l'UDM. |
auth.display_name |
target.user.user_display_name |
La valeur de auth.display_name du journal brut est mappée sur target.user.user_display_name dans l'UDM. |
auth.entity_id |
target.resource.product_object_id |
La valeur de auth.entity_id du journal brut est mappée sur target.resource.product_object_id dans l'UDM. |
auth.metadata.account_id |
target.user.userid |
La valeur de auth.metadata.account_id du journal brut est mappée sur target.user.userid dans l'UDM. |
auth.metadata.auth_type |
security_result.about.resource.attribute.labels.value |
La valeur de auth.metadata.auth_type du journal brut est mappée sur un libellé avec la clé "auth_type" sous security_result.about.resource.attribute.labels dans l'UDM. |
auth.metadata.role_id |
security_result.about.resource.attribute.labels.value |
La valeur de auth.metadata.role_id du journal brut est mappée sur un libellé avec la clé "role_id" sous security_result.about.resource.attribute.labels dans l'UDM. |
auth.metadata.role_name |
target.resource.attribute.roles.name |
La valeur de auth.metadata.role_name du journal brut est mappée sur target.resource.attribute.roles.name dans l'UDM. |
auth.token_ttl |
security_result.about.resource.attribute.labels.value |
La valeur de auth.token_ttl du journal brut est mappée sur un libellé avec la clé "auth_token_ttl" sous security_result.about.resource.attribute.labels dans l'UDM. |
auth.token_type |
security_result.about.resource.attribute.labels.value |
La valeur de auth.token_type du journal brut est mappée sur un libellé avec la clé "auth_token_type" sous security_result.about.resource.attribute.labels dans l'UDM. |
cluster |
observer.resource.name |
La valeur de cluster du journal brut est mappée sur observer.resource.name dans l'UDM. |
error |
security_result.description |
La valeur de error du journal brut est mappée sur security_result.description dans l'UDM. |
headers.accept |
security_result.about.resource.attribute.labels.value |
La valeur de headers.accept du journal brut est mappée sur un libellé avec la clé "httpHeaders accept" sous security_result.about.resource.attribute.labels dans l'UDM. |
headers.httpHeaders.cache-control |
additional.fields.value.string_value |
La valeur de headers.httpHeaders.cache-control du journal brut est mappée sur un champ avec la clé "httpHeaders cache control" sous additional.fields dans l'UDM. |
headers.snyk-acting-org-public-id |
principal.resource.attribute.labels.value |
La valeur de headers.snyk-acting-org-public-id du journal brut est mappée sur un libellé avec la clé "snyk-acting-org-public-id" sous principal.resource.attribute.labels dans l'UDM. |
headers.snyk-flow-name |
principal.resource.attribute.labels.value |
La valeur de headers.snyk-flow-name du journal brut est mappée sur un libellé avec la clé "snyk-flow-name" sous principal.resource.attribute.labels dans l'UDM. |
headers.snyk-request-id |
principal.resource.attribute.labels.value |
La valeur de headers.snyk-request-id du journal brut est mappée sur un libellé avec la clé "snyk-request-id" sous principal.resource.attribute.labels dans l'UDM. |
headers.user-agent |
network.http.parsed_user_agent |
La valeur headers.user-agent du journal brut est analysée en tant qu'user-agent et mappée sur network.http.parsed_user_agent dans l'UDM. |
headers.x-forwarded-host |
principal.hostname |
La valeur de headers.x-forwarded-host du journal brut est mappée sur principal.hostname dans l'UDM. |
headers.x-forwarded-port |
principal.port |
La valeur de headers.x-forwarded-port du journal brut est mappée sur principal.port dans l'UDM. |
headers.x-real-ip |
principal.ip |
La valeur de headers.x-real-ip du journal brut est mappée sur principal.ip dans l'UDM. |
hostname |
observer.hostname |
La valeur de hostname du journal brut est mappée sur observer.hostname dans l'UDM. |
httpHeaders.cf-cache-status |
target.resource.attribute.labels.value |
La valeur de httpHeaders.cf-cache-status du journal brut est mappée sur un libellé avec la clé "cf-cache-status" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.cf-ray |
target.resource.attribute.labels.value |
La valeur de httpHeaders.cf-ray du journal brut est mappée sur un libellé avec la clé "cf-ray" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.content-length |
security_result.about.resource.attribute.labels.value |
La valeur de httpHeaders.content-length du journal brut est mappée sur un libellé avec la clé "httpHeaders Content-Length" sous security_result.about.resource.attribute.labels dans l'UDM. |
httpHeaders.content-type |
security_result.about.resource.attribute.labels.value |
La valeur de httpHeaders.content-type du journal brut est mappée sur un libellé avec la clé "httpHeaders Content-Type" sous security_result.about.resource.attribute.labels dans l'UDM. |
httpHeaders.gitlab-lb |
target.resource.attribute.labels.value |
La valeur de httpHeaders.gitlab-lb du journal brut est mappée sur un libellé avec la clé "gitlab-lb" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.gitlab-sv |
target.resource.attribute.labels.value |
La valeur de httpHeaders.gitlab-sv du journal brut est mappée sur un libellé avec la clé "gitlab-sv" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.ratelimit-limit |
target.resource.attribute.labels.value |
La valeur de httpHeaders.ratelimit-limit du journal brut est mappée sur un libellé avec la clé "ratelimit-limit" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.ratelimit-observed |
target.resource.attribute.labels.value |
La valeur de httpHeaders.ratelimit-observed du journal brut est mappée sur un libellé avec la clé "ratelimit-observed" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.ratelimit-remaining |
target.resource.attribute.labels.value |
La valeur de httpHeaders.ratelimit-remaining du journal brut est mappée sur un libellé avec la clé "ratelimit-remaining" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.ratelimit-reset |
target.resource.attribute.labels.value |
La valeur de httpHeaders.ratelimit-reset du journal brut est mappée sur un libellé avec la clé "ratelimit-reset" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.ratelimit-resettime |
target.resource.attribute.labels.value |
La valeur de httpHeaders.ratelimit-resettime du journal brut est mappée sur un libellé avec la clé "ratelimit-resettime" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.referrer-policy |
target.resource.attribute.labels.value |
La valeur de httpHeaders.referrer-policy du journal brut est mappée sur un libellé avec la clé "referrer-policy" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.server |
target.resource.attribute.labels.value |
La valeur de httpHeaders.server du journal brut est mappée sur un libellé avec la clé "server" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.x-content-type-options |
target.resource.attribute.labels.value |
La valeur de httpHeaders.x-content-type-options du journal brut est mappée sur un libellé avec la clé "x-content-type-options" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.x-frame-options |
target.resource.attribute.labels.value |
La valeur de httpHeaders.x-frame-options du journal brut est mappée sur un libellé avec la clé "x-frame-options" sous target.resource.attribute.labels dans l'UDM. |
httpHeaders.x-request-id |
target.resource.attribute.labels.value |
La valeur de httpHeaders.x-request-id du journal brut est mappée sur un libellé avec la clé "x-request-id" sous target.resource.attribute.labels dans l'UDM. |
httpStatus |
network.http.response_code |
La valeur de httpStatus du journal brut est mappée sur network.http.response_code dans l'UDM. |
httpUrl |
target.url |
La valeur de httpUrl du journal brut est mappée sur target.url dans l'UDM. |
insertId |
metadata.product_log_id |
La valeur de insertId du journal brut est mappée sur metadata.product_log_id dans l'UDM. |
job |
additional.fields.value.string_value |
La valeur de job du journal brut est mappée sur un champ avec la clé "job id" sous additional.fields dans l'UDM. |
job_status |
additional.fields.value.string_value |
La valeur de job_status du journal brut est mappée sur un champ avec la clé "job_status" sous additional.fields dans l'UDM. |
labels.compute.googleapis.com/resource_name |
target.resource.name |
La valeur de labels.compute.googleapis.com/resource_name du journal brut est mappée sur target.resource.name dans l'UDM. |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/app_kubernetes_io/instance du journal brut est mappée sur un libellé avec la clé "Instance d'IO Kubernetes" sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/app_kubernetes_io/name du journal brut est mappée sur un libellé avec la clé "Nom de l'instance d'IO Kubernetes" sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/component |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/component du journal brut est mappée sur un libellé avec la clé "composant" sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/controller-revision-hash du journal brut est mappée sur un libellé avec la clé "Controller Revision Hash" (Hachage de la révision du contrôleur) sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/helm_sh/chart du journal brut est mappée sur un libellé avec la clé "Kubernetes IO Instance Manager SH" sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/vault-active |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/vault-active du journal brut est mappée sur un libellé avec la clé "Vault active" sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/vault-initialized |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/vault-initialized du journal brut est mappée sur un libellé avec la clé "Vault initialized" (Clé d'accès initialisée) sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/vault-perf-standby |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/vault-perf-standby du journal brut est mappée sur un libellé avec la clé "vault perf standby" sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/vault-sealed |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/vault-sealed du journal brut est mappée sur un libellé avec la clé "Vault sealed" (Coffre scellé) sous target.resource.attribute.labels dans l'UDM. |
labels.k8s-pod/vault-version |
target.resource.attribute.labels.value |
La valeur de labels.k8s-pod/vault-version du journal brut est mappée sur un libellé avec la clé "Version du vault" sous target.resource.attribute.labels dans l'UDM. |
maskedToken |
security_result.about.resource.attribute.labels.value |
La valeur de maskedToken du journal brut est mappée sur un libellé avec la clé "maskedToken" sous security_result.about.resource.attribute.labels dans l'UDM. |
method |
network.http.method , operation |
La valeur de method du journal brut est mappée sur operation . Si operation n'est pas vide, network.application_protocol est défini sur "HTTP". En fonction de la valeur de operation , network.http.method est dérivé. |
msg |
metadata.description |
La valeur de msg du journal brut est mappée sur metadata.description dans l'UDM. |
pid |
target.process.pid |
La valeur de pid du journal brut est mappée sur target.process.pid dans l'UDM. |
request.client_token |
target.resource.attribute.labels.value |
La valeur de request.client_token du journal brut est mappée sur un libellé avec la clé "request_client_token" sous target.resource.attribute.labels dans l'UDM. |
request.client_token_accessor |
target.resource.attribute.labels.value |
La valeur de request.client_token_accessor du journal brut est mappée sur un libellé avec la clé "request_client_token_accessor" sous target.resource.attribute.labels dans l'UDM. |
request.data.role_id |
target.resource.attribute.labels.value |
La valeur de request.data.role_id du journal brut est mappée sur un libellé avec la clé "request_data_role_id" sous target.resource.attribute.labels dans l'UDM. |
request.data.secret_id |
target.resource.attribute.labels.value |
La valeur de request.data.secret_id du journal brut est mappée sur un libellé avec la clé "request_data_secret_id" sous target.resource.attribute.labels dans l'UDM. |
request.id |
network.session_id |
La valeur de request.id du journal brut est mappée sur network.session_id dans l'UDM. |
request.mount_accessor |
target.resource.attribute.labels.value |
La valeur de request.mount_accessor du journal brut est mappée sur un libellé avec la clé "request_mount_accessor" sous target.resource.attribute.labels dans l'UDM. |
request.mount_type |
target.resource.attribute.labels.value |
La valeur de request.mount_type du journal brut est mappée sur un libellé avec la clé "request_mount_type" sous target.resource.attribute.labels dans l'UDM. |
request.namespace.id |
target.namespace |
La valeur de request.namespace.id du journal brut est mappée sur target.namespace dans l'UDM. |
request.operation |
target.resource.attribute.labels.value , network.http.method , operation |
La valeur de request.operation du journal brut est mappée sur operation . Si operation n'est pas vide, network.application_protocol est défini sur "HTTP". En fonction de la valeur de operation , network.http.method est dérivé. La valeur de request.operation est également mappée sur un libellé avec la clé "capabilities" sous target.resource.attribute.labels dans l'UDM. |
request.path |
target.url |
La valeur de request.path du journal brut est mappée sur target.url dans l'UDM. |
request.remote_address |
principal.ip |
La valeur de request.remote_address du journal brut est mappée sur principal.ip dans l'UDM. |
request.remote_port |
principal.port |
La valeur de request.remote_port du journal brut est mappée sur principal.port dans l'UDM. |
request.wrap_ttl |
target.resource.attribute.labels.value |
La valeur de request.wrap_ttl du journal brut est mappée sur un libellé avec la clé "request_wrap_ttl" sous target.resource.attribute.labels dans l'UDM. |
resource.labels.container_name |
additional.fields.value.string_value |
La valeur de resource.labels.container_name du journal brut est mappée sur un champ avec la clé "nom du conteneur" sous additional.fields dans l'UDM. |
resource.labels.location |
target.location.name |
La valeur de resource.labels.location du journal brut est mappée sur target.location.name dans l'UDM. |
resource.labels.namespace_name |
target.namespace |
La valeur de resource.labels.namespace_name du journal brut est mappée sur target.namespace dans l'UDM. |
resource.labels.pod_name |
additional.fields.value.string_value |
La valeur de resource.labels.pod_name du journal brut est mappée sur un champ avec la clé "pod_name" sous additional.fields dans l'UDM. |
resource.labels.project_id |
target.cloud.project.name |
La valeur de resource.labels.project_id du journal brut est mappée sur target.cloud.project.name dans l'UDM. |
response.data.num_uses |
target.resource.attribute.labels.value |
La valeur de response.data.num_uses du journal brut est mappée sur un libellé avec la clé "response_data_num_uses" sous target.resource.attribute.labels dans l'UDM. |
response.data.orphan |
target.resource.attribute.labels.value |
La valeur de response.data.orphan du journal brut est mappée sur un libellé avec la clé "response_data_orphan" sous target.resource.attribute.labels dans l'UDM. |
response.data.renewable |
target.resource.attribute.labels.value |
La valeur de response.data.renewable du journal brut est mappée sur un libellé avec la clé "response_data_renewable" sous target.resource.attribute.labels dans l'UDM. |
response.data.ttl |
target.resource.attribute.labels.value |
La valeur de response.data.ttl du journal brut est mappée sur une étiquette avec la clé "response_data_ttl" sous target.resource.attribute.labels dans l'UDM. |
response.wrap_info.accessor |
target.resource.attribute.labels.value |
La valeur de response.wrap_info.accessor du journal brut est mappée sur un libellé avec la clé "response_wrap_info_accessor" sous target.resource.attribute.labels dans l'UDM. |
response.wrap_info.token |
target.resource.attribute.labels.value |
La valeur de response.wrap_info.token du journal brut est mappée sur une étiquette avec la clé "response_wrap_info_token" sous target.resource.attribute.labels dans l'UDM. |
response.wrap_info.ttl |
target.resource.attribute.labels.value |
La valeur de response.wrap_info.ttl du journal brut est mappée sur une étiquette avec la clé "response_wrap_info_ttl" sous target.resource.attribute.labels dans l'UDM. |
response.wrap_info.wrapped_accessor |
target.resource.attribute.labels.value |
La valeur de response.wrap_info.wrapped_accessor du journal brut est mappée sur un libellé avec la clé "response_wrap_info_wrapped_accessor" sous target.resource.attribute.labels dans l'UDM. |
runner |
principal.user.userid |
La valeur de runner du journal brut est mappée sur principal.user.userid dans l'UDM. |
status |
network.http.response_code |
La valeur de status du journal brut est mappée sur network.http.response_code dans l'UDM. |
streamingID |
target.resource.attribute.labels.value |
La valeur de streamingID du journal brut est mappée sur un libellé avec la clé "streamingID" sous target.resource.attribute.labels dans l'UDM. |
time |
metadata.event_timestamp.seconds , metadata.event_timestamp.nanos |
La valeur de time du journal brut est analysée et utilisée pour renseigner le champ metadata.event_timestamp dans l'UDM. |
type |
metadata.product_event_type |
La valeur de type du journal brut est mappée sur metadata.product_event_type dans l'UDM. |
url |
principal.url |
La valeur de url du journal brut est mappée sur principal.url dans l'UDM. La valeur "MACHINE" est attribuée à extensions.auth.type dans l'UDM. La valeur "USER_LOGIN" est attribuée à metadata.event_type dans l'UDM. La valeur "HASHICORP" est attribuée à metadata.log_type dans l'UDM. La valeur "HASHICORP" est attribuée à metadata.product_name dans l'UDM. La valeur "HASHICORP" est attribuée à metadata.vendor_name dans l'UDM. La valeur "SERVICE_ACCOUNT" est attribuée à target.resource.attribute.roles.type dans l'UDM. |
Modifications
2023-10-26
- Ajout d'un modèle Grok pour gérer les journaux SYSLOG+JSON.
2023-09-22
- Modification de la mise en correspondance de "request.remote_port" de "target.port" à "principal.port".
- Modification de la mise en correspondance de "request.remote_address" de "target.ip" à "principal.ip".
- Mappage de "error" sur "security_result.description".
- "resource.labels.namespace_name" a été mappé sur "target.namespace".
- Mappage de "resource.labels.pod_name", "resource.labels.container_name" sur "additional.fields".
- "resource.labels.project_id" a été mappé sur "target.cloud.project.name".
- "resource.labels.location" a été mappé sur "target.location.name".
- Mappage de "insertId" sur "metadata.product_log_id".
- "labels.k8s-pod/app_kubernetes_io/instance", "labels.k8s-pod/app_kubernetes_io/name", "labels.k8s-pod/component", "labels.k8s-pod/helm_sh/chart", "labels.k8s-pod/controller-revision-hash", "labels.k8s-pod/vault-initialized", "labels.k8s-pod/vault-version", "labels.k8s-pod/vault-sealed", "labels.k8s-pod/vault-perf-standby" et "labels.k8s-pod/vault-active" mappés sur "target.resource.attribute.labels".
- Mappage de "labels.compute.googleapis.com/resource_name" sur "target.resource.name".
2023-04-26
- Ajout d'un modèle Grok pour gérer les journaux syslog.
- Mappage de "status" sur "network.http.response_code".
- Mappage de "runner" sur "principal.user.userid"
- Mappage de "job_id" et "job_status" sur "additional.fields".
24/03/2023
- "host" a été mappé sur "observer.hostname".
- Mappage de "cluster" sur "observer.resource.name".
- Si le journal contient un cluster, "cluster" est mappé sur "observer.resource.resource_type".
- Ajout d'un bloc JSON pour récupérer les données du champ "_raw".
- "httpStatus" mappé sur "network.http.response_code".
- "httpUrl" mappé sur "target.url".
- "pid" mappé sur "target.process.pid".
- "msg" mappé sur "metadata.description".
- "url" mappé sur "principal.url".
- "hostname" mappé sur "observer.hostname".
- "streamingID", "requestId", "httpHeaders.cf-cache-status", "httpHeaders.cf-ray", "httpHeaders.gitlab-lb", "httpHeaders.gitlab-sv", "httpHeaders.x-request-id", "httpHeaders.x-content-type-options", "httpHeaders.x-frame-options", "httpHeaders.ratelimit-limit", "httpHeaders.ratelimit-observed", "httpHeaders.ratelimit-remaining", "httpHeaders.ratelimit-reset", "httpHeaders.ratelimit-resettime", "httpHeaders.server", "httpHeaders.referrer-policy" mappés sur "target.resource.attribute.labels".
- "method" mappé sur "network.application_protocol".
- "headers.user-agent" mappé sur "network.http.parsed_user_agent".
- "httpHeaders.cache-control" mappé sur "additional.fields".
- "httpHeaders.content-type", "httpHeaders.content-length", "maskedToken", "headers.accept" mappés sur "security_result.about.resource.attribute.labels".
- "headers.x-real-ip" mappé sur "principal.ip".
- "headers.x-forwarded-host" mappé sur "principal.hostname".
- "headers.x-forwarded-port" mappé sur "principal.port".
- "headers.snyk-acting-org-public-id", "headers.snyk-flow-name", "headers.snyk-request-id" mappés sur "principal.resource.attribute.labels".
2023-02-09
- Analyseur nouvellement créé.