<a id="exp-security"></a>

# Security

MicroCloud’s security model is based on explicit trust and secure-by-default components. Each MicroCloud deployment consists of independently secured components ([LXD](#exp-security-lxd), [MicroCeph](#exp-security-microceph), and [MicroOVN](#exp-security-microovn)), each enforcing authentication, encryption, and access control within its own domain.

MicroCloud [further enforces security](#exp-security-microcloud) through the use of mutual TLS (mTLS), certificate-based identities, and an explicit trust establishment mechanism. Its deployment as a collection of signed, confined snaps on Ubuntu further strengthens its overall security posture.

<a id="exp-security-ubuntu"></a>

## Ubuntu security

MicroCloud runs on Ubuntu and benefits from all [Ubuntu platform security measures](https://ubuntu.com/security), including kernel hardening, signed packages, and continuous security maintenance. For production environments, we recommend using a recent Ubuntu LTS release to ensure long-term support and predictable security updates.

Ubuntu LTS releases subscribed to Ubuntu Pro can use the [Ubuntu Security Guide (USG)](https://documentation.ubuntu.com/security/compliance/usg/) for CIS hardening. Refer to the LXD documentation on [Ubuntu CIS hardening](https://canonical.com/microcloud/docs/default/lxd/howto/security_harden/#howto-security-harden-cis) for related details about auditing LXD hosts with USG.

<a id="exp-security-snaps"></a>

## Snaps and supported versions

The MicroCloud team maintains both Long Term Support (LTS) and feature releases. See [Releases and snaps](https://canonical.com/microcloud/docs/default/reference/releases-snaps/index.html.md#ref-releases-snaps) and our [Release notes](https://canonical.com/microcloud/docs/default/reference/release-notes/index.html.md#ref-release-notes) for details about the currently supported releases.

MicroCloud and its components are distributed as [snaps](https://snapcraft.io/docs), which enhances security by providing a confined environment with a streamlined update mechanism. Both LTS and feature channels receive regular security updates through Canonical’s official infrastructure.

All snaps are digitally signed using [assertions](https://snapcraft.io/docs/explanation/security/assertions/#explanation-security-assertions) to guarantee authenticity and integrity.

<a id="exp-security-reporting"></a>

## Security reporting and disclosure

MicroCloud adheres to the [Ubuntu disclosure policy](https://ubuntu.com/security/disclosure-policy). Report potential security issues privately through GitHub by [filing a security advisory](https://github.com/canonical/microcloud/security/advisories/new). Please include a clear description of the issue, affected MicroCloud versions, reproduction steps, and any known mitigation strategies. Refer to the [MicroCloud security policy](https://github.com/canonical/microcloud/blob/main/SECURITY.md) for details.

<a id="exp-security-microcloud"></a>

## MicroCloud

### Cryptography

MicroCloud manages cluster membership and encrypted communication through mTLS and certificate-based identities. When a machine joins a cluster, it verifies the cluster’s certificate fingerprint and receives the complete set of member certificates, establishing a consistent trust store.

During the join process, MicroCloud uses an **explicit trust establishment mechanism** designed to prevent secret leakage and mitigate <spellexception>man-in-the-middle</spellexception> attacks. This mechanism uses a Hash-Based Message Authentication Code (HMAC) to sign the messages exchanged between the machine that initiates the join process and the joining peers. The shared secret used for joining is never transmitted over the network. The join process also enforces rate limits and session timeouts to reduce the risk of replay and brute-force attacks. For further information, refer to the [public specification](https://discourse.ubuntu.com/t/explicit-trust-establishment-mechanism-for-microcloud/44261).

### Logging

MicroCloud creates logs through systemd. These logs can be accessed with `sudo snap logs microcloud`.

<a id="exp-security-lxd"></a>

## LXD

For details on LXD’s security architecture and operational guidance, see the [LXD security overview](https://canonical.com/microcloud/docs/default/lxd/explanation/security/#exp-security) and the [LXD hardening guide](https://canonical.com/microcloud/docs/default/lxd/howto/security_harden/#howto-security-harden).

<a id="exp-security-microceph"></a>

## MicroCeph

The [MicroCeph security documentation](https://canonical.com/microcloud/docs/default/microceph/explanation/security/security-overview/) provides information on encryption, authentication, best practices for secure deployment and operation, and more.

<a id="exp-security-microovn"></a>

## MicroOVN

MicroOVN secures its network endpoints using the TLS protocol (version 1.2 or higher), along with P-384 elliptic curve keys. For details, refer to the MicroOVN documentation on [cryptography](https://canonical.com/microcloud/docs/default/microovn/reference/cryptography/), [working with TLS](https://canonical.com/microcloud/docs/default/microovn/how-to/tls/), and the [MicroOVN security process](https://canonical.com/microcloud/docs/default/microovn/reference/security/).
