Skip to content

Three-Layer Access Architecture — Audit Evidence Package

Purpose

This document provides audit evidence for the three-layer access control architecture implemented across Cirius Group environments. Each layer is documented with its control mechanism, Terraform implementation reference, and where evidence can be found. This document supports SOC2 CC6.x (Logical and Physical Access Controls), HIPAA §164.312(a) (Technical Safeguards — Access Control), and HITRUST 01.a/01.b requirements.


Architecture Overview

Access to internal resources is enforced through three independent, sequential control layers. An attacker or unauthorized user must bypass all three to gain access.

External User / Device


┌──────────────────────────────────────────────────────────┐
│  LAYER 1: NETWORK LAYER — Zero Trust Network Access      │
│  Twingate ZTNA — no network path without authentication  │
│  No VPN split tunneling. No direct inbound internet.     │
└──────────────────────────────────────────────────────────┘
       │ Authenticated session only

┌──────────────────────────────────────────────────────────┐
│  LAYER 2: IDENTITY LAYER — Entra ID + MFA               │
│  Conditional Access policies enforce phishing-resistant  │
│  MFA (FIDO2/passkey) for all remote access scenarios    │
└──────────────────────────────────────────────────────────┘
       │ Verified identity only

┌──────────────────────────────────────────────────────────┐
│  LAYER 3: DEVICE LAYER — Intune Compliance              │
│  CA policy requires Intune-compliant managed device.    │
│  Cortex XDR endpoint protection on all managed devices. │
└──────────────────────────────────────────────────────────┘
       │ Compliant device only

   Internal Resources (PROD / DDE / AWS)

Exceptions:

  • CEO/CTO have GlobalProtect as an additional remote access pathway. GlobalProtect is also subject to Entra ID conditional access (Layer 2) and Intune compliance (Layer 3).
  • Break-glass accounts (cirius-breakglass@*) bypass Twingate but are protected by PIM, MFA enforcement, and real-time CRITICAL alerting with no suppression window. Any break-glass sign-in triggers an immediate SecOps incident.

Layer 1: Zero Trust Network Access (Twingate)

Control Description

Twingate replaces traditional VPN with zero-trust network access. Users must authenticate to Twingate before any network path exists to internal resources. There is no open inbound internet port to any internal system — the Twingate connector initiates an outbound tunnel.

Implementation Evidence

Evidence ItemLocation / Reference
Twingate connectors deployed in DMZ VNETazure-infra/firewall/ — Twingate connector VM resources
No direct inbound internet to private subnetsNSG rules on snet-identity, snet-prod-servers, snet-prod-workers — no 0.0.0.0/0 inbound rules
Twingate SAML integration with Entra IDTwingate Admin Portal → Authentication → SAML. IdP: Entra ID app registration twingate-law-ingest (PROD tenant). Authentication enforces Entra ID MFA before issuing Twingate session
Remote access Conditional Access policyazure-infra/entra/maester-sprint2-ca.tfCA-RemoteAccess-CompliantDeviceFIDO2
Twingate connector monitoringbedrock-hub/agents/twingate_agent.py — monitors connector uptime, alerts CRITICAL if offline >1h
Twingate connector private IPs documentedazure-infra/firewall/net_vnet.tf — DMZ subnet allocations

Twingate Architecture

External Device (Twingate client installed)

       │  HTTPS tunnel to Twingate cloud relay

Twingate Connector (DMZ VNET)

       │  Private network path — no firewall rule change needed

Internal Resource (private subnet)

Monitoring

  • twingate_agent.py (PROD maintenance job) alerts CRITICAL if any connector has been offline for >1 hour
  • Twingate access logs ship to LAW via DCR (twingate-law-ingest service account, Data Collection Endpoint)
  • Failed Twingate authentications visible in Entra ID SignInLogs (SAML auth failures)

Layer 2: Identity Verification (Entra ID + MFA)

Control Description

All remote access scenarios require authentication against Entra ID with phishing-resistant MFA. Conditional Access policies enforce FIDO2 hardware keys or passkeys for remote access. Legacy authentication (Basic Auth, NTLM over internet) is blocked tenant-wide.

Implementation Evidence

