Skip to content

Restrict Azure Storage large-message resolution to the current task hub - #1427

Merged
Naiyuan Tian (nytian) merged 6 commits into
mainfrom
nytian/blob-content
Oct 28, 2026
Merged

Naiyuan Tian (nytian) merged 6 commits into
mainfrom
nytian/blob-content

Conversation

@nytian

Copy link
Copy Markdown
Contributor

Restrict large-message URL recognition and downloads to the configured storage account and task hub’s large-message container.
Previously, URL-shaped orchestration output, including termination, suspension, and resumption reasons, could cause unrelated private Blobs to be downloaded using the application’s storage credentials.

This change:
• Preserves out-of-scope URLs as literal input/output text.
• Rejects explicit downloads outside the large-message container.
• Applies scoped validation to orchestration and entity-state hydration.
• Preserves existing large-message references within the configured container.

Copilot AI balanced review requested due to automatic review settings October 27, 2026 05:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Security-sensitive URI and serialization changes need human validation across supported deployments, and a regression-test assertion still needs correction.

No open issues 🎉

What changed in this PR

This PR restricts Azure Storage large-message resolution to the configured account and task hub, preventing unrelated private blob URLs from being downloaded with application credentials. It also hardens Service Fabric serialization defaults.

Changes:

  • Validate large-message references and explicit downloads against the configured container.
  • Apply scoped validation to orchestration and entity-state hydration, with regression tests.
  • Restore the default allowed-types serialization binder when configured with null.
File Description
test/​DurableTask.AzureStorage.Tests/​MessageManagerTests.cs Tests accepted references and rejection of out-of-scope URLs.
test/​DurableTask.AzureStorage.Tests/​AzureStorageScenarioTests.cs Tests private blob URLs remaining literal management reasons.
Test/​DurableTask.AzureServiceFabric.Tests/​AllowedTypesSerializationBinderTests.cs Updates the null-binder expectation.
src/​DurableTask.AzureStorage/​Tracking/​AzureTableTrackingStore.cs Uses scoped validation for orchestration input hydration.
src/​DurableTask.AzureStorage/​MessageManager.cs Enforces account and container boundaries for blob resolution.
src/​DurableTask.AzureStorage/​EntityTrackingStoreQueries.cs Uses scoped validation for entity-state hydration.
src/​DurableTask.AzureStorage/​AzureStorageOrchestrationService.cs Documents rejection of out-of-scope downloads.
src/​DurableTask.AzureServiceFabric/​Service/​Startup.cs Ensures a serialization binder is always applied.
src/​DurableTask.AzureServiceFabric/​FabricOrchestrationProviderSettings.cs Restores the default binder on null assignment.

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 27, 2026 05:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

URI reconstruction can bypass the container restriction, and the scenario tests reject valid HTTP 404 access-denial responses.

2 open issues

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 27, 2026 17:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The credentialed blob-access boundary needs human review because URI normalization and service-backed behavior have not been runtime-validated.

No open issues 🎉

2 resolved since last review

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 27, 2026 21:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain for the changes limiting large-message resolution to the configured storage account and task-hub container.

No open issues 🎉

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 28, 2026 01:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are reported for the changes restricting large-message resolution to the configured storage account and task hub container.

No open issues 🎉

Review effort: Balanced

@nytian
Naiyuan Tian (nytian) merged commit 887200f into main Oct 28, 2026
48 checks passed
@nytian
Naiyuan Tian (nytian) deleted the nytian/blob-content branch October 28, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants