Skip to content

System Protection and Maintenance

This document outlines the system protection and maintenance requirements and practices for Safespring Compute services.

1.1 Malware Protection

Information about malware protection measures for compute instances will be documented here.

1.2 Vulnerability Management

Security patches are installed automatically using the Ubuntu unattended upgrades feature. A high level inventory of software assets is maintained using our Netbox instance. Versions of major components are automatically registered and maintained using the ansible/roles/SBOM role.

The compute service team monitors various data sources for security alerts and advisories. These and more data sources are monitored:

Critical patches are applied within 7 days of release. Non-critical patches are applied within 30 days of release.

Generally critical patches are applied within 24-48 hours of release. An emergency maintenance window will be scheduled when needed.

1.3 Configuration Management

The internal compute service baseline defines the system architecture, automation design and forms the basis of our architecture design records(ADRs).

Based on this baseline the service automation is implemented using Ansible. All configuration changes are tracked and approved using a GitOps workflow, see #change management in Development and Operations.

Ansible roles and default settings are captured in the ansible/roles internal repository/path. Inventory data is stored in the seter/inventory internal repository/path.

Sensitive values and credentials are stored inside the seter repository, they are encrypted using a SOPS keyring. The SOPS keyring itself is protected by GPG keys from compute team members, the GPG keys are backed by yubikeys. When credentials for a component are missing, the component will fail at deployment. This ensures possible default credentials set in the roles are always overwritten.

Each site has it's own private SSH keypair and GPG key. Those are used for automating deployments and configuration changes. The site keys are rotated regularly.

1.4 Cryptography

Cryptographic controls for the Compute service are divided into the following categories: in transit, at rest and material used for authentication and key management.

1.4.1 Information in Transit

All communication between Openstack services, clients and APIs is encrypted using HAProxy and TLS, enforcing strong encryption algorithms and policies.

TLS version: The system enforces TLS 1.2 or later

Cipher suite: AES-GCM 128/256 / CHACHA20-POLY1305

The explicit configs are stored in the Safespring internal repository/path: ansible/roles/haproxy/defaults/main.yml.

1.4.2 Information at Rest

Openstack databases are encrypted using full disk encryption implemented by LUKS, with AES-256 encryption.

Database, API, and other credentials are encrypted using a SOPS keyring that can only be accessed authorized personnel. During runtime these values get stored on disk with restricted permissions(chmod 600 or 700).

1.4.3 Authentication and Key Management

Keystone provides identity and access management, enforcing:

  • Token-based authentication with Fernet or JWT tokens, ensuring signed and encrypted authentication flows.
  • Role-based access control (RBAC) is implemented to enforce strict permissions for API access.