mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-30 12:31:16 +00:00
Extend the existing auditing with auditing for the TPM emulator. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
376 lines
14 KiB
XML
376 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<body>
|
|
<h1>Audit log</h1>
|
|
|
|
<ul id="toc"></ul>
|
|
|
|
<h2><a id="intro">Introduction</a></h2>
|
|
|
|
<p>
|
|
A number of the libvirt virtualization drivers (QEMU/KVM and LXC) include
|
|
support for logging details of important operations to the host's audit
|
|
subsystem. This provides administrators / auditors with a canonical historical
|
|
record of changes to virtual machines' / containers' lifecycle states and
|
|
their configuration. On hosts which are running the Linux audit daemon,
|
|
the logs will usually end up in <code>/var/log/audit/audit.log</code>
|
|
</p>
|
|
|
|
<h2><a id="config">Configuration</a></h2>
|
|
|
|
<p>
|
|
The libvirt audit integration is enabled by default on any host which has
|
|
the Linux audit subsystem active, and disabled otherwise. It is possible
|
|
to alter this behaviour in the <code>/etc/libvirt/libvirtd.conf</code>
|
|
configuration file, via the <code>audit_level</code> parameter
|
|
</p>
|
|
|
|
<ul>
|
|
<li><code>audit_level=0</code> - libvirt auditing is disabled regardless
|
|
of host audit subsystem enablement.</li>
|
|
<li><code>audit_level=1</code> - libvirt auditing is enabled if the host
|
|
audit subsystem is enabled, otherwise it is disabled. This is the
|
|
default behaviour.</li>
|
|
<li><code>audit_level=2</code> - libvirt auditing is enabled regardless
|
|
of host audit subsystem enablement. If the host audit subsystem is
|
|
disabled, then libvirtd will refuse to complete startup and exit with
|
|
an error.</li>
|
|
</ul>
|
|
|
|
<p>
|
|
In addition to have formal messages sent to the audit subsystem it is
|
|
possible to tell libvirt to inject messages into its own logging
|
|
layer. This will result in messages ending up in the systemd journal
|
|
or <code>/var/log/libvirt/libivrtd.log</code> on non-systemd hosts.
|
|
This is disabled by default, but can be requested by setting the
|
|
<code>audit_logging=1</code> configuration parameter in the same file
|
|
mentioned above.
|
|
</p>
|
|
|
|
<h2><a id="types">Message types</a></h2>
|
|
|
|
<p>
|
|
Libvirt defines three core audit message types each of which will
|
|
be described below. There are a number of common fields that will
|
|
be reported for all message types.
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>pid</code></dt>
|
|
<dd>Process ID of the libvirtd daemon generating the audit record.</dd>
|
|
<dt><code>uid</code></dt>
|
|
<dd>User ID of the libvirtd daemon process generating the audit record.</dd>
|
|
<dt><code>subj</code></dt>
|
|
<dd>Security context of the libvirtd daemon process generating the audit record.</dd>
|
|
<dt><code>msg</code></dt>
|
|
<dd>String containing a list of key=value pairs specific to the type of audit record being reported.</dd>
|
|
</dl>
|
|
|
|
<p>
|
|
Some fields in the <code>msg</code> string are common to audit records
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>virt</code></dt>
|
|
<dd>Type of virtualization driver used. One of <code>qemu</code> or <code>lxc</code></dd>
|
|
<dt><code>vm</code></dt>
|
|
<dd>Host driver unique name of the guest</dd>
|
|
<dt><code>uuid</code></dt>
|
|
<dd>Globally unique identifier for the guest</dd>
|
|
<dt><code>exe</code></dt>
|
|
<dd>Path of the libvirtd daemon</dd>
|
|
<dt><code>hostname</code></dt>
|
|
<dd>Currently unused</dd>
|
|
<dt><code>addr</code></dt>
|
|
<dd>Currently unused</dd>
|
|
<dt><code>terminal</code></dt>
|
|
<dd>Currently unused</dd>
|
|
<dt><code>res</code></dt>
|
|
<dd>Result of the action, either <code>success</code> or <code>failed</code></dd>
|
|
</dl>
|
|
|
|
<h3><a id="typecontrol">VIRT_CONTROL</a></h3>
|
|
|
|
<p>
|
|
Reports change in the lifecycle state of a virtual machine. The <code>msg</code>
|
|
field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>op</code></dt>
|
|
<dd>Type of operation performed. One of <code>start</code>, <code>stop</code> or <code>init</code></dd>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the operation to happen</dd>
|
|
<dt><code>vm-pid</code></dt>
|
|
<dd>ID of the primary/leading process associated with the guest</dd>
|
|
<dt><code>init-pid</code></dt>
|
|
<dd>ID of the <code>init</code> process in a container. Only if <code>op=init</code> and <code>virt=lxc</code></dd>
|
|
<dt><code>pid-ns</code></dt>
|
|
<dd>Namespace ID of the <code>init</code> process in a container. Only if <code>op=init</code> and <code>virt=lxc</code></dd>
|
|
</dl>
|
|
|
|
<h3><a id="typemachine">VIRT_MACHINE_ID</a></h3>
|
|
|
|
<p>
|
|
Reports the association of a security context with a guest. The <code>msg</code>
|
|
field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>model</code></dt>
|
|
<dd>The security driver type. One of <code>selinux</code> or <code>apparmor</code></dd>
|
|
<dt><code>vm-ctx</code></dt>
|
|
<dd>Security context for the guest process</dd>
|
|
<dt><code>img-ctx</code></dt>
|
|
<dd>Security context for the guest disk images and other assigned host resources</dd>
|
|
</dl>
|
|
|
|
<h3><a id="typeresource">VIRT_RESOURCE</a></h3>
|
|
|
|
<p>
|
|
Reports the usage of a host resource by a guest. The fields include will
|
|
vary according to the type of device being reported. When the guest is
|
|
initially booted records will be generated for all assigned resources.
|
|
If any changes are made to the running guest configuration, for example
|
|
hotplug devices, or adjust resources allocation, further records will
|
|
be generated.
|
|
</p>
|
|
|
|
<h4><a id="typeresourcevcpu">Virtual CPU</a></h4>
|
|
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>vcpu</code></dd>
|
|
<dt><code>old-vcpu</code></dt>
|
|
<dd>Original vCPU count, or 0</dd>
|
|
<dt><code>new-vcpu</code></dt>
|
|
<dd>Updated vCPU count</dd>
|
|
</dl>
|
|
|
|
|
|
<h4><a id="typeresourcemem">Memory</a></h4>
|
|
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>mem</code></dd>
|
|
<dt><code>old-mem</code></dt>
|
|
<dd>Original memory size in bytes, or 0</dd>
|
|
<dt><code>new-mem</code></dt>
|
|
<dd>Updated memory size in bytes</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcedisk">Disk</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>disk</code></dd>
|
|
<dt><code>old-disk</code></dt>
|
|
<dd>Original host file or device path acting as the disk backing file</dd>
|
|
<dt><code>new-disk</code></dt>
|
|
<dd>Updated host file or device path acting as the disk backing file</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcenic">Network interface</a></h4>
|
|
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>net</code></dd>
|
|
<dt><code>old-net</code></dt>
|
|
<dd>Original MAC address of the guest network interface</dd>
|
|
<dt><code>new-net</code></dt>
|
|
<dd>Updated MAC address of the guest network interface</dd>
|
|
</dl>
|
|
|
|
<p>
|
|
If there is a host network interface associated with the guest NIC then
|
|
further records may be generated
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>net</code></dd>
|
|
<dt><code>net</code></dt>
|
|
<dd>MAC address of the host network interface</dd>
|
|
<dt><code>rdev</code></dt>
|
|
<dd>Name of the host network interface</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcefs">Filesystem</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>fs</code></dd>
|
|
<dt><code>old-fs</code></dt>
|
|
<dd>Original host directory, file or device path backing the filesystem </dd>
|
|
<dt><code>new-fs</code></dt>
|
|
<dd>Updated host directory, file or device path backing the filesystem</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcehost">Host device</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>hostdev</code> or <code>dev</code></dd>
|
|
<dt><code>dev</code></dt>
|
|
<dd>The unique bus identifier of the USB, PCI or SCSI device, if <code>resrc=dev</code></dd>
|
|
<dt><code>disk</code></dt>
|
|
<dd>The path of the block device assigned to the guest, if <code>resrc=hostdev</code></dd>
|
|
<dt><code>chardev</code></dt>
|
|
<dd>The path of the character device assigned to the guest, if <code>resrc=hostdev</code></dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcetpm">TPM</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>tpm</code> or <code>tpm-emulator</code></dd>
|
|
<dt><code>device</code></dt>
|
|
<dd>The path of the host TPM device assigned to the guest</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcerng">RNG</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>rng</code></dd>
|
|
<dt><code>old-rng</code></dt>
|
|
<dd>Original path of the host entropy source for the RNG</dd>
|
|
<dt><code>new-rng</code></dt>
|
|
<dd>Updated path of the host entropy source for the RNG</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcechardev">console/serial/parallel/channel</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>chardev</code></dd>
|
|
<dt><code>old-chardev</code></dt>
|
|
<dd>Original path of the backing character device for given emulated device</dd>
|
|
<dt><code>new-chardev</code></dt>
|
|
<dd>Updated path of the backing character device for given emulated device</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcesmartcard">smartcard</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>smartcard</code></dd>
|
|
<dt><code>old-smartcard</code></dt>
|
|
<dd>Original path of the backing character device, certificate store or
|
|
"nss-smartcard-device" for host smartcard passthrough.
|
|
</dd>
|
|
<dt><code>new-smartcard</code></dt>
|
|
<dd>Updated path of the backing character device, certificate store or
|
|
"nss-smartcard-device" for host smartcard passthrough.
|
|
</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourceredir">Redirected device</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>redir</code></dd>
|
|
<dt><code>bus</code></dt>
|
|
<dd>The bus type, only <code>usb</code> allowed</dd>
|
|
<dt><code>device</code></dt>
|
|
<dd>The device type, only <code>USB redir</code> allowed</dd>
|
|
</dl>
|
|
|
|
<h4><a id="typeresourcecgroup">Control group</a></h4>
|
|
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>cgroup</code></dd>
|
|
<dt><code>cgroup</code></dt>
|
|
<dd>The name of the cgroup controller</dd>
|
|
</dl>
|
|
|
|
|
|
<h4><a id="typeresourceshmem">Shared memory</a></h4>
|
|
<p>
|
|
The <code>msg</code> field will include the following sub-fields
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><code>resrc</code></dt>
|
|
<dd>The type of resource assigned. Set to <code>shmem</code></dd>
|
|
<dt><code>reason</code></dt>
|
|
<dd>The reason which caused the resource to be assigned to happen</dd>
|
|
<dt><code>size</code></dt>
|
|
<dd>The size of the shared memory region</dd>
|
|
<dt><code>shmem</code></dt>
|
|
<dd>Name of the shared memory region</dd>
|
|
<dt><code>source</code></dt>
|
|
<dd>Path of the backing character device for given emulated device</dd>
|
|
</dl>
|
|
|
|
</body>
|
|
</html>
|