Draft documentation
These infrastructure requirements are a draft. Validate them against the approved infrastructure design and customer requirements before use.
Election Readiness Tools infrastructure requirements
Scope
This document defines the infrastructure configuration required to run the Election Readiness (EC) Tools. It is a provisioning specification for DevOps teams using customer-managed deployment processes.
The infrastructure is a privileged, on-demand Windows execution host. It is not a Brief Connect application component.
Deploy a dedicated tools VM for each Brief Connect environment. Avoid sharing one tools VM, its identities, or retained output across multiple environments where possible.
The deployment creates the tools VM, NIC, managed disks, VM extensions, and VM-specific role assignments. It uses existing customer-managed VNet, subnet, NSG, Bastion, private endpoint, route, DNS, firewall, Key Vault, monitoring, backup, and Brief Connect database resources. It does not create or alter Azure SQL users or database roles.
Resource configuration
Virtual machine
| Property | Required configuration |
|---|---|
| Resource type | Azure Virtual Machine |
| Ownership | Customer-controlled subscription and dedicated tools resource group |
| Azure region | Same as the primary region of the Brief Connect resources for the selected environment |
| Operating system | Windows Server 2022 Datacenter: Azure Edition, x64 Gen2 |
| Architecture | x64 |
| Security type | Trusted Launch |
| Secure Boot | Enabled |
| vTPM | Enabled |
| Minimum capacity | 2 vCPU and 4 GiB RAM (dev/test and small scopes up to ~100,000 comparisons); 2–4 vCPU and 8–16 GiB RAM recommended for production runs |
| Baseline SKU | Standard_B2ls_v2 (minimum small-scope baseline); Standard_D2s_v5 (8 GiB) or Standard_D4s_v5 (16 GiB) recommended for production workloads |
| Pricing model | Client policy and commercial model |
| Windows licensing | Client licensing policy and entitlement |
| Availability | Single VM; no availability set, scale set, load balancer, or HA pair required |
| Guest patching | Azure Update Manager customer-managed maintenance schedule |
| Patch assessment | Periodic assessment enabled |
| Patch orchestration option | Manual updates, or another approved option with restarts controlled separately outside tool runtime |
| Patch installation reboot | Never; patch installation must not restart the VM automatically |
| Patch window | Must not overlap planned or active EC Tools sessions |
| VM restart | Separate manually initiated or explicitly approved maintenance action after confirming that no tool job is active |
| Boot diagnostics | Enabled using managed storage |
| Application runtime | Self-contained win-x64 package; separate .NET runtime and SDK not required |
| Custom data and scripts | None |
| VM extensions | AADLoginForWindows only |
The selected image and VM SKU must be available in the primary region used by the Brief Connect resources for the selected environment.
OS disk
| Property | Required configuration |
|---|---|
| Capacity | 128 GiB |
| Baseline SKU | E10 |
| Storage type | Standard SSD LRS |
| Delete with VM | Enabled |
Tools data disk
| Property | Required configuration |
|---|---|
| Purpose | Packages, configuration, job state, journals, logs, reports, and restricted error output |
| Capacity | 64 GiB minimum baseline (128–512 GiB for large production scopes; see table below) |
| Baseline SKU | E6 Standard SSD minimum baseline; Premium SSD LRS (P10 / P15 / P20) recommended for 1M+ comparisons |
| Storage type | Standard SSD LRS (small scopes) or Premium SSD LRS (production / large scopes) |
| LUN | 0 |
| Host caching | None |
| Partition style | GPT |
| Filesystem | NTFS |
| Persistence | Content survives process failure, operator sign-out, RDP disconnection, VM restart, and VM deletion |
| Delete with VM | Disabled; detach on VM deletion |
| Public network access | Disabled |
| Network access policy | Deny all |
The data volume must have sufficient free capacity and IOPS for the largest expected job before any data-changing operation starts:
- Why production workloads should use
Standard_D2s_v5/Standard_D4s_v5and Premium SSD (P10–P20):- Windows OS RAM + NTFS file cache: Windows Server 2022 Datacenter with Trusted Launch (VBS), Microsoft Defender (
MsMpEng.exe), and an interactive RDP session consumes ~2.0–2.4 GiB of RAM before the tool starts. While the tool bounds its own process working set to ~190–405 MiB (plus ~12 MiB per 100,000 parent-field pairs $D \times F$),8–16 GiBof VM RAM is required so Windows can cache the file-backed.lookup/.index/.dataspools in RAM instead of paging. - Uncached VM & disk IOPS limits (
Host caching: None): Because host caching isNoneon the tools data disk, every spool read/write is subject to both the VM's uncached disk cap and the managed disk's IOPS cap. BurstableStandard_B2ls_v2(40% baseline CPU, capped at 1,280 IOPS / 42.5 MB/s) and Standard SSD tiersE6–E20(all capped at 500 IOPS) bottleneck multi-hour runs that perform millions of random index lookups (FileBackedKeyIndex). Non-burstableStandard_D2s_v5(3,750 IOPS / 85 MB/s) andStandard_D4s_v5(6,400 IOPS / 145 MB/s) paired with Premium SSD LRS (P10500 IOPS / burst 3,500,P151,100 IOPS,P202,300 IOPS) provide sustained CPU and 2x–7x higher disk throughput. - Retained disk capacity: Across the complete Golden Path (
prepare→fill-child-docs→apply→verify), retained JSON/CSV reports and journals require ~22 GB retained (~24.5–32.2 GB peak) per 1,000,000 evaluated comparisons (Total library items × Selected fields; see Estimate scope and size the VM and disk).
- Windows OS RAM + NTFS file cache: Windows Server 2022 Datacenter with Trusted Launch (VBS), Microsoft Defender (
| Workload tier | Evaluated comparisons ($R$) | Recommended Azure VM SKU | Recommended data disk SKU & capacity | Required free space before job |
|---|---|---|---|---|
| Small / Dev-Test | Up to 100,000 |
Standard_B2ls_v2 (2 vCPU, 4 GiB) or Standard_D2s_v5 (2 vCPU, 8 GiB) |
64 GiB Standard SSD (E6) |
>= 10 GB free |
| Large (Production baseline) | Up to 1,000,000 |
Standard_D2s_v5 (2 vCPU, 8 GiB) (or Standard_D4s_v5 if $D > 25,000$) |
128 GiB Premium SSD (P10) (or E10 / E6 with >= 45 GB free) |
>= 45 GB free |
| Extra Large | Up to 5,000,000 |
Standard_D4s_v5 (4 vCPU, 16 GiB) |
256 GiB Premium SSD (P15) (or split scope by site/record type) |
>= 200 GB free |
| Maximum (single scope) | Up to 10,000,000 |
Standard_D4s_v5 (4 vCPU, 16 GiB) |
512 GiB Premium SSD (P20) (or split scope by site/record type) |
>= 400 GB free |
Treat the data disk and retained output as sensitive. Retention, access, and disposal are governed by customer policy.
Network interface
| Property | Required configuration |
|---|---|
| VNet and subnet | Existing, approved, environment-aligned customer VNet and subnet |
| Subnet capacity | Sufficient available address capacity for the VM NIC |
| Private IP | Dynamic or customer-approved static private address |
| Public IP | None |
| Public application endpoint | None |
| Network security | Existing subnet policy or approved NIC-level NSG |
| Inbound access | No unrestricted public RDP or SSH |
| Administration path | Customer-approved Bastion, VPN, private RDP, or equivalent path capable of reaching TCP 3389 without broad public exposure |
| Accelerated networking | Disabled |
| Delete NIC with VM | Enabled |
| DNS | Customer DNS with resolution for all required public and private service endpoints |
| Outbound path | Customer-approved internet, firewall, proxy, NAT, VPN, ExpressRoute, or private path |
The deployment uses existing customer-managed NSG, firewall, route, DNS, proxy, peering, VPN, ExpressRoute, Bastion, and private endpoint resources. Permissive public access and broad service-firewall rules are not supported.
Identity and access
Managed identities
| Identity | Type | Applicability | Required use |
|---|---|---|---|
| VM identity | System-assigned managed identity | All deployments | Key Vault authentication and infrastructure configuration retrieval |
| Brief Connect SQL identity | Existing environment-specific user-assigned managed identity | Latest DB deletion operations requiring Azure SQL | Azure SQL authentication |
The VM system-assigned identity requires the following role assignment:
| Role | Scope | Principal |
|---|---|---|
Key Vault Secrets User |
Existing environment-specific Brief Connect Key Vault only | VM system-assigned identity |
Identity constraints:
- The Key Vault uses Azure RBAC authorization.
Key Vault Administrator,Key Vault Secrets Officer, and equivalent broad roles are not permitted.- The SQL identity is attached only where the selected operation requires Azure SQL.
- The SQL identity must be the existing Brief Connect SQL identity for the same environment.
- Infrastructure provisioning does not create a replacement SQL identity or modify Azure SQL users and database roles.
- Operators do not receive direct access to certificates, private keys, tokens, connection strings, or database credentials.
Operator access
| Property | Required configuration |
|---|---|
| Authorisation | Customer-managed Microsoft Entra ID security group containing authorised EC Tools operators |
| Windows authentication | Microsoft Entra ID login using AADLoginForWindows |
| Azure role | Virtual Machine Administrator Login |
| Role scope | Tools VM only |
| Bootstrap administrator | Recovery and initial provisioning only; strong credential held in customer-approved credential management |
| Revocation | Group membership and role assignments must be independently removable |
| Domain join | Not permitted when Microsoft Entra VM login is used |
The bootstrap credential must not be stored in source control, deployment records, or tickets. Day-to-day operator access uses Microsoft Entra ID.
Service connectivity
Common destinations
| Destination | Protocol/port | Purpose |
|---|---|---|
| Microsoft Entra ID authentication and registration endpoints | HTTPS 443 | Operator login and application authentication |
| Existing Brief Connect Key Vault | HTTPS 443 | Runtime retrieval of approved secrets and certificate material |
| Microsoft Graph | HTTPS 443 | Tool operations |
| SharePoint Online target tenant and site | HTTPS 443 | Tool operations |
Azure Instance Metadata Service 169.254.169.254 |
HTTP 80, link-local | Managed identity token acquisition |
For Azure Global, Entra VM login requires access to at least enterpriseregistration.windows.net, login.microsoftonline.com, and pas.windows.net. Sovereign cloud deployments require the corresponding cloud-specific endpoints.
Database-model destinations
Exactly one database model applies to each Brief Connect environment and tool run. Connectivity for the other model must not be added as a fallback.
| Database model | Brief Connect versions | Required destinations |
|---|---|---|
| Legacy DB | 2.5.10 only |
Data storage account Azure Storage Table and Blob endpoints over HTTPS 443; Azure Cosmos DB endpoint when required by deletion |
| Latest DB | 2.5.10 and above |
Azure DocumentDB MongoDB-compatible endpoint and environment-defined port; Azure SQL over TCP 1433 or approved private equivalent when required by deletion |
Brief Connect 2.5.10 can use either model according to its environment configuration. Later supported versions use Latest DB.
Private networking
Environments using Private Link, service firewalls, custom DNS, forced tunnelling, or restricted egress require:
- Routing from the VM subnet to each required private endpoint.
- Private DNS resolution from the VM for each private endpoint.
- Service firewall or network ACL authorization for the VM network path.
- Proxy or firewall rules for required Microsoft 365 and Entra endpoints.
- TLS inspection compatibility with Microsoft identity, Graph, SharePoint, and Azure service requirements.
Required deployment information
The deployment process requires the following non-secret values:
| Input | Requirement |
|---|---|
| Azure subscription | Approved target subscription |
| Tools resource group | Dedicated customer-controlled resource group |
| Azure region | Primary region of the Brief Connect resources for the selected environment |
| VM name | Customer-approved resource name |
| VNet and subnet | Existing approved network resources |
| Key Vault | Existing environment-specific Brief Connect Key Vault |
| Operator group | Authorised Microsoft Entra ID security group |
| Database model | Exactly one of Legacy DB or Latest DB |
| SQL managed identity | Existing environment-specific identity when required |
| Administration path | Approved Bastion, VPN, private RDP, or equivalent path |
| Resource tags | Tags required by customer policy |
| Provisioner access | Permission to create the VM, NIC, and disks and to create role assignments on the VM and existing Key Vault |
Deployment records must not contain passwords, certificate values, connection strings, access tokens, or private keys.
Security and operational controls
| Control | Requirement |
|---|---|
| Environment isolation | A dedicated VM per Brief Connect environment where possible; identities, Key Vault, network paths, configuration, and retained output remain environment-aligned |
| Endpoint protection | Customer policy |
| Vulnerability management | Customer policy |
| Monitoring and alerting | Customer policy |
| Pending restart | Monitored and resolved during an approved maintenance window |
| Backup | Customer policy; VM backup does not replace tool dry runs, checkpoints, journals, or evidence |
| Auto-shutdown | Disabled unless its schedule cannot overlap tool sessions or maintenance activity |
| Deallocation | Supported while unused; retained resources continue to incur charges |
| Disk encryption | Customer policy |
| Configuration compliance | Customer policy |
| Access review | Customer policy |
| Resource tags | Tags required by customer policy |
| Evidence | Resource IDs, image, size, disks, network placement, identity IDs, role scopes, configuration state, and approved variances |
Deployment and operational evidence must not contain credentials, tokens, certificate values, private keys, Key Vault secret values, connection strings, customer document contents, or unrestricted service responses.
Provisioned-state requirements
Infrastructure is suitable for EC Tools when all of the following conditions hold:
| Area | Required state |
|---|---|
| Compute | Approved Windows image, x64 architecture, and at least 2 vCPU and 4 GiB RAM |
| Security | Trusted Launch, Secure Boot, vTPM, customer-managed patch schedule with automatic restart disabled, and customer-required security controls configured |
| Storage | Persistent NTFS tools volume with sufficient free space |
| Exposure | No public IP, public application endpoint, or broad inbound administration rule |
| Identity | VM system identity enabled and scoped to the environment Key Vault only |
| Conditional SQL identity | Correct environment SQL identity attached only when required |
| Operator access | Approved authentication path and VM-scoped operator authorization configured |
| DNS and routing | Every required common and selected database-model endpoint resolves and is reachable through an approved path |
| Package compatibility | Approved self-contained win-x64 package can execute without a separately installed .NET runtime |
| Preflight | Tool non-destructive preflight succeeds without data writes |
Live deletion and metadata updates are not infrastructure validation methods.