Encryption: Extend secrets service to support registering key providers (#40626)

* Draft adding kms providers

* Rename defaultProvider to currentProvider

* Add getting current provider from config

* Remove comments

* Make current provider service struct field

* Add methods to secrets service

* Test getting current provider

* Implements missing methods for fake secrets service

* Remove accidental changes

* Fix linter issue

* Update configuration examples

* Rename CurrentProvider method

* Split service interface

* Update wire

Co-authored-by: spinillos <selenepinillos@gmail.com>
This commit is contained in:
Tania B
2021-11-04 19:25:01 +02:00
committed by GitHub
co-authored by spinillos
parent 9f205cf1d7
commit e81d434edf
7 changed files with 81 additions and 2 deletions
+14 -1
View File
@@ -36,14 +36,15 @@ func ProvideSecretsService(store secrets.Store, bus bus.Bus, enc encryption.Serv
providers := map[string]secrets.Provider{
defaultProvider: grafana.New(settings, enc),
}
currentProvider := settings.KeyValue("security", "encryption_provider").MustString(defaultProvider)
s := &SecretsService{
store: store,
bus: bus,
enc: enc,
settings: settings,
currentProvider: defaultProvider,
providers: providers,
currentProvider: currentProvider,
dataKeyCache: make(map[string]dataKeyCacheItem),
}
@@ -257,3 +258,15 @@ func (s *SecretsService) dataKey(ctx context.Context, name string) ([]byte, erro
return decrypted, nil
}
func (s *SecretsService) RegisterProvider(providerID string, provider secrets.Provider) {
s.providers[providerID] = provider
}
func (s *SecretsService) CurrentProviderID() string {
return s.currentProvider
}
func (s *SecretsService) GetProviders() map[string]secrets.Provider {
return s.providers
}