Security Model
This document outlines the security considerations, infrastructure requirements, and trust model for deploying and running Carrot Mapper within a network.
Container Security
Image Build Process
- Carrot Mapper images are built using GitHub Actions, using a repeatable and transparent build process.
- Each dependency from the build process is pinned to a git hash.
- This automation helps ensure that each build is consistent and can be traced back to its source code and build instructions.
Container Registry
- Every Carrot Mapper 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.
- GitHub’s dependency-review-action is used to detect vulnerable dependencies before they are introduced into the codebase.
- Carrot Mapper uses Dependabot to automatically scan and update dependencies, ensuring security vulnerabilities are identified and patched promptly.
- Updates are published with release notes on the Carrot Mapper releases page.
- A Software Bill of Materials (SBOM) for Carrot Mapper is published providing visibility into dependencies and supply chain security.
Infrastructure Security
- Carrot Mapper is deployed in a secure environment by a data partner.
- No incoming requests are made into the data partner’s secure environment.