Encryption: Start move to data keys

This commit is contained in:
Emil Tullstedt
2020-10-08 17:06:38 +02:00
parent 11e6cc10d4
commit 2f4a097e53
8 changed files with 326 additions and 1 deletions
+27
View File
@@ -0,0 +1,27 @@
package sqlstore
import (
"fmt"
"github.com/grafana/grafana/pkg/models"
"xorm.io/xorm"
)
func (ss *SqlStore) GetDataKey(name string) (*models.DataKey, error) {
return getDataKey(name, ss.engine)
}
func getDataKey(name string, engine *xorm.Engine) (*models.DataKey, error) {
dataKey := &models.DataKey{Name: name}
exists, err := engine.Get(dataKey)
if err != nil {
sqlog.Error("Failed getting data key", "err", err, "name", name)
return nil, fmt.Errorf("failed getting data key: %w", err)
}
if !exists {
return nil, models.ErrDataKeyNotFound
}
return dataKey, nil
}
@@ -0,0 +1,20 @@
package migrations
import "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
func addDataKeysMigrations(mg *migrator.Migrator) {
dataKeysV1 := migrator.Table{
Name: "data_keys",
Columns: []*migrator.Column{
{Name: "name", Type: migrator.DB_NVarchar, Length: 50, IsPrimaryKey: true},
{Name: "active", Type: migrator.DB_Bool},
{Name: "provider", Type: migrator.DB_NVarchar, Length: 50, Nullable: true},
{Name: "encrypted_data", Type: migrator.DB_Blob, Nullable: false},
{Name: "created", Type: migrator.DB_DateTime, Nullable: false},
{Name: "updated", Type: migrator.DB_DateTime, Nullable: false},
},
Indices: []*migrator.Index{},
}
mg.AddMigration("create data keys table", migrator.NewAddTableMigration(dataKeysV1))
}
@@ -34,6 +34,7 @@ func AddMigrations(mg *Migrator) {
addServerlockMigrations(mg)
addUserAuthTokenMigrations(mg)
addCacheMigration(mg)
addDataKeysMigrations(mg)
}
func addMigrationLogMigrations(mg *Migrator) {