Evidence ItemLocation / Reference
Remote Access CA policy — FIDO2 requiredazure-infra/entra/maester-sprint2-ca.tfCA-RemoteAccess-CompliantDeviceFIDO2
Block legacy authenticationazure-infra/entra/maester-sprint2-ca.tfCA-BlockLegacyAuth
MFA required for all usersazure-infra/entra/maester-sprint2-ca.tfCA-RequireMFA-AllUsers
MFA for privileged admin rolesazure-infra/entra/maester-sprint2-ca.tfCA-RequireMFA-Admins-AllCloudApps
Sign-in risk CA policyazure-infra/entra/maester-sprint2-ca.tfCA-SignInRisk-MediumHigh-MFA
Entra authorization policy — guest restrictionsazure-infra/entra/authorization-policy.tfazuread_authorization_policy.main
Guest access to M365 groups blockedazure-infra/entra/group-settings.tfAllowGuestsToAccessGroups=false
Maester test resultsEIDSCA track B — all authorization policy tests passing

Conditional Access Policies Active (PROD tenant)

PolicyConditionAction
CA-RequireMFA-AllUsersAll users, all cloud appsRequire MFA
CA-RequireMFA-Admins-AllCloudAppsPrivileged admin rolesRequire MFA
CA-BlockLegacyAuthLegacy auth clientsBlock
CA-RemoteAccess-CompliantDeviceFIDO2Remote access scenariosRequire FIDO2 + Intune-compliant device
CA-SignInRisk-MediumHigh-MFARisk ≥ MediumRequire MFA or block
CA-UserRisk-High-BlockUser risk = HighBlock

Authorization Policy Controls

ControlSettingMaester Test
Users can register applicationsDisabledEIDSCA.AP04
Users can create new tenantsDisabledMT.1069
Users can create security groupsDisabledMT.1068
Guest users can invite other guestsDisabledEIDSCA.AP06 / MT.1055
Guests can access M365 groupsDisabledEIDSCA.AG01
Guests can be group ownersDisabledEIDSCA.AG02
Only admins can create M365 groupsEnabledMT.1073 / CISA.MS.AAD.5.2

Monitoring

  • Identity agent (bedrock-hub/agents/entra/identity_agent.py) reviews SignInLogs for:
    • First-time login from unmanaged device (T1078.003)
    • Impossible travel (UBA)
    • Sign-in outside of normal hours
    • MFA fatigue (multiple MFA prompts in short window)
  • Break-glass sign-ins trigger CRITICAL with no suppression, no known-good suppression ever
  • Weekly Maester audit (maester-sprint2-ca.tf controls validated via GitHub Actions)

Layer 3: Device Compliance (Intune + Cortex XDR)

Control Description

Remote access is restricted to Intune-managed, compliant devices. The CA-RemoteAccess-CompliantDeviceFIDO2 policy requires the device to satisfy Intune compliance policies before a session is granted. All managed devices also have Cortex XDR deployed for endpoint detection and response.

Implementation Evidence

Evidence ItemLocation / Reference
CA policy requires Intune-compliant deviceazure-infra/entra/maester-sprint2-ca.tfCA-RemoteAccess-CompliantDeviceFIDO2grantControls.operator = AND, requireCompliantDevice = true, authenticationStrength.id (FIDO2)
Intune compliance policiesIntune admin center — Windows 10/11 compliance policies: BitLocker required, Defender required, OS update compliance
Cortex XDR on all managed devicesCortex XDR admin console — All-devices view; bedrock-hub/agents/cortex_agent.py monitors agent status
EDR silence escalationbedrock-hub/agents/edr_silence_agent.py — alerts HIGH if Cortex returns 0 findings while other agents are elevated (indicates potential EDR tampering)
Cortex coverage monitoringbedrock-hub/agents/operational/arctic_wolf_coverage_agent.py and cortex_coverage_agent.py

Intune Compliance Policy Requirements (Windows)

RequirementSettingEnforcement
BitLocker enabledRequiredCA blocks sign-in if not compliant
Microsoft Defender AntivirusActiveCA blocks sign-in if not compliant
Minimum OS versionWindows 10 21H2+ / Windows 11CA blocks outdated OS
Firewall enabledRequiredCA blocks sign-in if not compliant
Device is Intune-managedImplicitCA requireCompliantDevice

