Secrets: Make the Migrator extensible (#67307)
* [Chore] Remove setting provider from secret service Co-authored-by: Tania B <yalyna.ts@gmail.com> Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com> * Add a ShouldBeRedacted func Co-authored-by: Tania B <yalyna.ts@gmail.com> Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com> * Secrets: Make Migrator extensible Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com> Co-authored-by: Tania B <yalyna.ts@gmail.com> * Alerting: Fix tests after refactor Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com> Co-authored-by: Tania B <yalyna.ts@gmail.com> * Remove commented code no longer used * Fix Wire bindings Co-authored-by: Tania B <yalyna.ts@gmail.com> * Add constructors to secrets * Linting * Undo undesired change --------- Co-authored-by: gamab <gabi.mabs@gmail.com> Co-authored-by: Tania B <yalyna.ts@gmail.com> Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
This commit is contained in:
co-authored by
Tania B
Joan López de la Franca Beltran
Gabriel MABILLE
gamab
parent
a50afe67d3
commit
cc65b4d46a
@@ -15,7 +15,7 @@ func SetupTestService(tb testing.TB) *Service {
|
||||
|
||||
usMock := &usagestats.UsageStatsMock{T: tb}
|
||||
provider := encryptionprovider.ProvideEncryptionProvider()
|
||||
settings := &setting.OSSImpl{Cfg: setting.NewCfg()}
|
||||
settings := setting.NewCfg()
|
||||
|
||||
service, err := ProvideEncryptionService(provider, usMock, settings)
|
||||
require.NoError(tb, err)
|
||||
|
||||
@@ -26,8 +26,8 @@ const (
|
||||
type Service struct {
|
||||
log log.Logger
|
||||
|
||||
settingsProvider setting.Provider
|
||||
usageMetrics usagestats.Service
|
||||
cfg *setting.Cfg
|
||||
usageMetrics usagestats.Service
|
||||
|
||||
ciphers map[string]encryption.Cipher
|
||||
deciphers map[string]encryption.Decipher
|
||||
@@ -36,7 +36,7 @@ type Service struct {
|
||||
func ProvideEncryptionService(
|
||||
provider encryption.Provider,
|
||||
usageMetrics usagestats.Service,
|
||||
settingsProvider setting.Provider,
|
||||
cfg *setting.Cfg,
|
||||
) (*Service, error) {
|
||||
s := &Service{
|
||||
log: log.New("encryption"),
|
||||
@@ -44,20 +44,17 @@ func ProvideEncryptionService(
|
||||
ciphers: provider.ProvideCiphers(),
|
||||
deciphers: provider.ProvideDeciphers(),
|
||||
|
||||
usageMetrics: usageMetrics,
|
||||
settingsProvider: settingsProvider,
|
||||
usageMetrics: usageMetrics,
|
||||
cfg: cfg,
|
||||
}
|
||||
|
||||
algorithm := s.settingsProvider.
|
||||
KeyValue(securitySection, encryptionAlgorithmKey).
|
||||
algorithm := s.cfg.SectionWithEnvOverrides(securitySection).Key(encryptionAlgorithmKey).
|
||||
MustString(defaultEncryptionAlgorithm)
|
||||
|
||||
if err := s.checkEncryptionAlgorithm(algorithm); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
settingsProvider.RegisterReloadHandler(securitySection, s)
|
||||
|
||||
s.registerUsageMetrics()
|
||||
|
||||
return s, nil
|
||||
@@ -86,8 +83,7 @@ func (s *Service) checkEncryptionAlgorithm(algorithm string) error {
|
||||
|
||||
func (s *Service) registerUsageMetrics() {
|
||||
s.usageMetrics.RegisterMetricsFunc(func(context.Context) (map[string]interface{}, error) {
|
||||
algorithm := s.settingsProvider.
|
||||
KeyValue(securitySection, encryptionAlgorithmKey).
|
||||
algorithm := s.cfg.SectionWithEnvOverrides(securitySection).Key(encryptionAlgorithmKey).
|
||||
MustString(defaultEncryptionAlgorithm)
|
||||
|
||||
return map[string]interface{}{
|
||||
@@ -174,8 +170,7 @@ func (s *Service) Encrypt(ctx context.Context, payload []byte, secret string) ([
|
||||
}
|
||||
}()
|
||||
|
||||
algorithm := s.settingsProvider.
|
||||
KeyValue(securitySection, encryptionAlgorithmKey).
|
||||
algorithm := s.cfg.SectionWithEnvOverrides(securitySection).Key(encryptionAlgorithmKey).
|
||||
MustString(defaultEncryptionAlgorithm)
|
||||
|
||||
cipher, ok := s.ciphers[algorithm]
|
||||
@@ -237,20 +232,3 @@ func (s *Service) GetDecryptedValue(ctx context.Context, sjd map[string][]byte,
|
||||
|
||||
return fallback
|
||||
}
|
||||
|
||||
func (s *Service) Validate(section setting.Section) error {
|
||||
s.log.Debug("Validating encryption config")
|
||||
|
||||
algorithm := section.KeyValue(encryptionAlgorithmKey).
|
||||
MustString(defaultEncryptionAlgorithm)
|
||||
|
||||
if err := s.checkEncryptionAlgorithm(algorithm); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) Reload(_ setting.Section) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ func Test_Service(t *testing.T) {
|
||||
|
||||
encProvider := provider.Provider{}
|
||||
usageStats := &usagestats.UsageStatsMock{}
|
||||
settings := &setting.OSSImpl{Cfg: setting.NewCfg()}
|
||||
settings := setting.NewCfg()
|
||||
|
||||
svc, err := ProvideEncryptionService(encProvider, usageStats, settings)
|
||||
require.NoError(t, err)
|
||||
@@ -31,7 +31,7 @@ func Test_Service(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("encrypt and decrypt with aes-cfb should work", func(t *testing.T) {
|
||||
settings.Cfg.Raw.Section(securitySection).Key(encryptionAlgorithmKey).SetValue(encryption.AesCfb)
|
||||
settings.Raw.Section(securitySection).Key(encryptionAlgorithmKey).SetValue(encryption.AesCfb)
|
||||
|
||||
encrypted, err := svc.Encrypt(ctx, []byte("grafana"), "1234")
|
||||
require.NoError(t, err)
|
||||
@@ -55,7 +55,7 @@ func Test_Service(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("encrypt with aes-gcm should fail", func(t *testing.T) {
|
||||
settings.Cfg.Raw.Section(securitySection).Key(encryptionAlgorithmKey).SetValue(encryption.AesGcm)
|
||||
settings.Raw.Section(securitySection).Key(encryptionAlgorithmKey).SetValue(encryption.AesGcm)
|
||||
|
||||
_, err := svc.Encrypt(ctx, []byte("grafana"), "1234")
|
||||
require.Error(t, err)
|
||||
@@ -77,7 +77,7 @@ func Test_Service(t *testing.T) {
|
||||
func Test_Service_MissingProvider(t *testing.T) {
|
||||
encProvider := fakeProvider{}
|
||||
usageStats := &usagestats.UsageStatsMock{}
|
||||
settings := &setting.OSSImpl{Cfg: setting.NewCfg()}
|
||||
settings := setting.NewCfg()
|
||||
|
||||
service, err := ProvideEncryptionService(encProvider, usageStats, settings)
|
||||
assert.Nil(t, service)
|
||||
|
||||
Reference in New Issue
Block a user