deploy/scaffold skills should gate on auth when proprietary data is detected #9

Closed
opened 2026-08-11 22:08:07 +00:00 by jsutter · 1 comment
Owner

Problem

When deploying an app that serves proprietary/client data (financials, PII,
trade secrets), the deploy/scaffold workflow should detect this and refuse
to release without auth
(forward-auth or equivalent). Today it does not.

Case study

SJC dashboard deployed to dashboard.apps.sonomajetcenter.com (a static HTML
dashboard rendering SJC's financial data — customer names, aircraft tail
numbers, fuel volumes, GL balances). The deploy proceeded without any auth
check. The dashboard served publicly (HTTP 200, no redirect, no auth gate)
until the operator caught it and requested auth be implemented.

The enable-forward-auth skill exists and works — the gap is that nothing
insists on it being called before release. The operator had to notice.

Suggested fix

Add an auth-gate to the deploy/scaffold skills (or a pre-deploy check):

  1. When an app is deployed/scaffolded to a *.apps.<tenant-domain> surface,
    check whether the app content is flagged as containing proprietary data.
    This could be:

    • A manifest field (e.g., dataClassification: proprietary in the app's
      manifest/ingress.yaml)
    • A heuristic (app serves financial/PII/client data patterns)
    • An explicit flag the operator sets during scaffold
  2. If proprietary data is detected (or the flag is set), refuse to complete
    the deploy until enable-forward-auth has been run for the app's domain.
    Surface the command the operator needs to run.

  3. If the operator explicitly wants a public app, require an opt-out flag
    (e.g., public: true in the ingress.yaml) with a clear audit trail.

Impact

Without this gate, any app deployed to a *.apps surface serves publicly by
default. For proprietary data, this is a data-breach risk. The operator
caught this one; the next one might not be caught.

  • The enable-forward-auth skill exists and works (tested on SJC dashboard).
  • The Caddyfile *.apps block has a comment saying "Auth middleware runs for
    all requests" but no actual auth directive is injected until forward-auth
    is configured per-app.
  • infra-template #10 (closed) documented the ingress.yaml field-name issue;
    this is a different gap (auth detection, not field naming).
## Problem When deploying an app that serves proprietary/client data (financials, PII, trade secrets), the deploy/scaffold workflow should detect this and **refuse to release without auth** (forward-auth or equivalent). Today it does not. ## Case study SJC dashboard deployed to `dashboard.apps.sonomajetcenter.com` (a static HTML dashboard rendering SJC's financial data — customer names, aircraft tail numbers, fuel volumes, GL balances). The deploy proceeded without any auth check. The dashboard served publicly (HTTP 200, no redirect, no auth gate) until the operator caught it and requested auth be implemented. The `enable-forward-auth` skill exists and works — the gap is that nothing **insists** on it being called before release. The operator had to notice. ## Suggested fix Add an auth-gate to the deploy/scaffold skills (or a pre-deploy check): 1. When an app is deployed/scaffolded to a `*.apps.<tenant-domain>` surface, check whether the app content is flagged as containing proprietary data. This could be: - A manifest field (e.g., `dataClassification: proprietary` in the app's manifest/ingress.yaml) - A heuristic (app serves financial/PII/client data patterns) - An explicit flag the operator sets during scaffold 2. If proprietary data is detected (or the flag is set), refuse to complete the deploy until `enable-forward-auth` has been run for the app's domain. Surface the command the operator needs to run. 3. If the operator explicitly wants a public app, require an opt-out flag (e.g., `public: true` in the ingress.yaml) with a clear audit trail. ## Impact Without this gate, any app deployed to a `*.apps` surface serves publicly by default. For proprietary data, this is a data-breach risk. The operator caught this one; the next one might not be caught. ## Related - The `enable-forward-auth` skill exists and works (tested on SJC dashboard). - The Caddyfile `*.apps` block has a comment saying "Auth middleware runs for all requests" but no actual auth directive is injected until forward-auth is configured per-app. - infra-template #10 (closed) documented the ingress.yaml field-name issue; this is a different gap (auth detection, not field naming).
Author
Owner

Fixed in dit-client PR #54 (merged). Warn-severity check (DIT-CHK-016) fires on deploy of apps with proprietary data_classes without forward-auth. Explicit dit.public: true opt-out suppresses with an Info record (DIT-CHK-017).

Fixed in dit-client PR #54 (merged). Warn-severity check (DIT-CHK-016) fires on deploy of apps with proprietary data_classes without forward-auth. Explicit dit.public: true opt-out suppresses with an Info record (DIT-CHK-017).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
deepnet/dit-releases#9
No description provided.