Skip to content

Commit c00a665

Browse files
authored
Merge branch 'main' into api/minio-sts-fixes
2 parents f422087 + dbf74e6 commit c00a665

28 files changed

Lines changed: 3140 additions & 115 deletions

.github/workflows/docs.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ on:
99
- main
1010
workflow_dispatch:
1111

12+
env:
13+
BASE_URL: /${{ github.event.repository.name }}
14+
1215
permissions:
1316
contents: read
1417
pages: write
@@ -26,15 +29,15 @@ jobs:
2629
uses: actions/checkout@v4
2730
- name: Install dependencies
2831
working-directory: ./docs
29-
run: pip install -r requirements.txt
32+
run: npm ci
3033
- name: Build docs
3134
working-directory: ./docs
32-
run: mkdocs build
35+
run: npm run build
3336
- name: Upload artifact
3437
if: github.event_name != 'pull_request'
3538
uses: actions/upload-pages-artifact@v4
3639
with:
37-
path: ./docs/site/
40+
path: ./docs/_build/html
3841
name: github-pages
3942
deploy:
4043
needs: build

.pre-commit-config.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ repos:
77
- id: check-yaml
88
args: [--allow-multiple-documents]
99
- id: end-of-file-fixer
10+
exclude_types: [svg]
11+
exclude: '.excalidraw$'
1012
- id: mixed-line-ending
1113
- id: trailing-whitespace
14+
exclude_types: [svg]
1215
- repo: https://github.com/psf/black
1316
rev: 22.10.0
1417
hooks:

docs/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# MyST build outputs
2+
_build

docs/abbreviations.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
version: 1
2+
project:
3+
abbreviations:
4+
TRE: Trusted Research Environment

docs/architecture/architecture.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Architecture
2+
3+
## Tenancy
4+
5+
![](../static/FRIDGE_tenancy.svg)
6+
7+
- For researchers
8+
- transparent proxy to fridge API
9+
- Security
10+
- We feel the likelihood of "container breakout" is too high to let pod configuration be the _only_ barrier to privileged host access
11+
- Arrived at the "two cluster" tenancy
12+
- Isolated network, is heavily restricted. The _only_ outbound connection possible is to the container repository, to fetch container images
13+
- No other "external" connection (_e.g._ internet)
14+
- No access to other machines, VMs, nodes, in the target infrastructure/cloud
15+
- Separation of "admin" and "researcher" areas
16+
- different proxies
17+
- possible to isolate the TRE operators from TRE researchers
18+
- Defence in depth
19+
- at K8s
20+
- PSS
21+
- Network (Cilium)
22+
- RBAC
23+
- Data-at-rest encryption (protects from bad actors, compromise at infrastructure provider)
24+
- at infrastructure
25+
- network (vnet) isolation (out of band!)
26+
- Compromising the host is very unlikely
27+
- And even if it does happen, and privilege escalation occurs, there is no access to other networks
28+
- No access to data from other projects
29+
- The worst that can happen is a researcher trashes their own environment
30+
- Connection between TRE and FRIDGE
31+
- pub/private key
32+
33+
## FRIDGE internal
34+
35+
- Update figure to cover access/isolated clusters, remove unused components
36+
- Access cluster
37+
- user stuff
38+
- kube proxy (sshd)
39+
- FRIDGE proxy (sshd)
40+
- container repository (harbor)
41+
- others
42+
- Network policy (cilium)
43+
- Isolated cluster
44+
- user stuff
45+
- FRIDGE API (fast api)
46+
- workflow manager (argo workloads)
47+
- job namespace
48+
- object storage (minio)
49+
- block storage (longhorn/CSI driver PVCs)
50+
- others
51+
- Network policy (cilium)

docs/architecture/defence_in_depth.md

Whitespace-only changes.

