Skip to content

Commit bcccfda

Browse files
add additional risk fields, github app mappings (#2281)
* add additional risk fields, github app mappings Signed-off-by: Sarah Funkhouser <147884153+golanglemonade@users.noreply.github.com> * Revove my duplicates, update OPEN -> open for webhook Signed-off-by: Sarah Funkhouser <147884153+golanglemonade@users.noreply.github.com> * fix test Signed-off-by: Sarah Funkhouser <147884153+golanglemonade@users.noreply.github.com> * fix test Signed-off-by: Sarah Funkhouser <147884153+golanglemonade@users.noreply.github.com> --------- Signed-off-by: Sarah Funkhouser <147884153+golanglemonade@users.noreply.github.com>
1 parent a9cd6cb commit bcccfda

94 files changed

Lines changed: 15257 additions & 3665 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.task/checksum/generate-ent-smart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
35368e16313c9d08f1eaa88f36d11271
1+
c624fa50f427be2982b702e4d2867226
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c5fd80247a394a25520e3676cb72f39d
1+
ab4f10c1f302b58e8894331c2638d026
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b2a93d56380ad324ca5c330b2960695c
1+
11bd8cdf78dd89d991c184f3915d031d

cli/go.mod

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ require (
4040
github.com/fsnotify/fsnotify v1.9.0 // indirect
4141
github.com/fumiama/go-docx v0.0.0-20250506085032-0c30fd09304b // indirect
4242
github.com/fumiama/imgsz v0.0.4 // indirect
43-
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
43+
github.com/fxamacker/cbor/v2 v2.9.1 // indirect
4444
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
45-
github.com/go-webauthn/webauthn v0.16.1 // indirect
45+
github.com/go-webauthn/webauthn v0.16.3 // indirect
4646
github.com/go-webauthn/x v0.2.2 // indirect
4747
github.com/goccy/go-json v0.10.5 // indirect
4848
github.com/godbus/dbus/v5 v5.1.0 // indirect
@@ -71,6 +71,7 @@ require (
7171
github.com/olekukonko/errors v1.1.0 // indirect
7272
github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0 // indirect
7373
github.com/olekukonko/tablewriter v1.1.3 // indirect
74+
github.com/philhofer/fwd v1.2.0 // indirect
7475
github.com/pkg/errors v0.9.1 // indirect
7576
github.com/redis/go-redis/v9 v9.18.0 // indirect
7677
github.com/robfig/cron/v3 v3.0.1 // indirect
@@ -79,6 +80,7 @@ require (
7980
github.com/spf13/pflag v1.0.10 // indirect
8081
github.com/stoewer/go-strcase v1.3.1 // indirect
8182
github.com/theopenlane/echox v0.3.0 // indirect
83+
github.com/tinylib/msgp v1.6.3 // indirect
8284
github.com/valyala/bytebufferpool v1.0.0 // indirect
8385
github.com/valyala/fasttemplate v1.2.2 // indirect
8486
github.com/vektah/gqlparser/v2 v2.5.32 // indirect

cli/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,12 @@ github.com/fumiama/go-docx v0.0.0-20250506085032-0c30fd09304b h1:/mxSugRc4SgN7Xg
4343
github.com/fumiama/go-docx v0.0.0-20250506085032-0c30fd09304b/go.mod h1:ssRF0IaB1hCcKIObp3FkZOsjTcAHpgii70JelNb4H8M=
4444
github.com/fumiama/imgsz v0.0.4 h1:Lsasu2hdSSFS+vnD+nvR1UkiRMK7hcpyYCC0FzgSMFI=
4545
github.com/fumiama/imgsz v0.0.4/go.mod h1:bISOQVTlw9sRytPwe8ir7tAaEmyz9hSNj9n8mXMBG0E=
46-
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
47-
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
46+
github.com/fxamacker/cbor/v2 v2.9.1 h1:2rWm8B193Ll4VdjsJY28jxs70IdDsHRWgQYAI80+rMQ=
4847
github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM=
4948
github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
5049
github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=
5150
github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
52-
github.com/go-webauthn/webauthn v0.16.1 h1:x5/SSki5/aIfogaRukqvbg/RXa3Sgxy/9vU7UfFPHKU=
53-
github.com/go-webauthn/webauthn v0.16.1/go.mod h1:RBS+rtQJMkE5VfMQ4diDA2VNrEL8OeUhp4Srz37FHbQ=
51+
github.com/go-webauthn/webauthn v0.16.3 h1:RorP0c6VbaKP0i0Jxf/vAf7EFb2lmdLW8GLKITeaN5A=
5452
github.com/go-webauthn/x v0.2.2 h1:zIiipvMbr48CXi5RG0XdBJR94kd8I5LfzHPb/q+YYmk=
5553
github.com/go-webauthn/x v0.2.2/go.mod h1:IpJ5qyWB9NRhLX3C7gIfjTU7RZLXEP6kzFkoVSE7Fz4=
5654
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
@@ -143,6 +141,7 @@ github.com/olekukonko/ll v0.1.4-0.20260115111900-9e59c2286df0/go.mod h1:b52bVQRR
143141
github.com/olekukonko/tablewriter v1.1.3 h1:VSHhghXxrP0JHl+0NnKid7WoEmd9/urKRJLysb70nnA=
144142
github.com/olekukonko/tablewriter v1.1.3/go.mod h1:9VU0knjhmMkXjnMKrZ3+L2JhhtsQ/L38BbL3CRNE8tM=
145143
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
144+
github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM=
146145
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
147146
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
148147
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -198,6 +197,7 @@ github.com/theopenlane/iam v0.27.5 h1:FuRbVK2qEiRBelMKho1asHJpk8jSdtcG9/+0MMgx7H
198197
github.com/theopenlane/iam v0.27.5/go.mod h1:KUhQ/0eDzJHn2HdU1JRPmvDE4uNHqoOAp8/K0N2S0Zc=
199198
github.com/theopenlane/utils v0.7.0 h1:tSN9PBC8Ywn2As3TDW/1TAfWsVsodrccec40oAhiZgo=
200199
github.com/theopenlane/utils v0.7.0/go.mod h1:7U9CDoVzCAFWw/JygR5ZhCKGwhHBnuJpK3Jgh1m59+w=
200+
github.com/tinylib/msgp v1.6.3 h1:bCSxiTz386UTgyT1i0MSCvdbWjVW+8sG3PjkGsZQt4s=
201201
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
202202
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
203203
github.com/valyala/fastjson v1.6.7 h1:ZE4tRy0CIkh+qDc5McjatheGX2czdn8slQjomexVpBM=

common/enums/remediation_status.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package enums
2+
3+
import "io"
4+
5+
type RemediationStatus string
6+
7+
var (
8+
RemediationStatusOpen RemediationStatus = "OPEN"
9+
RemediationStatusInProgress RemediationStatus = "IN_PROGRESS"
10+
RemediationStatusInReview RemediationStatus = "IN_REVIEW"
11+
RemediationStatusCompleted RemediationStatus = "COMPLETED"
12+
RemediationStatusWontDo RemediationStatus = "WONT_DO"
13+
RemediationStatusInvalid RemediationStatus = "INVALID"
14+
)
15+
16+
var remediationStatusValues = []RemediationStatus{RemediationStatusOpen, RemediationStatusInProgress, RemediationStatusInReview, RemediationStatusCompleted, RemediationStatusWontDo}
17+
18+
// Values returns a slice of strings that represents all the possible values of the RemediationStatus enum.
19+
// Possible default values are "OPEN", "IN_PROGRESS", "IN_REVIEW", "COMPLETED", and "WONT_DO".
20+
func (RemediationStatus) Values() []string { return stringValues(remediationStatusValues) }
21+
22+
// String returns the RemediationStatus as a string
23+
func (r RemediationStatus) String() string { return string(r) }
24+
25+
// ToRemediationStatus returns the remediation status enum based on string input
26+
func ToRemediationStatus(r string) *RemediationStatus {
27+
return parse(r, remediationStatusValues, &RemediationStatusInvalid)
28+
}
29+
30+
// MarshalGQL implement the Marshaler interface for gqlgen
31+
func (r RemediationStatus) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
32+
33+
// UnmarshalGQL implement the Unmarshaler interface for gqlgen
34+
func (r *RemediationStatus) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

common/enums/riskdecision.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package enums
2+
3+
import "io"
4+
5+
// RiskDecision is a custom type representing the various states of RiskDecision.
6+
type RiskDecision string
7+
8+
var (
9+
// RiskDecisionAvoid indicates the avoid.
10+
RiskDecisionAvoid RiskDecision = "AVOID"
11+
// RiskDecisionMitigate indicates the mitigate.
12+
RiskDecisionMitigate RiskDecision = " MITIGATE"
13+
// RiskDecisionAccept indicates the accept.
14+
RiskDecisionAccept RiskDecision = " ACCEPT"
15+
// RiskDecisionTransfer indicates the transfer.
16+
RiskDecisionTransfer RiskDecision = " TRANSFER"
17+
// RiskDecisionNone indicates the no decision. has been made
18+
RiskDecisionNone RiskDecision = " NONE"
19+
// RiskDecisionInvalid is used when an unknown or unsupported value is provided.
20+
RiskDecisionInvalid RiskDecision = "RISKDECISION_INVALID"
21+
)
22+
23+
var riskDecisionValues = []RiskDecision{
24+
RiskDecisionAvoid,
25+
RiskDecisionMitigate,
26+
RiskDecisionAccept,
27+
RiskDecisionTransfer,
28+
RiskDecisionNone,
29+
}
30+
31+
// Values returns a slice of strings representing all valid RiskDecision values.
32+
func (RiskDecision) Values() []string { return stringValues(riskDecisionValues) }
33+
34+
// String returns the string representation of the RiskDecision value.
35+
func (r RiskDecision) String() string { return string(r) }
36+
37+
// ToRiskDecision converts a string to its corresponding RiskDecision enum value.
38+
func ToRiskDecision(r string) *RiskDecision {
39+
return parse(r, riskDecisionValues, &RiskDecisionInvalid)
40+
}
41+
42+
// MarshalGQL implements the gqlgen Marshaler interface.
43+
func (r RiskDecision) MarshalGQL(w io.Writer) { marshalGQL(r, w) }
44+
45+
// UnmarshalGQL implements the gqlgen Unmarshaler interface.
46+
func (r *RiskDecision) UnmarshalGQL(v any) error { return unmarshalGQL(r, v) }

common/go.sum

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -165,19 +165,8 @@ github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IU
165165
github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
166166
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
167167
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
168-
github.com/wundergraph/astjson v1.1.0 h1:xORDosrZ87zQFJwNGe/HIHXqzpdHOFmqWgykCLVL040=
169-
github.com/wundergraph/astjson v1.1.0/go.mod h1:h12D/dxxnedtLzsKyBLK7/Oe4TAoGpRVC9nDpDrZSWw=
170-
github.com/wundergraph/go-arena v0.0.0-20251008210416-55cb97e6f68f h1:5snewyMaIpajTu4wj22L/DgrGimICqXtUVjkZInBH3Y=
171-
github.com/wundergraph/go-arena v0.0.0-20251008210416-55cb97e6f68f/go.mod h1:ROOysEHWJjLQ8FSfNxZCziagb7Qw2nXY3/vgKRh7eWw=
172168
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
173169
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
174-
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
175-
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
176-
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
177-
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
178-
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
179-
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
180-
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
181170
github.com/zclconf/go-cty v1.18.0 h1:pJ8+HNI4gFoyRNqVE37wWbJWVw43BZczFo7KUoRczaA=
182171
github.com/zclconf/go-cty v1.18.0/go.mod h1:qpnV6EDNgC1sns/AleL1fvatHw72j+S+nS+MJ+T2CSg=
183172
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-- +goose Up
2+
-- modify "remediations" table
3+
ALTER TABLE "remediations" ADD COLUMN "status" character varying NULL DEFAULT 'IN_PROGRESS';
4+
-- modify "risks" table
5+
ALTER TABLE "risks" DROP COLUMN "remediation_risks", DROP COLUMN "review_risks", ADD COLUMN "mitigated_at" timestamptz NULL, ADD COLUMN "review_required" boolean NULL DEFAULT true, ADD COLUMN "last_reviewed_at" timestamptz NULL, ADD COLUMN "review_frequency" character varying NULL DEFAULT 'YEARLY', ADD COLUMN "next_review_due_at" timestamptz NULL, ADD COLUMN "residual_score" bigint NULL, ADD COLUMN "risk_decision" character varying NULL DEFAULT ' NONE';
6+
-- create "remediation_risks" table
7+
CREATE TABLE "remediation_risks" ("remediation_id" character varying NOT NULL, "risk_id" character varying NOT NULL, PRIMARY KEY ("remediation_id", "risk_id"), CONSTRAINT "remediation_risks_remediation_id" FOREIGN KEY ("remediation_id") REFERENCES "remediations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE, CONSTRAINT "remediation_risks_risk_id" FOREIGN KEY ("risk_id") REFERENCES "risks" ("id") ON UPDATE NO ACTION ON DELETE CASCADE);
8+
-- create "review_risks" table
9+
CREATE TABLE "review_risks" ("review_id" character varying NOT NULL, "risk_id" character varying NOT NULL, PRIMARY KEY ("review_id", "risk_id"), CONSTRAINT "review_risks_review_id" FOREIGN KEY ("review_id") REFERENCES "reviews" ("id") ON UPDATE NO ACTION ON DELETE CASCADE, CONSTRAINT "review_risks_risk_id" FOREIGN KEY ("risk_id") REFERENCES "risks" ("id") ON UPDATE NO ACTION ON DELETE CASCADE);
10+
11+
-- +goose Down
12+
-- reverse: create "review_risks" table
13+
DROP TABLE "review_risks";
14+
-- reverse: create "remediation_risks" table
15+
DROP TABLE "remediation_risks";
16+
-- reverse: modify "risks" table
17+
ALTER TABLE "risks" DROP COLUMN "risk_decision", DROP COLUMN "residual_score", DROP COLUMN "next_review_due_at", DROP COLUMN "review_frequency", DROP COLUMN "last_reviewed_at", DROP COLUMN "review_required", DROP COLUMN "mitigated_at", ADD COLUMN "review_risks" character varying NULL, ADD COLUMN "remediation_risks" character varying NULL;
18+
-- reverse: modify "remediations" table
19+
ALTER TABLE "remediations" DROP COLUMN "status";
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- +goose Up
2+
-- modify "remediation_history" table
3+
ALTER TABLE "remediation_history" ADD COLUMN "status" character varying NULL DEFAULT 'IN_PROGRESS';
4+
-- modify "risk_history" table
5+
ALTER TABLE "risk_history" ADD COLUMN "mitigated_at" timestamptz NULL, ADD COLUMN "review_required" boolean NULL DEFAULT true, ADD COLUMN "last_reviewed_at" timestamptz NULL, ADD COLUMN "review_frequency" character varying NULL DEFAULT 'YEARLY', ADD COLUMN "next_review_due_at" timestamptz NULL, ADD COLUMN "residual_score" bigint NULL, ADD COLUMN "risk_decision" character varying NULL DEFAULT ' NONE';
6+
7+
-- +goose Down
8+
-- reverse: modify "risk_history" table
9+
ALTER TABLE "risk_history" DROP COLUMN "risk_decision", DROP COLUMN "residual_score", DROP COLUMN "next_review_due_at", DROP COLUMN "review_frequency", DROP COLUMN "last_reviewed_at", DROP COLUMN "review_required", DROP COLUMN "mitigated_at";
10+
-- reverse: modify "remediation_history" table
11+
ALTER TABLE "remediation_history" DROP COLUMN "status";

0 commit comments

Comments
 (0)