From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> Adds a new page to the website "Deployment" section describing what data is sent to the audit logs and how to configure libvirtd audit settings. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- docs/auditlog.html.in | 321 ++++++++++++++++++++++++++++++++++++++++++++++++++ docs/sitemap.html.in | 4 + 2 files changed, 325 insertions(+) create mode 100644 docs/auditlog.html.in diff --git a/docs/auditlog.html.in b/docs/auditlog.html.in new file mode 100644 index 0000000..c827ab9 --- /dev/null +++ b/docs/auditlog.html.in @@ -0,0 +1,321 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <body> + <h1>Audit log</h1> + + <ul id="toc"></ul> + + <h2><a name="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 name="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 name="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>pid</dt> + <dd>Process ID of the libvirtd daemon generating the audit record.</dd> + <dt>uid</dt> + <dd>User ID of the libvirtd daemon process generating the audit record.</dd> + <dt>subj</dt> + <dd>Security context of the libvirtd daemon process generating the audit record.</dd> + <dt>msg</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>virt</dt> + <dd>Type of virtualization driver used. One of <code>qemu</code> or <code>lxc</code></dd> + <dt>vm</dt> + <dd>Host driver unique name of the guest</dd> + <dt>uuid</dt> + <dd>Globally unique identifier for the guest</dd> + <dt>exe</dt> + <dd>Path of the libvirtd daemon</dd> + <dt>hostname</dt> + <dd>Currently unused</dd> + <dt>addr</dt> + <dd>Currently unused</dd> + <dt>terminal</dt> + <dd>Currently unused</dd> + <dt>res</dt> + <dd>Result of the action, either <code>success</code> or <code>failed</code></dd> + </dl> + + <h3><a name="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>op</dt> + <dd>Type of operation performed. One of <code>start</code>, <code>stop</code> or <code>init</code></dd> + <dt>reason</dt> + <dd>The reason which caused the operation to happen</dd> + <dt>vm-pid</dt> + <dd>ID of the primary/leading process associated with the guest</dd> + <dt>init-pid</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>pid-ns</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 name="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>model</dt> + <dd>The security driver type. One of <code>selinux</code> or <code>apparmor</code></dd> + <dt>vm-ctx</dt> + <dd>Security context for the guest process</dd> + <dt>img-ctx</dt> + <dd>Security context for the guest disk images and other assigned host resources</dd> + </dl> + + <h3><a name="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 name="typeresourcevcpu">Virtual CPU</a></h4> + + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>vcpu</code></dd> + <dt>old-vcpu</dt> + <dd>Original vCPU count, or 0</dd> + <dt>new-vcpu</dt> + <dd>Updated vCPU count</dd> + </dl> + + + <h4><a name="typeresourcemem">Memory</a></h4> + + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>mem</code></dd> + <dt>old-mem</dt> + <dd>Original memory size in bytes, or 0</dd> + <dt>new-mem</dt> + <dd>Updated memory size in bytes</dd> + </dl> + + <h4><a name="typeresourcedisk">Disk</a></h4> + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>disk</code></dd> + <dt>old-disk</dt> + <dd>Original host file or device path acting as the disk backing file</dd> + <dt>new-disk</dt> + <dd>Updated host file or device path acting as the disk backing file</dd> + </dl> + + <h4><a name="typeresourcenic">Network interface</a></h4> + + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>net</code></dd> + <dt>old-net</dt> + <dd>Original MAC address of the guest network interface</dd> + <dt>new-net</dt> + <dd>Updated MAC address of the guest network interface</dd> + </dl> + + <p> + If there is a host network interace associated with the guest NIC then + further records may be generated + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>net</code></dd> + <dt>net</dt> + <dd>MAC address of the host network interface</dd> + <dt>rdev</dt> + <dd>Name of the host network interface</dd> + </dl> + + <h4><a name="typeresourcefs">Filesystem</a></h4> + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>fs</code></dd> + <dt>old-fs</dt> + <dd>Original host directory, file or device path backing the filesystem </dd> + <dt>new-fs</dt> + <dd>Updated host directory, file or device path backing the filesystem</dd> + </dl> + + <h4><a name="typeresourcehost">Host device</a></h4> + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>hostdev</code> or <code>dev</code></dd> + <dt>dev</dt> + <dd>The unique bus identifier of the USB, PCI or SCSI device, if <code>resrc=dev</code></dd> + <dt>disk</dt> + <dd>The path of the block device assigned to the guest, if <code>resrc=hostdev</code></dd> + <dt>chardev</dt> + <dd>The path of the charecter device assigned to the guest, if <code>resrc=hostdev</code></dd> + </dl> + + <h4><a name="typeresourcetpm">TPM</a></h4> + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>tpm</code></dd> + <dt>device</dt> + <dd>The path of the host TPM device assigned to the guest</dd> + </dl> + + <h4><a name="typeresourcerng">RNG</a></h4> + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>rng</code></dd> + <dt>old-rng</dt> + <dd>Original path of the host entropy source for the RNG</dd> + <dt>new-rng</dt> + <dd>Updated path of the host entropy source for the RNG</dd> + </dl> + + + <h4><a name="typeresourceredir">Redirected device</a></h4> + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>redir</code></dd> + <dt>bus</dt> + <dd>The bus type, only <code>usb</code> allowed</dd> + <dt>device</dt> + <dd>The device type, only <code>USB redir</code> allowed</dd> + </dl> + + <h4><a name="typeresourcecgroup">Control group</a></h4> + + <p> + The <code>msg</code> field will include the following sub-fields + </p> + + <dl> + <dt>reason</dt> + <dd>The reason which caused the resource to be assigned to happen</dd> + <dt>resrc</dt> + <dd>The type of resource assigned. Set to <code>cgroup</code></dd> + <dt>cgroup</dt> + <dd>The name of the cgroup controller</dd> + </dl> + + </body> +</html> diff --git a/docs/sitemap.html.in b/docs/sitemap.html.in index d821a9e..60daf15 100644 --- a/docs/sitemap.html.in +++ b/docs/sitemap.html.in @@ -91,6 +91,10 @@ <span>The library and the daemon logging support</span> </li> <li> + <a href="auditlog.html">Audit log</a> + <span>Audit trail logs for host operations</span> + </li> + <li> <a href="firewall.html">Firewall</a> <span>Firewall and network filter configuration</span> </li> -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list