docs/architecture/introduction.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
short_title: Introduction
3+
---
4+
# Architecture and Governance
5+
6+
This section details the architecture and governance of a FRIDGE deployment.
7+
It explains the basic concepts underpinning FRIDGE, details of the governance roles and processes, and the technical architecture.
8+
9+
## Executive Summary
10+
11+
TREs can be constrained by the computing resources available to them.
12+
This could hinder research.
13+
FRIDGE enables the use of computing power from external resources, such as cloud or HPC, in an existing TRE.
14+
15+
The approach to solving this problem is to extend the governance boundary of an existing TRE to the external resource.
16+
This is achieved by provisioning a secure enclave to the external infrastructure into which the FRIDGE satellite TRE is deployed.
17+
In effect, a portion of the external system is borrowed by the TRE and brought under the control of the TRE, and its existing governance and administrators.
18+
19+
The advantage of this approach is, as we can formally consider the FRIDGE deployment part of an existing TRE, there is no need to involve the external infrastructure provider in data sharing agreements or rewrite existing agreements with data owners.
20+
21+
## Key Concepts
22+
23+
There are a number of concepts central to FRIDGE that are important to understand.
24+
25+
:::{glossary}
26+
Trusted Research Environment
27+
: A secure computational environment designed for conducting research on sensitive data.
28+
TREs must balance an appropriate level of security for the data being processed,
29+
and usability to enable researchers to work effectively and efficiently.
30+
31+
FRIDGE assumes an existing TRE, with its own security controls and governance.
32+
FRIDGE places few requirements on that TRE other than establishing a connection to a FRIDGE instance.
33+
34+
Satellite TRE
35+
: An adjunct to an existing TRE that provides extra functionality or computational resources.
36+
A satellite TRE is not a full TRE itself, and requires a home TRE to operate.
37+
38+
FRIDGE is an example of a satellite TRE.
39+
40+
Roles
41+
: The operation of a FRIDGE instance depends on people, most likely, split between multiple organisations.
42+
Their responsibilities and access form a key part of FRIDGE's security and governance.
43+
As such, we have defined [roles](#arch-roles) for FRIDGE and outlined their scope and purpose.
44+
This scheme helps clarify who is responsible for infrastructure or processes irrespective of which organisation they belong to or what their job title is.
45+
46+
Governance Boundary Extension
47+
: The integration of resources owned by an external organisation into the control and governance of an existing TRE.
48+
Asserting the TREs governance over the satellite TRE is essential for the operation of FRIDGE, and avoiding complex data sharing agreements between the {term}`Data Owner`, {term}`TRE Operator Organisation`, and {term}`FRIDGE Hosting Organisation`.
49+
This arrangement is enabled by FRIDGE's technical and governance security controls.
50+
51+
TRE Tenancy
52+
: The components that form the secure enclave into which the satellite TRE can be deployed.
53+
The tenancy must ensure that data, processes and network traffic inside are opaque to,
54+
55+
1. the host system
56+
1. other tenancies.
57+
58+
Shared Responsibility
59+
: As the FRIDGE infrastructure, is split between organisations, there is no single organisation that takes sole responsibility for a FRIDGE instance and its operation.
60+
The shared responsibility model defines the boundaries of each organisations responsibility.
61+
For efficient operation it is important that the {term}`TRE Operator Organisation` retains responsibility for data processing.
62+
However, it is not possible to remove all responsibility from the {term}`FRIDGE Hosting Organisation`, for example in deploying a secure {term}`TRE Tenancy`.
63+
64+
The general principle of FRIDGE is to minimise the responsibility of the {term}`FRIDGE Hosting Organisation`.
65+
66+
Defence in Depth
67+
: The use of multiple layers of security control so that if one control is broken or circumvented, the overall system remains secure.
68+
The worst-case scenario is the unauthorised egress of data from a FRIDGE instance.
69+
In FRIDGE we aim for no single point of failure and have ensured that no single failure would, on its own, lead to that outcome.
70+
71+
Five Safes
72+
: The [Five Safes Framework](https://ukdataservice.ac.uk/help/secure-lab/what-is-the-five-safes-framework/) sets out a method for understanding the range of factors affecting data security in research.
73+
It can be used as a guide to designing or assessing TREs.
74+
The framework splits data security into five components, safe data, safe projects, safe people, safe settings, and safe outputs.
75+
:::

docs/architecture/lifecycle.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
short_title: Lifecycle
3+
---
4+
# FRIDGE Lifecycle and Data Flow
5+
6+
- Diagram of data flow
7+
- immutable inputs
8+
- working space backed by encrypted performant block storage
9+
- write-only outputs deposited in bucket
10+
- Workflow templates
11+
- Security
12+
- Buckets for input and outputs
13+
- Different permissions based on RBAC
14+
- input
15+
- API: RW
16+
- Service AC (researchers): RO
17+
- egress
18+
- API: RW
19+
- Service AC (researchers): WO
20+
- inputs are immutable
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
short_title: Responsibility Mapping
3+
---
4+
5+
# Responsibility and 5 Safes

docs/architecture/roles.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
(arch-roles)=
2+
# Roles
3+
4+
:::{glossary}
5+
Data Owner
6+
: …
7+
8+
TRE Operator Organisation
9+
: …
10+
11+
TRE Administrators
12+
: Members of {term}`TRE Operator Organisation`
13+
14+
FRIDGE Hosting Organisation
15+
: …
16+
17+
Hosting Provider Administrators
18+
: Members of {term}`FRIDGE Hosting Organisation`
19+
20+
Resource Allocators
21+
: …
22+
23+
Principal Investigators
24+
: …
25+
26+
Safe Researchers
27+
: …
28+
29+
Job Submitters
30+
: A subset of {term}`Safe Researchers`.
31+
These Researchers are users of the TRE who are permitted to dispatch jobs to the FRIDGE instance.
32+
:::

0 commit comments

Comments
 (0)