Repository navigation
feat: serve SecurityReport and SecurityAcknowledgement - #28
Open
mattdjenkinson wants to merge 1 commit into
Open
mattdjenkinson wants to merge 1 commit into
mattdjenkinson wants to merge 1 commit into
Conversation
- Reporters create reports in the user context and read their own without
status.internal. Names are generated; verified email and the submission
rate limit apply. Attachments use SecurityReport uploads under their own
prefix, served by securityreports/{name}/attachment.
- The Security Team logs reports for external reporters in the platform
context (spec.reporter required); those belong to the platform scope via
a new pg.Kind.CreateScope.
- Only the Security Team writes status, never sync or the controller. Phase
changes always get a timeline entry, entries are append-only, and reason,
duplicateOf, CVSS, reward amounts and advisory URLs are validated.
- SecurityAcknowledgement is a read-only view of Fixed or Disclosed reports
with public credit: name, link, month fixed, severity.
- submissions/{name}/to-security-report moves a pending submission to the
security track in one transaction: a report owned by the submitter,
copied attachments, and the submission deleted.
- The attachment download subresource is shared by both kinds.
Part of datum-cloud/enhancements#943. Closes #9.
This was referenced Nov 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Serves
SecurityReport,SecurityAcknowledgementandsubmissions/{name}/to-security-report. Closes #9.Stacked on #27 (submissions), which is on #26, #25, #23, #22 and #16. With this, every resource in the design is served.
Security reports
sec-…, unique across reporters;status.internal, can't change or withdraw them, and can't setspec.reporter.spec.reporteris required there. These belong to the platform scope, through a newpg.Kind.CreateScope, so staff can still read every report while external ones have no user owner. They show asexternalinkubectl get securityreports -o wide. Attachments can't be added to logged reports, because uploads are user-context only.reasonfor NotApplicable and Duplicate,internal.duplicateOffor Duplicate (and not itself), a credits reward amount, and an https advisory URL.AttachmentUploads withpurpose: SecurityReport, stored under their own prefix. A submission upload can't be attached to a report.securityreports/{name}/attachment?ref=serves files to the reporter and the Security Team, sharing the download code with submissions.SecurityAcknowledgement
A read-only
getandlistview of reports inFixedorDisclosedwhose reporter chose public credit with a name. It holds only the credited name, link, month fixed (from the first Fixed timeline entry, else Disclosed) and severity, newest first. The list is small, so it isn't paged and supports no selectors exceptmetadata.name.to-security-report
Staff (platform context, not sync or the controller)
POSTaSubmissionToSecurityReportto a submission that is stillPendingReview. In one transaction:affected;The response is the new report. Dry run is refused, since copying files is a side effect.
For #10
The Security Team needs its own Milo role with
securityreports(including status and attachment) separate from the feedback reviewer role. The feedback reviewer role needssubmissions/to-security-reportand must not getsecurityreports. The datum.net service account needssecurityacknowledgementsget and list.Testing