Skip to content

Candidate fix for #59, data exfiltration via AzureML #61

@TonyWildish-BH

Description

@TonyWildish-BH

One candidate fix for the AzureML data breach is Conditional Access Policies. This works by blocking AzureML traffic from crossing the SDE firewall, which has a static IP address already allocated to it.

The plan below comes from a chat with an LLM that knows about these things. We won't execute this plan until we have feedback from MS on their take on things.

Acceptance Criteria

1. Egress IP capture

  • 1.1 Identify the existing fixed public IP used by the SDE’s Azure Firewall as a Terraform output for use in the next steps.

2. Conditional Access policies

  • 2.1 Create an Entra ID named location “SDE-Egress” that contains the IP from 1.1.
  • 2.2 Implement CA policy SDE-inside-block-external-AML with:
    • Cloud apps = “Azure Machine Learning”, “Azure Storage”
    • Include = All users
    • Locations = only “SDE-Egress”
    • Grant = Block access
    • Exclude = Group “SDE-BreakGlass”.
  • 2.3 Implement CA policy SDE-outside-block-internal-AML with:
    • Cloud apps = “Azure Machine Learning”, “Azure Storage”
    • Include = All users
    • Locations = all trusted locations except “SDE-Egress”
    • Grant = Block access
    (No checkbox needed for note: Access to SDE AML workspaces is already blocked externally because public network access is disabled.)
  • 2.4 Create a PIM-enabled Entra ID group “SDE-BreakGlass”; require approval, set time-bound activation, and ensure auditing is enabled.
  • 2.5 Store both CA policies as JSON and deploy them.

3. Azure Policy guard-rail

  • 3.1 Author policy definition amlPublicNetworkDisabled that denies creation or update when properties.publicNetworkAccess == "Enabled".
  • 3.2 Assign the policy at the SDE subscription level and add it to the TRE policy set.
  • 3.3 Verify policy compliance: 100 % of existing SDE AML workspaces report compliant status.

4. Validation / automated tests

  • 4.1 From an SDE VM, run az ml workspace list --subscription <external-sub-id> and confirm it returns HTTP 403.
  • 4.2 From a non-SDE host, attempt to reach the storage endpoint of an SDE AML workspace and confirm the connection fails.

5. Documentation

  • 5.1 Update the operator runbook:
    • Procedure to rotate the firewall IP and update the named location.
    • Steps to activate BreakGlass access via PIM.
  • 5.2 Update the user guide to explain that ML workspaces outside the SDE are intentionally inaccessible from inside the SDE.

6. Break-glass drill

  • 6.1 Conduct a tabletop exercise: an on-call engineer activates the PIM role, accesses an external ML workspace from inside the SDE, then relinquishes the role.
  • 6.2 Capture audit logs confirming both activation and de-activation events.

7. Post-deployment monitoring

  • 7.1 Create an Azure Monitor alert: any failure of the CA policies “SDE-inside-block-external-AML” or “SDE-outside-block-internal-AML” triggers a Severity 2 alert to the SecOps mailbox.

Metadata

Metadata

Labels

Issue: EnhancementNew feature or request to one of our productsIssue: TRE/SDEIssue with the TRE environmentPriority: HighHigh Priority Issue - User is not able to do any work, and others may also be impactedProject: Cloud Team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions