Repository navigation
Add scoped Azure Blob payload account access - #171
Conversation
Document host-wide AllowedHosts behavior and cover default, opt-in, and connection-string payload reads with offline tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues remain for the Azure Blob read-boundary documentation and offline test additions.
No open issues 🎉
What changed in this PR
Clarifies Azure Blob payload read boundaries and adds offline coverage for existing behavior without changing runtime logic.
Changes:
- Documents hostname-wide
AllowedHostspermissions, identity requirements, and default endpoint/container restrictions. - Adds real Azure client pipeline tests for v1/v2 reads, allowed destinations, and connection-string authentication.
- Verifies rejected references trigger neither HTTP requests nor token acquisition.
| File | Description |
|---|---|
payload/azure_blob.go |
Expands AllowedHosts API documentation and security guidance. |
payload/azure_blob_access_test.go |
Adds offline tests for read boundaries and authentication behavior. |
durabletaskscheduler/README.md |
Explains opt-in native token reads versus restricted generic Resolve locations. |
Review effort: Balanced
Replace hostname permissions with independent primary-container and additional-account options. Preserve v1/v2 token compatibility, align legacy query handling, and add offline pipeline coverage and documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Go’s transparent gzip decompression bypasses the compressed-length check in Azure Blob downloads, allowing responses larger than twice the payload limit to be accepted when their decoded payload is small.
1 open issue
Review effort: Balanced
Replace two conditional chains to satisfy gocritic without changing payload access behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep v1 literal names and v2 escaped names unchanged through the Storage pipeline while retaining account, container, and traversal validation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Disable transparent HTTP gzip decompression while retaining redirect rejection, and cover explicit decoding and payload size limits through local TLS pipeline tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Avoid depending on the concrete type of http.DefaultTransport while retaining proxy support, connection defaults, explicit decompression, and redirect rejection. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
wangbill (YunchuWang)
left a comment
There was a problem hiding this comment.
Reviewed the scoped Azure Blob payload implementation at 0f45b23, including the latest private-transport change. The earlier gzip decompression and DefaultTransport assertion findings are addressed, and I found no additional blocking issue in the reviewed changes. Current-head required CI remains a separate merge gate.


Summary
AllowedHostsoption with independentAllowAllContainersInConfiguredAccountandAdditionalAccountURLssettings.Resolvelocations, and client/worker hydration. Keep samples on the default scope and document the options and migration behavior.Validation
go test ./payload ./internal/largepayload ./client ./durabletaskschedulergo test ./... -run '^$'(compile all packages)