|
| 1 | +# Rubie Gateway Security Guidance for Breast Screening Offices |
| 2 | + |
| 3 | +**Audience:** Hospital IT, network, and information security teams hosting the NHS Rubie Gateway (Run Breast Screening in England) on a VM in the BSO's network. |
| 4 | +**Scope:** Covers the gateway VM, its network exposure, the data it holds, and its communications with Azure (Rubie) and on-site modalities. |
| 5 | +**Out of scope**: physical datacentre security, hospital-wide identity systems, and the Rubie Azure tenant itself (managed by NHS England). |
| 6 | + |
| 7 | +## 1. Architecture summary |
| 8 | + |
| 9 | +The gateway is an application stack running on a hospital-provided VM, enrolled into Azure via **Azure Arc**. It exposes: |
| 10 | + |
| 11 | +- **Inbound DICOM** (on the agreed DICOM port – typically the IANA-registered 104 or 11112) from a small, named set of on-site mammography modalities. |
| 12 | +- **Outbound HTTPS (443)** to Azure Relay (Rubie → Gateway commands) and the Rubie API (Gateway → Rubie events, image uploads). |
| 13 | + |
| 14 | +It stores transient state in local SQLite databases: |
| 15 | + |
| 16 | +- `worklist.db` – Modality Worklist (MWL) entries (patient ID, name, DOB, accession number, scheduled procedure). |
| 17 | +- `pacs.db` — short-lived DICOM files. |
| 18 | + |
| 19 | +No long-term patient record is stored on the gateway VM. The source of truth for this lives in Rubie (Azure). |
| 20 | + |
| 21 | +## 2. Network controls |
| 22 | + |
| 23 | +### 2.1 Inbound |
| 24 | + |
| 25 | +- **Allow the agreed DICOM port (typically 104 or 11112) inbound only from the specific IP addresses of the modalities** authorised to send to this gateway. Block from all other sources, including the wider hospital network. |
| 26 | +- The gateway will additionally enforce an **AE Title + source IP allowlist** at the application layer (planned — currently in development). |
| 27 | +- **No other inbound ports** should be reachable from the hospital network. |
| 28 | + |
| 29 | +### 2.2 Outbound |
| 30 | + |
| 31 | +Allow outbound HTTPS (443) only to: |
| 32 | + |
| 33 | +- `*.servicebus.windows.net` — Azure Relay (Rubie ↔ Gateway). |
| 34 | +- Rubie API host. |
| 35 | + |
| 36 | +Deny all other outbound traffic. |
| 37 | + |
| 38 | +### 2.3 Segmentation |
| 39 | + |
| 40 | +Place the gateway VM on a **dedicated VLAN** or segment, isolated from: |
| 41 | + |
| 42 | +- Clinical workstations. |
| 43 | +- The hospital PACS. |
| 44 | +- General hospital user devices. |
| 45 | + |
| 46 | +Only the named modalities should be able to reach the gateway on the DICOM port. |
| 47 | + |
| 48 | +## 3. Identity, access, and filesystem |
| 49 | + |
| 50 | +### 3.1 Local accounts |
| 51 | + |
| 52 | +- The gateway application runs under the local **SYSTEM** account. This is a non-interactive account and cannot be used to log in. |
| 53 | +- **Interactive logon** to the VM is restricted via Active Directory / local group policy to a named group of hospital administrators. Because SYSTEM is highly privileged on the local machine, controlling who can log in to the VM is the primary access control. |
| 54 | + |
| 55 | +### 3.2 Filesystem permissions |
| 56 | + |
| 57 | +- The SQLite databases (`worklist.db`, `pacs.db`) must be readable/writable **only by the gateway service account**. |
| 58 | +- Application and audit logs should similarly be restricted to the service account and a read-only auditors group. |
| 59 | + |
| 60 | +### 3.3 Disk encryption |
| 61 | + |
| 62 | +- Enable encryption on the VM's data disk, as the SQLite databases hold patient-identifiable data. |
| 63 | + |
| 64 | +## 4. Communications with Rubie |
| 65 | + |
| 66 | +### 4.1 Azure Relay (Rubie → Gateway commands) |
| 67 | + |
| 68 | +- The gateway listens on an Azure Relay Hybrid Connection. The connection is **TLS-encrypted end to end** by Azure. |
| 69 | +- Relay authentication uses the VM's **Managed Identity** (granted via Arc onboarding). No shared keys or SAS tokens are held on the VM. |
| 70 | + |
| 71 | +### 4.2 Rubie API (Gateway → Rubie) |
| 72 | + |
| 73 | +- All Gateway → Rubie API calls use **HTTPS** with TLS 1.2+ and authenticate with an **Azure Managed Identity** issued by Arc. No bearer tokens or API keys are held on the VM. |
| 74 | +- The Rubie API enforces authorisation: the gateway can only act against appointments associated with its configured `Relay`/`Gateway` records. |
| 75 | + |
| 76 | +## 5. Azure Arc deployment |
| 77 | + |
| 78 | +- Arc onboarding is performed by running an enrolment script supplied by NHS England's DevOps team. |
| 79 | +- After onboarding, the VM has a **system-assigned Managed Identity**; no shared secrets are needed for Arc-managed services. |
| 80 | +- Enable only the Arc extensions actually required (Update Management, Defender for Servers, Azure Monitor Agent). Each extension is a privileged surface — keep the set minimal. |
| 81 | +- Apply **Azure Policy** assignments (provided by NHS England) so compliance drift is detected centrally. |
| 82 | + |
| 83 | +## 6. Patching and vulnerability management |
| 84 | + |
| 85 | +- **OS patches:** apply within hospital's standard patching SLA. |
| 86 | +- **Gateway application:** new versions are deployed to the VM by NHS England via Azure Arc. Artifacts are delivered through the Arc data plane (no direct outbound traffic from the VM to GitHub or other public artifact stores). The hospital is not responsible for building or packaging the application. |
| 87 | + |
| 88 | +## 7. Change management |
| 89 | + |
| 90 | +- VM-level changes (firewall rules, AD group membership, OS updates outside normal patching) go through the hospital's change management process. |
| 91 | +- Application changes (new gateway releases, configuration updates) are deployed by NHS England via Arc and announced in advance. The hospital should validate inbound DICOM traffic continues to flow after each rollout. |
0 commit comments