Skip to content

Commit 175c10e

Browse files
committed
obfuscate workspace module source and version
1 parent 6afa1cd commit 175c10e

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

coderd/telemetry/telemetry.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -677,12 +677,20 @@ func ConvertWorkspaceResourceMetadata(metadata database.WorkspaceResourceMetadat
677677
}
678678

679679
func ConvertWorkspaceModule(module database.WorkspaceModule) WorkspaceModule {
680+
isCoderModule := strings.Contains(module.Source, "registry.coder.com")
681+
source := module.Source
682+
version := module.Version
683+
if !isCoderModule {
684+
source = fmt.Sprintf("%x", sha256.Sum256([]byte(source)))
685+
version = fmt.Sprintf("%x", sha256.Sum256([]byte(version)))
686+
}
687+
680688
return WorkspaceModule{
681689
ID: module.ID,
682690
JobID: module.JobID,
683691
Transition: module.Transition,
684-
Source: module.Source,
685-
Version: module.Version,
692+
Source: source,
693+
Version: version,
686694
Key: module.Key,
687695
CreatedAt: module.CreatedAt,
688696
}

coderd/telemetry/telemetry_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"net/http"
66
"net/http/httptest"
77
"net/url"
8+
"sort"
89
"testing"
910
"time"
1011

@@ -122,6 +123,28 @@ func TestTelemetry(t *testing.T) {
122123
require.Len(t, snapshot.Users, 1)
123124
require.Equal(t, snapshot.Users[0].EmailHashed, "bb44bf07cf9a2db0554bba63a03d822c927deae77df101874496df5a6a3e896d@coder.com")
124125
})
126+
t.Run("HashedModule", func(t *testing.T) {
127+
t.Parallel()
128+
db := dbmem.New()
129+
_ = dbgen.WorkspaceModule(t, db, database.WorkspaceModule{
130+
Source: "registry.coder.com/terraform/aws",
131+
Version: "1.0.0",
132+
})
133+
_ = dbgen.WorkspaceModule(t, db, database.WorkspaceModule{
134+
Source: "internal-url.com/some-module",
135+
Version: "1.0.0",
136+
})
137+
_, snapshot := collectSnapshot(t, db, nil)
138+
require.Len(t, snapshot.WorkspaceModules, 2)
139+
modules := snapshot.WorkspaceModules
140+
sort.Slice(modules, func(i, j int) bool {
141+
return modules[i].Source < modules[j].Source
142+
})
143+
require.Equal(t, modules[0].Source, "921c61d6f3eef5118f3cae658d1518b378c5b02a4955a766c791440894d989c5")
144+
require.Equal(t, modules[0].Version, "92521fc3cbd964bdc9f584a991b89fddaa5754ed1cc96d6d42445338669c1305")
145+
require.Equal(t, modules[1].Source, "registry.coder.com/terraform/aws")
146+
require.Equal(t, modules[1].Version, "1.0.0")
147+
})
125148
}
126149

127150
// nolint:paralleltest

0 commit comments

Comments
 (0)