2015-04-20 05:59:39 +00:00
---
2020-01-18 00:18:09 +00:00
layout: docs
page_title: Audit Devices
description: Audit devices are mountable devices that log requests and responses in Vault.
2015-04-20 05:59:39 +00:00
---
2017-09-08 02:38:47 +00:00
# Audit Devices
2015-04-20 05:59:39 +00:00
2018-04-23 14:49:32 +00:00
Audit devices are the components in Vault that keep a detailed log of all
requests and response to Vault. Because every operation with Vault is an API
request/response, the audit log contains _every authenticated_ interaction with
Vault, including errors.
2015-04-20 05:59:39 +00:00
2017-09-08 02:38:47 +00:00
Multiple audit devices can be enabled and Vault will send the audit logs to
2020-09-28 23:04:45 +00:00
all of them. This allows you to not only have a redundant copy, but also a second copy
2017-09-08 02:38:47 +00:00
in case the first is tampered with.
## Format
Each line in the audit log is a JSON object. The `type` field specifies what
type of object it is. Currently, only two types exist: `request` and `response`.
The line contains all of the information for any given request and response. By
default, all the sensitive information is first hashed before logging in the
audit logs.
2015-04-20 05:59:39 +00:00
## Sensitive Information
The audit logs contain the full request and response objects for every
2016-07-25 01:23:12 +00:00
interaction with Vault. The request and response can be matched utilizing a
2019-04-11 20:38:43 +00:00
unique identifier assigned to each request.
2021-09-28 18:44:46 +00:00
Most strings contained within requests and responses are hashed with a salt using HMAC-SHA256. The purpose of the hash is so that secrets aren't in plaintext within your audit logs. However, you're still able to check the value of secrets by generating HMACs yourself; this can be done with the audit device's hash function and salt by using the `/sys/audit-hash` API endpoint (see the documentation for more details).
2019-04-11 20:38:43 +00:00
Note that currently only strings coming from JSON or being returned in JSON are
HMAC'd. Other data types, like integers, booleans, and so on, are passed
through in plaintext.
2015-04-20 05:59:39 +00:00
2021-09-28 18:44:46 +00:00
While most strings are hashed, Vault does make some exceptions, such as auth and secrets, and users can enable additional exceptions using the [secrets enable](/docs/commands/secrets/enable) command, and then tune it afterward.
**see also**:
[secrets tune](/docs/commands/secrets/tune)
[auth enable](/docs/commands/auth/enable)
[auth tune](/docs/commands/auth/tune)
2017-09-08 02:38:47 +00:00
## Enabling/Disabling Audit Devices
2015-04-20 05:59:39 +00:00
When a Vault server is first initialized, no auditing is enabled. Audit
2018-01-15 20:19:28 +00:00
devices must be enabled by a root user using `vault audit enable`.
2015-04-20 05:59:39 +00:00
2017-09-08 02:38:47 +00:00
When enabling an audit device, options can be passed to it to configure it.
For example, the command below enables the file audit device:
2015-04-20 05:59:39 +00:00
2020-05-21 17:18:17 +00:00
```shell-session
2017-09-08 02:38:47 +00:00
$ vault audit enable file file_path=/var/log/vault_audit.log
2015-04-20 05:59:39 +00:00
```
2017-01-19 02:43:29 +00:00
In the command above, we passed the "file_path" parameter to specify the path
2017-09-08 02:38:47 +00:00
where the audit log will be written to. Each audit device has its own
2015-04-20 05:59:39 +00:00
set of parameters. See the documentation to the left for more details.
2021-09-28 18:44:46 +00:00
~> Note: Audit device configuration is replicated to all nodes within a
cluster by default, and to performance/DR secondaries for Vault Enterprise clusters.
Before enabling an audit device, ensure that all nodes within the cluster(s)
will be able to successfully log to the audit device to avoid Vault being
blocked from serving requests.
An audit device can be limited to only within the node's cluster with the [`local`](api/system/audit#local) parameter.
2021-09-01 20:53:01 +00:00
2017-09-08 02:38:47 +00:00
When an audit device is disabled, it will stop receiving logs immediately.
2015-04-20 05:59:39 +00:00
The existing logs that it did store are untouched.
2017-09-08 02:38:47 +00:00
## Blocked Audit Devices
2015-04-20 05:59:39 +00:00
2017-09-08 02:38:47 +00:00
If there are any audit devices enabled, Vault requires that at least
2015-04-20 05:59:39 +00:00
one be able to persist the log before completing a Vault request.
2017-09-08 02:38:47 +00:00
!> If you have only one audit device enabled, and it is blocking (network
block, etc.), then Vault will be _unresponsive_. Vault **will not** complete
any requests until the audit device can write.
2015-04-20 05:59:39 +00:00
2017-09-08 02:38:47 +00:00
If you have more than one audit device, then Vault will complete the request
as long as one audit device persists the log.
2015-04-20 05:59:39 +00:00
2017-09-08 02:38:47 +00:00
Vault will not respond to requests if audit devices are blocked because
2015-04-20 05:59:39 +00:00
audit logs are critically important and ignoring blocked requests opens
2017-09-08 02:38:47 +00:00
an avenue for attack. Be absolutely certain that your audit devices cannot
2015-04-20 05:59:39 +00:00
block.
2016-03-12 02:14:39 +00:00
## API
2017-09-08 02:38:47 +00:00
Audit devices also have a full HTTP API. Please see the [Audit device API
2020-01-22 20:05:41 +00:00
docs](/api/system/audit) for more details.