mirror of
https://github.com/GlueOps/autoglue.git
synced 2026-02-13 04:40:05 +01:00
feat: sdk migration in progress
This commit is contained in:
83
cmd/encryption.go
Normal file
83
cmd/encryption.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"github.com/glueops/autoglue/internal/app"
|
||||
"github.com/glueops/autoglue/internal/models"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var rotateMasterCmd = &cobra.Command{
|
||||
Use: "rotate-master",
|
||||
Short: "Generate and activate a new master encryption key",
|
||||
Args: cobra.NoArgs,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
rt := app.NewRuntime()
|
||||
db := rt.DB
|
||||
|
||||
key := make([]byte, 32)
|
||||
if _, err := io.ReadFull(rand.Reader, key); err != nil {
|
||||
return fmt.Errorf("generating random key: %w", err)
|
||||
}
|
||||
|
||||
encoded := base64.StdEncoding.EncodeToString(key)
|
||||
|
||||
if err := db.Model(&models.MasterKey{}).
|
||||
Where("is_active = ?", true).
|
||||
Update("is_active", false).Error; err != nil {
|
||||
return fmt.Errorf("deactivating previous key: %w", err)
|
||||
}
|
||||
|
||||
if err := db.Create(&models.MasterKey{
|
||||
Key: encoded,
|
||||
IsActive: true,
|
||||
}).Error; err != nil {
|
||||
return fmt.Errorf("creating new master key: %w", err)
|
||||
}
|
||||
|
||||
fmt.Println("Master key rotated successfully")
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var createMasterCmd = &cobra.Command{
|
||||
Use: "create-master",
|
||||
Short: "Generate and activate a new master encryption key",
|
||||
Args: cobra.NoArgs,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
rt := app.NewRuntime()
|
||||
db := rt.DB
|
||||
key := make([]byte, 32)
|
||||
if _, err := io.ReadFull(rand.Reader, key); err != nil {
|
||||
return fmt.Errorf("generating random key: %w", err)
|
||||
}
|
||||
|
||||
encoded := base64.StdEncoding.EncodeToString(key)
|
||||
|
||||
if err := db.Create(&models.MasterKey{
|
||||
Key: encoded,
|
||||
IsActive: true,
|
||||
}).Error; err != nil {
|
||||
return fmt.Errorf("creating master key: %w", err)
|
||||
}
|
||||
|
||||
fmt.Println("Master key created successfully")
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
var encryptCmd = &cobra.Command{
|
||||
Use: "encrypt",
|
||||
Short: "Manage autoglue encryption keys",
|
||||
Long: "Manage autoglue master encryption keys used for securing data.",
|
||||
}
|
||||
|
||||
func init() {
|
||||
encryptCmd.AddCommand(rotateMasterCmd)
|
||||
encryptCmd.AddCommand(createMasterCmd)
|
||||
rootCmd.AddCommand(encryptCmd)
|
||||
}
|
||||
Reference in New Issue
Block a user