mirror of
https://github.com/minio/minio.git
synced 2025-03-30 09:13:41 -04:00
Use GetDuration() helper for MINIO_KMS_KEY_CACHE_INTERVAL as time.Duration (#19512)
Bonus: Use default duration of 10 seconds if invalid input < time.Second is specified
This commit is contained in:
parent
9246990496
commit
7c1f9667d1
@ -958,8 +958,7 @@ func handleKMSConfig() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kmsLogger := Logger{}
|
KMS, err := kms.NewWithConfig(kmsConf, KMSLogger{})
|
||||||
KMS, err := kms.NewWithConfig(kmsConf, kmsLogger)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal(err, "Unable to initialize a connection to KES as specified by the shell environment")
|
logger.Fatal(err, "Unable to initialize a connection to KES as specified by the shell environment")
|
||||||
}
|
}
|
||||||
|
@ -194,10 +194,15 @@ func kmsLogIf(ctx context.Context, err error, errKind ...interface{}) {
|
|||||||
logger.LogIf(ctx, "kms", err, errKind...)
|
logger.LogIf(ctx, "kms", err, errKind...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Logger permits access to module specific logging
|
// KMSLogger permits access to kms module specific logging
|
||||||
type Logger struct{}
|
type KMSLogger struct{}
|
||||||
|
|
||||||
// LogOnceIf is the implementation of LogOnceIf, accessible using the Logger interface
|
// LogOnceIf is the implementation of LogOnceIf, accessible using the Logger interface
|
||||||
func (l Logger) LogOnceIf(ctx context.Context, subsystem string, err error, id string, errKind ...interface{}) {
|
func (l KMSLogger) LogOnceIf(ctx context.Context, err error, id string, errKind ...interface{}) {
|
||||||
logger.LogOnceIf(ctx, subsystem, err, id, errKind...)
|
logger.LogOnceIf(ctx, "kms", err, id, errKind...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LogIf is the implementation of LogIf, accessible using the Logger interface
|
||||||
|
func (l KMSLogger) LogIf(ctx context.Context, err error, errKind ...interface{}) {
|
||||||
|
logger.LogIf(ctx, "kms", err, errKind...)
|
||||||
}
|
}
|
||||||
|
2
go.mod
2
go.mod
@ -54,7 +54,7 @@ require (
|
|||||||
github.com/minio/madmin-go/v3 v3.0.50
|
github.com/minio/madmin-go/v3 v3.0.50
|
||||||
github.com/minio/minio-go/v7 v7.0.69
|
github.com/minio/minio-go/v7 v7.0.69
|
||||||
github.com/minio/mux v1.9.0
|
github.com/minio/mux v1.9.0
|
||||||
github.com/minio/pkg/v2 v2.0.16
|
github.com/minio/pkg/v2 v2.0.17
|
||||||
github.com/minio/selfupdate v0.6.0
|
github.com/minio/selfupdate v0.6.0
|
||||||
github.com/minio/sha256-simd v1.0.1
|
github.com/minio/sha256-simd v1.0.1
|
||||||
github.com/minio/simdjson-go v0.4.5
|
github.com/minio/simdjson-go v0.4.5
|
||||||
|
4
go.sum
4
go.sum
@ -455,8 +455,8 @@ github.com/minio/minio-go/v7 v7.0.69 h1:l8AnsQFyY1xiwa/DaQskY4NXSLA2yrGsW5iD9nRP
|
|||||||
github.com/minio/minio-go/v7 v7.0.69/go.mod h1:XAvOPJQ5Xlzk5o3o/ArO2NMbhSGkimC+bpW/ngRKDmQ=
|
github.com/minio/minio-go/v7 v7.0.69/go.mod h1:XAvOPJQ5Xlzk5o3o/ArO2NMbhSGkimC+bpW/ngRKDmQ=
|
||||||
github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA=
|
github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA=
|
||||||
github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ=
|
github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ=
|
||||||
github.com/minio/pkg/v2 v2.0.16 h1:qBw2D08JE7fu4UORIxx0O4L09NM0wtMrw9sJRU5R1u0=
|
github.com/minio/pkg/v2 v2.0.17 h1:ndmGlitUj/eCVRPmfsAw3KlbtVNxqk0lQIvDXlcTHiQ=
|
||||||
github.com/minio/pkg/v2 v2.0.16/go.mod h1:V+OP/fKRD/qhJMQpdXXrCXcLYjGMpHKEE26zslthm5k=
|
github.com/minio/pkg/v2 v2.0.17/go.mod h1:V+OP/fKRD/qhJMQpdXXrCXcLYjGMpHKEE26zslthm5k=
|
||||||
github.com/minio/selfupdate v0.6.0 h1:i76PgT0K5xO9+hjzKcacQtO7+MjJ4JKA8Ak8XQ9DDwU=
|
github.com/minio/selfupdate v0.6.0 h1:i76PgT0K5xO9+hjzKcacQtO7+MjJ4JKA8Ak8XQ9DDwU=
|
||||||
github.com/minio/selfupdate v0.6.0/go.mod h1:bO02GTIPCMQFTEvE5h4DjYB58bCoZ35XLeBf0buTDdM=
|
github.com/minio/selfupdate v0.6.0/go.mod h1:bO02GTIPCMQFTEvE5h4DjYB58bCoZ35XLeBf0buTDdM=
|
||||||
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
||||||
|
@ -72,7 +72,7 @@ type Config struct {
|
|||||||
|
|
||||||
// NewWithConfig returns a new KMS using the given
|
// NewWithConfig returns a new KMS using the given
|
||||||
// configuration.
|
// configuration.
|
||||||
func NewWithConfig(config Config, kmsLogger Logger) (KMS, error) {
|
func NewWithConfig(config Config, logger Logger) (KMS, error) {
|
||||||
if len(config.Endpoints) == 0 {
|
if len(config.Endpoints) == 0 {
|
||||||
return nil, errors.New("kms: no server endpoints")
|
return nil, errors.New("kms: no server endpoints")
|
||||||
}
|
}
|
||||||
@ -141,7 +141,7 @@ func NewWithConfig(config Config, kmsLogger Logger) (KMS, error) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go c.refreshKMSMasterKeyCache(kmsLogger)
|
go c.refreshKMSMasterKeyCache(logger)
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,13 +150,17 @@ func NewWithConfig(config Config, kmsLogger Logger) (KMS, error) {
|
|||||||
func (c *kesClient) refreshKMSMasterKeyCache(logger Logger) {
|
func (c *kesClient) refreshKMSMasterKeyCache(logger Logger) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
defaultCacheInterval := 10
|
defaultCacheDuration := 10 * time.Second
|
||||||
cacheInterval, err := env.GetInt("EnvKESKeyCacheInterval", defaultCacheInterval)
|
cacheDuration, err := env.GetDuration(EnvKESKeyCacheInterval, defaultCacheDuration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cacheInterval = defaultCacheInterval
|
logger.LogOnceIf(ctx, fmt.Errorf("%s, using default of 10s", err.Error()), "refresh-kms-master-key")
|
||||||
|
cacheDuration = defaultCacheDuration
|
||||||
}
|
}
|
||||||
|
if cacheDuration < time.Second {
|
||||||
timer := time.NewTimer(time.Duration(cacheInterval) * time.Second)
|
logger.LogOnceIf(ctx, errors.New("cache duration is less than 1s, using default of 10s"), "refresh-kms-master-key")
|
||||||
|
cacheDuration = defaultCacheDuration
|
||||||
|
}
|
||||||
|
timer := time.NewTimer(cacheDuration)
|
||||||
defer timer.Stop()
|
defer timer.Stop()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
@ -167,7 +171,7 @@ func (c *kesClient) refreshKMSMasterKeyCache(logger Logger) {
|
|||||||
c.RefreshKey(ctx, logger)
|
c.RefreshKey(ctx, logger)
|
||||||
|
|
||||||
// Reset for the next interval
|
// Reset for the next interval
|
||||||
timer.Reset(time.Duration(cacheInterval) * time.Second)
|
timer.Reset(cacheDuration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -484,7 +488,8 @@ func (c *kesClient) Verify(ctx context.Context) []VerifyResult {
|
|||||||
|
|
||||||
// Logger interface permits access to module specific logging, in this case, for KMS
|
// Logger interface permits access to module specific logging, in this case, for KMS
|
||||||
type Logger interface {
|
type Logger interface {
|
||||||
LogOnceIf(ctx context.Context, subsystem string, err error, id string, errKind ...interface{})
|
LogOnceIf(ctx context.Context, err error, id string, errKind ...interface{})
|
||||||
|
LogIf(ctx context.Context, err error, errKind ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
// RefreshKey checks the validity of the KMS Master Key
|
// RefreshKey checks the validity of the KMS Master Key
|
||||||
@ -503,13 +508,13 @@ func (c *kesClient) RefreshKey(ctx context.Context, logger Logger) bool {
|
|||||||
// 1. Generate a new key using the KMS.
|
// 1. Generate a new key using the KMS.
|
||||||
kmsCtx, err := kmsContext.MarshalText()
|
kmsCtx, err := kmsContext.MarshalText()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.LogOnceIf(ctx, "kms", err, "refresh-kms-master-key")
|
logger.LogOnceIf(ctx, err, "refresh-kms-master-key")
|
||||||
validKey = false
|
validKey = false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
_, err = client.GenerateKey(ctx, env.Get(EnvKESKeyName, ""), kmsCtx)
|
_, err = client.GenerateKey(ctx, env.Get(EnvKESKeyName, ""), kmsCtx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.LogOnceIf(ctx, "kms", err, "refresh-kms-master-key")
|
logger.LogOnceIf(ctx, err, "refresh-kms-master-key")
|
||||||
validKey = false
|
validKey = false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user