Security Model
This document outlines the security considerations, infrastructure requirements, and trust model for deploying and running Relay.
Container Security
Image Build Process
- Relay images are built using GitHub Actions, using a repeatable and transparent build process.
- This automation helps ensure that each build is consistent and can be traced back to its source code and build instructions.
Container Registry
- Every Relay image is published to the GitHub container registry.
- Images are pinned to specific workflow commit hashes, which prevents unauthorized modifications and ensures that only verified builds are used.
- This pinning mechanism helps maintain security by ensuring that the exact version of the code that was reviewed and tested is the one being deployed.
Code Security & Review
- All code contributions must pass a set of unit, integration, and end to end tests.
- Contributions are reviewed by the University of Nottingham Centre for Health Informatics developer team, before they are approved and merged into the codebase.
- Code scanning using GitHub’s CodeQL analysis is enabled on the repository and contributions to automatically identify potential security vulnerabilities and coding issues.
Dependency & Supply Chain Security
- The base image and all dependencies are reviewed for security updates.
- Relay uses Dependabot to automatically scan and update dependencies, ensuring security vulnerabilities are identified and patched promptly.
- Updates are published with release notes on the Relay releases page.
- A Software Bill of Materials (SBOM) for Relay is published providing visibility into dependencies and supply chain security.
Infrastructure Security
- Relay is deployed in a secure environment by a data partner.
- Outbound access is restricted to the RQUEST / Relay API, no other outbound access is required.
- Inbound access to Relay is only required when using the GA4GH Beacon API functionality
Authentication & Access Control
- Credentials (database access, RQUEST / Relay authentication) are managed through environment variables.
- Relay connections to RQUEST / Relay are secured using the ‘Basic’ HTTP Authentication Scheme, consistent with the API specification.
Data Security & Compliance
- Low-number suppression and rounding can be configured to custom values to comply with data protection policies.