Skip to content

Commit f4b319a

Browse files
committed
optional tls version logic
Signed-off-by: pureiboi <[email protected]>
1 parent 6737c8d commit f4b319a

File tree

15 files changed

+152
-20
lines changed

15 files changed

+152
-20
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ We use *breaking :warning:* to mark changes that are not backward compatible (re
2222
- [#7609](https://github.com/thanos-io/thanos/pull/7609) API: Add limit param to metadata APIs (series, label names, label values).
2323
- [#7429](https://github.com/thanos-io/thanos/pull/7429): Reloader: introduce `TolerateEnvVarExpansionErrors` to allow suppressing errors when expanding environment variables in the configuration file. When set, this will ensure that the reloader won't consider the operation to fail when an unset environment variable is encountered. Note that all unset environment variables are left as is, whereas all set environment variables are expanded as usual.
2424
- [#7560](https://github.com/thanos-io/thanos/pull/7560) Query: Added the possibility of filtering rules by rule_name, rule_group or file to HTTP api.
25+
- [#7654](https://github.com/thanos-io/thanos/pull/7654) *: Add '--grpc-server-tls-min-version' flag to allow user to specify TLS version, otherwise default to TLS 1.3
2526

2627
### Changed
2728

cmd/thanos/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type grpcConfig struct {
2828
tlsSrvCert string
2929
tlsSrvKey string
3030
tlsSrvClientCA string
31+
tlsMinVersion string
3132
gracePeriod time.Duration
3233
maxConnectionAge time.Duration
3334
}
@@ -45,6 +46,9 @@ func (gc *grpcConfig) registerFlag(cmd extkingpin.FlagClause) *grpcConfig {
4546
cmd.Flag("grpc-server-tls-client-ca",
4647
"TLS CA to verify clients against. If no client CA is specified, there is no client verification on server side. (tls.NoClientCert)").
4748
Default("").StringVar(&gc.tlsSrvClientCA)
49+
cmd.Flag("grpc-server-tls-min-version",
50+
"TLS minimum version to gRPC server, unset will default to tls 1.3, allow values: [\"1.0\", \"1.1\", \"1.2\", \"1.3\"]").
51+
Default("1.3").StringVar(&gc.tlsMinVersion)
4852
cmd.Flag("grpc-server-max-connection-age", "The grpc server max connection age. This controls how often to re-establish connections and redo TLS handshakes.").
4953
Default("60m").DurationVar(&gc.maxConnectionAge)
5054
cmd.Flag("grpc-grace-period",

cmd/thanos/query.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -785,7 +785,7 @@ func runQuery(
785785
}
786786
// Start query (proxy) gRPC StoreAPI.
787787
{
788-
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), grpcServerConfig.tlsSrvCert, grpcServerConfig.tlsSrvKey, grpcServerConfig.tlsSrvClientCA)
788+
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), grpcServerConfig.tlsSrvCert, grpcServerConfig.tlsSrvKey, grpcServerConfig.tlsSrvClientCA, grpcServerConfig.tlsMinVersion)
789789
if err != nil {
790790
return errors.Wrap(err, "setup gRPC server")
791791
}

cmd/thanos/receive.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func runReceive(
136136

137137
level.Info(logger).Log("mode", receiveMode, "msg", "running receive")
138138

139-
rwTLSConfig, err := tls.NewServerConfig(log.With(logger, "protocol", "HTTP"), conf.rwServerCert, conf.rwServerKey, conf.rwServerClientCA)
139+
rwTLSConfig, err := tls.NewServerConfig(log.With(logger, "protocol", "HTTP"), conf.rwServerCert, conf.rwServerKey, conf.rwServerClientCA, conf.rwServerTlsMinVersion)
140140
if err != nil {
141141
return err
142142
}
@@ -316,7 +316,7 @@ func runReceive(
316316

317317
level.Debug(logger).Log("msg", "setting up gRPC server")
318318
{
319-
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), conf.grpcConfig.tlsSrvCert, conf.grpcConfig.tlsSrvKey, conf.grpcConfig.tlsSrvClientCA)
319+
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), conf.grpcConfig.tlsSrvCert, conf.grpcConfig.tlsSrvKey, conf.grpcConfig.tlsSrvClientCA, conf.grpcConfig.tlsMinVersion)
320320
if err != nil {
321321
return errors.Wrap(err, "setup gRPC server")
322322
}
@@ -782,16 +782,17 @@ type receiveConfig struct {
782782

783783
grpcConfig grpcConfig
784784

785-
rwAddress string
786-
rwServerCert string
787-
rwServerKey string
788-
rwServerClientCA string
789-
rwClientCert string
790-
rwClientKey string
791-
rwClientSecure bool
792-
rwClientServerCA string
793-
rwClientServerName string
794-
rwClientSkipVerify bool
785+
rwAddress string
786+
rwServerCert string
787+
rwServerKey string
788+
rwServerClientCA string
789+
rwServerTlsMinVersion string
790+
rwClientCert string
791+
rwClientKey string
792+
rwClientSecure bool
793+
rwClientServerCA string
794+
rwClientServerName string
795+
rwClientSkipVerify bool
795796

796797
dataDir string
797798
labelStrs []string
@@ -861,6 +862,8 @@ func (rc *receiveConfig) registerFlag(cmd extkingpin.FlagClause) {
861862

862863
cmd.Flag("remote-write.server-tls-client-ca", "TLS CA to verify clients against. If no client CA is specified, there is no client verification on server side. (tls.NoClientCert)").Default("").StringVar(&rc.rwServerClientCA)
863864

865+
cmd.Flag("remote-write.server-tls-min-version", "TLS version for the gRPC server, leave blank to default to TLS 1.3, allow values: [\"1.0\", \"1.1\", \"1.2\", \"1.3\"]").Default("1.3").StringVar(&rc.rwServerTlsMinVersion)
866+
864867
cmd.Flag("remote-write.client-tls-cert", "TLS Certificates to use to identify this client to the server.").Default("").StringVar(&rc.rwClientCert)
865868

866869
cmd.Flag("remote-write.client-tls-key", "TLS Key for the client's certificate.").Default("").StringVar(&rc.rwClientKey)

cmd/thanos/rule.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ func runRule(
722722
)
723723

724724
// Start gRPC server.
725-
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), conf.grpc.tlsSrvCert, conf.grpc.tlsSrvKey, conf.grpc.tlsSrvClientCA)
725+
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), conf.grpc.tlsSrvCert, conf.grpc.tlsSrvKey, conf.grpc.tlsSrvClientCA, conf.grpc.tlsMinVersion)
726726
if err != nil {
727727
return errors.Wrap(err, "setup gRPC server")
728728
}

cmd/thanos/sidecar.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ func runSidecar(
303303
}
304304

305305
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"),
306-
conf.grpc.tlsSrvCert, conf.grpc.tlsSrvKey, conf.grpc.tlsSrvClientCA)
306+
conf.grpc.tlsSrvCert, conf.grpc.tlsSrvKey, conf.grpc.tlsSrvClientCA, conf.grpc.tlsMinVersion)
307307
if err != nil {
308308
return errors.Wrap(err, "setup gRPC server")
309309
}

