Quill docs
Secure DMS app boundary
Quill can render apps hosted by DMS workers, but frontend islands are not a secret boundary. Secrets belong in DMS governance/KMS/worker context. Island props are public page data and must never receive KMS values, signing secrets, DEKs, tenant seeds, or cross-tenant information.
Safe data flow#
DMS worker request
├─ L1/L2/L3 auth + planner checks
├─ planned KMS lookup for scoped worker env/secrets
├─ server render builds public HTML
└─ island sidecar props contain ONLY public/client-safe state
Browser island
├─ reads sidecar props
├─ wires events in place
└─ calls APIs again when it needs protected data| Data | Allowed in worker | Allowed in island props |
|---|---|---|
| public labels/theme state | yes | yes |
| current user's display name | yes, after auth | yes, if intended for the page |
| API key / HMAC secret | yes, scoped server-side only | never |
| KMS DEK / master seed | planned KMS internals only | never |
| another tenant's data | only if L3 grants it (normally no) | never |
Pattern#
- Authenticate in the worker before-chain.
- Authorize reads/writes through the planner.
- Resolve any worker secret through the KMS boundary (planned).
- Render only public or user-intended state into HTML/sidecar props.
- For later protected actions, have the island call an authenticated worker route again.