Skip to content

Commit 6f4a504

Browse files
committed
feat: add key rotation
1 parent bfdc29f commit 6f4a504

File tree

14 files changed

+513
-0
lines changed

14 files changed

+513
-0
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,10 @@ func (q *querier) DeleteGroupMemberFromGroup(ctx context.Context, arg database.D
10781078
return update(q.log, q.auth, fetch, q.db.DeleteGroupMemberFromGroup)(ctx, arg)
10791079
}
10801080

1081+
func (q *querier) DeleteKey(ctx context.Context, arg database.DeleteKeyParams) error {
1082+
panic("not implemented")
1083+
}
1084+
10811085
func (q *querier) DeleteLicense(ctx context.Context, id int32) (int32, error) {
10821086
err := deleteQ(q.log, q.auth, q.db.GetLicenseByID, func(ctx context.Context, id int32) error {
10831087
_, err := q.db.DeleteLicense(ctx, id)
@@ -1542,6 +1546,14 @@ func (q *querier) GetJFrogXrayScanByWorkspaceAndAgentID(ctx context.Context, arg
15421546
return q.db.GetJFrogXrayScanByWorkspaceAndAgentID(ctx, arg)
15431547
}
15441548

1549+
func (q *querier) GetKeyByFeatureAndSequence(ctx context.Context, arg database.GetKeyByFeatureAndSequenceParams) (database.Key, error) {
1550+
panic("not implemented")
1551+
}
1552+
1553+
func (q *querier) GetKeys(ctx context.Context) ([]database.Key, error) {
1554+
panic("not implemented")
1555+
}
1556+
15451557
func (q *querier) GetLastUpdateCheck(ctx context.Context) (string, error) {
15461558
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceSystem); err != nil {
15471559
return "", err
@@ -2726,6 +2738,10 @@ func (q *querier) InsertGroupMember(ctx context.Context, arg database.InsertGrou
27262738
return update(q.log, q.auth, fetch, q.db.InsertGroupMember)(ctx, arg)
27272739
}
27282740

2741+
func (q *querier) InsertKey(ctx context.Context, arg database.InsertKeyParams) error {
2742+
panic("not implemented")
2743+
}
2744+
27292745
func (q *querier) InsertLicense(ctx context.Context, arg database.InsertLicenseParams) (database.License, error) {
27302746
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceLicense); err != nil {
27312747
return database.License{}, err
@@ -3212,6 +3228,10 @@ func (q *querier) UpdateInactiveUsersToDormant(ctx context.Context, lastSeenAfte
32123228
return q.db.UpdateInactiveUsersToDormant(ctx, lastSeenAfter)
32133229
}
32143230

3231+
func (q *querier) UpdateKeyDeletesAt(ctx context.Context, arg database.UpdateKeyDeletesAtParams) error {
3232+
panic("not implemented")
3233+
}
3234+
32153235
func (q *querier) UpdateMemberRoles(ctx context.Context, arg database.UpdateMemberRolesParams) (database.OrganizationMember, error) {
32163236
// Authorized fetch will check that the actor has read access to the org member since the org member is returned.
32173237
member, err := database.ExpectOne(q.OrganizationMembers(ctx, database.OrganizationMembersParams{

coderd/database/dbmem/dbmem.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1527,6 +1527,15 @@ func (q *FakeQuerier) DeleteGroupMemberFromGroup(_ context.Context, arg database
15271527
return nil
15281528
}
15291529

1530+
func (q *FakeQuerier) DeleteKey(ctx context.Context, arg database.DeleteKeyParams) error {
1531+
err := validateDatabaseType(arg)
1532+
if err != nil {
1533+
return err
1534+
}
1535+
1536+
panic("not implemented")
1537+
}
1538+
15301539
func (q *FakeQuerier) DeleteLicense(_ context.Context, id int32) (int32, error) {
15311540
q.mutex.Lock()
15321541
defer q.mutex.Unlock()
@@ -2796,6 +2805,19 @@ func (q *FakeQuerier) GetJFrogXrayScanByWorkspaceAndAgentID(_ context.Context, a
27962805
return database.JfrogXrayScan{}, sql.ErrNoRows
27972806
}
27982807

2808+
func (q *FakeQuerier) GetKeyByFeatureAndSequence(ctx context.Context, arg database.GetKeyByFeatureAndSequenceParams) (database.Key, error) {
2809+
err := validateDatabaseType(arg)
2810+
if err != nil {
2811+
return database.Key{}, err
2812+
}
2813+
2814+
panic("not implemented")
2815+
}
2816+
2817+
func (q *FakeQuerier) GetKeys(ctx context.Context) ([]database.Key, error) {
2818+
panic("not implemented")
2819+
}
2820+
27992821
func (q *FakeQuerier) GetLastUpdateCheck(_ context.Context) (string, error) {
28002822
q.mutex.RLock()
28012823
defer q.mutex.RUnlock()
@@ -6492,6 +6514,15 @@ func (q *FakeQuerier) InsertGroupMember(_ context.Context, arg database.InsertGr
64926514
return nil
64936515
}
64946516

6517+
func (q *FakeQuerier) InsertKey(ctx context.Context, arg database.InsertKeyParams) error {
6518+
err := validateDatabaseType(arg)
6519+
if err != nil {
6520+
return err
6521+
}
6522+
6523+
panic("not implemented")
6524+
}
6525+
64956526
func (q *FakeQuerier) InsertLicense(
64966527
_ context.Context, arg database.InsertLicenseParams,
64976528
) (database.License, error) {
@@ -7890,6 +7921,15 @@ func (q *FakeQuerier) UpdateInactiveUsersToDormant(_ context.Context, params dat
78907921
return updated, nil
78917922
}
78927923

7924+
func (q *FakeQuerier) UpdateKeyDeletesAt(ctx context.Context, arg database.UpdateKeyDeletesAtParams) error {
7925+
err := validateDatabaseType(arg)
7926+
if err != nil {
7927+
return err
7928+
}
7929+
7930+
panic("not implemented")
7931+
}
7932+
78937933
func (q *FakeQuerier) UpdateMemberRoles(_ context.Context, arg database.UpdateMemberRolesParams) (database.OrganizationMember, error) {
78947934
if err := validateDatabaseType(arg); err != nil {
78957935
return database.OrganizationMember{}, err

coderd/database/dbmetrics/dbmetrics.go

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dump.sql

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
DROP TABLE "keys";
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATE TABLE "keys" (
2+
"feature" text NOT NULL,
3+
"sequence" integer NOT NULL,
4+
"secret" text NULL,
5+
"starts_at" timestamptz NOT NULL,
6+
"deletes_at" timestamptz NULL,
7+
PRIMARY KEY ("feature", "sequence")
8+
);

coderd/database/modelmethods.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,3 +447,7 @@ func (r GetAuthorizationUserRolesRow) RoleNames() ([]rbac.RoleIdentifier, error)
447447
}
448448
return names, nil
449449
}
450+
451+
func (k Key) ExpiresAt(keyDuration time.Duration) time.Time {
452+
return k.StartsAt.Add(keyDuration)
453+
}

coderd/database/models.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)