cmd/thanos/store.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ func runStore(
516516

517517
// Start query (proxy) gRPC StoreAPI.
518518
{
519-
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), conf.grpcConfig.tlsSrvCert, conf.grpcConfig.tlsSrvKey, conf.grpcConfig.tlsSrvClientCA)
519+
tlsCfg, err := tls.NewServerConfig(log.With(logger, "protocol", "gRPC"), conf.grpcConfig.tlsSrvCert, conf.grpcConfig.tlsSrvKey, conf.grpcConfig.tlsSrvClientCA, conf.grpcConfig.tlsMinVersion)
520520
if err != nil {
521521
return errors.Wrap(err, "setup gRPC server")
522522
}

docs/components/query.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,10 @@ Flags:
353353
verification on server side. (tls.NoClientCert)
354354
--grpc-server-tls-key="" TLS Key for the gRPC server, leave blank to
355355
disable TLS
356+
--grpc-server-tls-min-version="1.3"
357+
TLS minimum version to gRPC server, unset will
358+
default to tls 1.3, allow values: ["1.0",
359+
"1.1", "1.2", "1.3"]
356360
-h, --help Show context-sensitive help (also try
357361
--help-long and --help-man).
358362
--http-address="0.0.0.0:10902"

docs/components/receive.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,10 @@ Flags:
338338
verification on server side. (tls.NoClientCert)
339339
--grpc-server-tls-key="" TLS Key for the gRPC server, leave blank to
340340
disable TLS
341+
--grpc-server-tls-min-version="1.3"
342+
TLS minimum version to gRPC server, unset will
343+
default to tls 1.3, allow values: ["1.0",
344+
"1.1", "1.2", "1.3"]
341345
--hash-func= Specify which hash function to use when
342346
calculating the hashes of produced files.
343347
If no function has been specified, it does not
@@ -460,6 +464,10 @@ Flags:
460464
--remote-write.server-tls-key=""
461465
TLS Key for the HTTP server, leave blank to
462466
disable TLS.
467+
--remote-write.server-tls-min-version="1.3"
468+
TLS version for the gRPC server, leave blank
469+
to default to TLS 1.3, allow values: ["1.0",
470+
"1.1", "1.2", "1.3"]
463471
--request.logging-config=<content>
464472
Alternative to 'request.logging-config-file'
465473
flag (mutually exclusive). Content

docs/components/rule.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,10 @@ Flags:
352352
verification on server side. (tls.NoClientCert)
353353
--grpc-server-tls-key="" TLS Key for the gRPC server, leave blank to
354354
disable TLS
355+
--grpc-server-tls-min-version="1.3"
356+
TLS minimum version to gRPC server, unset will
357+
default to tls 1.3, allow values: ["1.0",
358+
"1.1", "1.2", "1.3"]
355359
--hash-func= Specify which hash function to use when
356360
calculating the hashes of produced files.
357361
If no function has been specified, it does not

0 commit comments

Comments
 (0)