feat: let administrators view and copy encrypted integration credentials

This commit is contained in:
2026-09-27 13:48:26 +08:00
parent 5555a7b342
commit d54bdd9847
38 changed files with 905 additions and 71 deletions

View File

@@ -12,6 +12,7 @@ import (
"time"
"git.yuntuo.hk/k2safe/orbit/internal/config"
"git.yuntuo.hk/k2safe/orbit/internal/credentialvault"
"git.yuntuo.hk/k2safe/orbit/internal/observability"
"git.yuntuo.hk/k2safe/orbit/internal/retention"
"git.yuntuo.hk/k2safe/orbit/internal/storage/mysql"
@@ -41,6 +42,13 @@ func run() error {
if err != nil {
return err
}
vault, err := credentialvault.LoadFile(cfg.CredentialKeyFile)
if err != nil {
return err
}
if cfg.ConsoleApplicationAdmin != "" && vault == nil {
return errors.New("ORBIT_CREDENTIAL_KEY_FILE is required for console application administration")
}
root, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
startup, cancel := context.WithTimeout(root, 10*time.Second)
@@ -125,7 +133,7 @@ func run() error {
httpserver.RegisterWorkflows(server, instance.New(mysql.NewWorkflowInstanceStore(db)), control.New(mysql.NewWorkflowControlStore(db)), weavesignal.New(mysql.NewWorkflowSignalStore(db)), recovery.New(mysql.NewWorkflowRecoveryStore(db)))
httpserver.RegisterConsoleRetention(server, consoleAuth, retentionStore, retentionStore)
httpserver.RegisterConsoleArchiveJobs(server, consoleAuth, retentionStore, cfg.ArchiveStorageID)
consoleApplications := mysql.NewConsoleApplicationStore(db, cfg.ConsoleApplicationAdmin)
consoleApplications := mysql.NewConsoleApplicationStore(db, cfg.ConsoleApplicationAdmin, vault)
httpserver.RegisterConsoleApplications(server, consoleAuth, consoleApplications)
httpserver.RegisterConsoleScopes(server, consoleApplications)
httpserver.WrapConsoleAuth(server, consoleAuth, consoleApplications)