Monitoring

  • Cortex XDR agent: real-time EDR on all managed endpoints
  • Arctic Wolf MDR: external monitoring with act-first authority, reviews Cortex events
  • edr_silence_agent.py: detects Cortex silence patterns (0 findings + elevated other agents = HIGH)
  • vm_status_agent.py: monitors all VMs including managed device registration status
  • Monthly compliance review: Intune compliance report reviewed for non-compliant device trends

Summary Table

LayerControlMechanismEvidence LocationMonitoring
1 — NetworkZTNA — no network path without authTwingate connectors in DMZazure-infra/firewall/ NSGs + Twingate Admintwingate_agent.py — CRITICAL if offline >1h
2 — IdentityPhishing-resistant MFA (FIDO2)Entra ID Conditional Accessazure-infra/entra/maester-sprint2-ca.tfidentity_agent.py, Maester weekly audit
3 — DeviceIntune-compliant managed deviceIntune + Cortex XDRIntune admin center, Cortex XDR consoleedr_silence_agent.py, cortex_coverage_agent.py

Compliance Mapping

FrameworkControlLayerStatus
SOC2 CC6.1Restrict logical accessAll three layers✅ Implemented
SOC2 CC6.2New access requires authorizationLayer 2 (Entra) + Layer 3 (Intune managed)✅ Implemented
SOC2 CC6.3Remove access when no longer requiredLayer 1 (Twingate deactivation) + Layer 2 (Entra user disable)✅ Implemented
SOC2 CC6.6Protect against threats outside boundariesLayer 1 (ZTNA, no open inbound)✅ Implemented
SOC2 CC6.7Restrict transmission to authorized usersLayer 2 (Entra CA)✅ Implemented
HIPAA §164.312(a)(1)Access controlAll three layers✅ Implemented
HIPAA §164.312(d)Person authenticationLayer 2 (FIDO2 MFA)✅ Implemented
HITRUST 01.aAccess control policyAll three layers✅ Implemented
HITRUST 01.bAccess to networks and network servicesLayer 1 (ZTNA)✅ Implemented
CISA.MS.AAD.2.1MFA for all usersLayer 2✅ Implemented
CISA.MS.AAD.2.3Phishing-resistant MFA for adminsLayer 2✅ Implemented

Audit Procedures

For External Auditors

  1. Twingate connector verification: Request Twingate Admin Portal read access or screenshot of active connector status. Confirm no direct inbound internet access on Azure NSGs for private subnets.

  2. Conditional Access policy review: Entra admin center → Security → Conditional Access. Review all policies listed in Layer 2 table above. Confirm CA-RemoteAccess-CompliantDeviceFIDO2 requires both FIDO2 authentication strength AND Intune-compliant device.

  3. Maester test results: Request latest Maester M365 DSC audit report (generated weekly by GitHub Actions weekly-hipaa-audit.yml). Confirm EIDSCA.AP04/AP06/AP07, MT.1055/1068/1069/1073, EIDSCA.AG01/AG02 are all passing.

  4. Intune compliance verification: Intune admin center → Devices → Compliance → Per-policy compliance report for Windows. Confirm BitLocker, Defender, and OS version requirements are active.

  5. Cortex XDR coverage: Cortex XDR admin console → All Endpoints → confirm all corporate-managed devices show agent status Active.

  6. Monitoring evidence: SecOps platform (secops.bedrockcybersecurity.org) → Incidents → filter by twingate_agent, identity_agent, cortex_agent. Demonstrate active monitoring with recent findings or clean status.

For Internal Review

Run the following to confirm all layers are active:

bash
# Layer 1: Confirm Twingate connector uptime (last 24h)
az monitor log-analytics query \
  --workspace 5d76d1f2-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --analytics-query "Twingate_CL | where TimeGenerated > ago(24h) | summarize count() by connector_name"

# Layer 2: Confirm CA policy state (all policies ON, not report-only)
az ad conditional-access policy list --query "[].{name:displayName, state:state}"

# Layer 3: Confirm Intune compliance % (via Intune admin center)
# Graph API: GET /deviceManagement/deviceCompliancePolicySettingStateSummaries

Internal use only — Cirius Group