mirror of
https://github.com/pgsty/minio.git
synced 2026-07-20 04:30:26 +03:00
fix: enable AssumeRoleWithCertificate API only when asked (#13410)
This is a breaking change but we need to do this to avoid issues discussed in #13409 based on discussions from #13371 fixes #13371 fixes #13409
This commit is contained in:
@@ -23,16 +23,15 @@ import (
|
||||
|
||||
"github.com/minio/minio/internal/auth"
|
||||
"github.com/minio/minio/internal/config"
|
||||
"github.com/minio/minio/internal/logger"
|
||||
"github.com/minio/pkg/env"
|
||||
)
|
||||
|
||||
const (
|
||||
// EnvEnabled is an environment variable that controls whether the X.509
|
||||
// EnvIdentityTLSEnabled is an environment variable that controls whether the X.509
|
||||
// TLS STS API is enabled. By default, if not set, it is enabled.
|
||||
EnvEnabled = "MINIO_IDENTITY_TLS_ENABLE"
|
||||
EnvIdentityTLSEnabled = "MINIO_IDENTITY_TLS_ENABLE"
|
||||
|
||||
// EnvSkipVerify is an environment variable that controls whether
|
||||
// EnvIdentityTLSSkipVerify is an environment variable that controls whether
|
||||
// MinIO verifies the client certificate present by the client
|
||||
// when requesting temp. credentials.
|
||||
// By default, MinIO always verify the client certificate.
|
||||
@@ -41,7 +40,7 @@ const (
|
||||
// when debugging or testing a setup since it allows arbitrary
|
||||
// clients to obtain temp. credentials with arbitrary policy
|
||||
// permissions - including admin permissions.
|
||||
EnvSkipVerify = "MINIO_IDENTITY_TLS_SKIP_VERIFY"
|
||||
EnvIdentityTLSSkipVerify = "MINIO_IDENTITY_TLS_SKIP_VERIFY"
|
||||
)
|
||||
|
||||
// Config contains the STS TLS configuration for generating temp.
|
||||
@@ -86,14 +85,11 @@ func Lookup(kvs config.KVS) (Config, error) {
|
||||
if err := config.CheckValidKeys(config.IdentityTLSSubSys, kvs, DefaultKVS); err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
insecureSkipVerify, err := config.ParseBool(env.Get(EnvSkipVerify, kvs.Get(skipVerify)))
|
||||
insecureSkipVerify, err := config.ParseBool(env.Get(EnvIdentityTLSSkipVerify, kvs.Get(skipVerify)))
|
||||
if err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
if insecureSkipVerify {
|
||||
logger.Info("CRITICAL: enabling MINIO_IDENTITY_TLS_SKIP_VERIFY is not recommended in a production environment")
|
||||
}
|
||||
enabled, err := config.ParseBool(env.Get(EnvEnabled, config.EnableOn))
|
||||
enabled, err := config.ParseBool(env.Get(EnvIdentityTLSEnabled, ""))
|
||||
if err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import (
|
||||
|
||||
"github.com/minio/minio/internal/config"
|
||||
"github.com/minio/minio/internal/config/api"
|
||||
xtls "github.com/minio/minio/internal/config/identity/tls"
|
||||
"github.com/minio/minio/internal/fips"
|
||||
"github.com/minio/pkg/certs"
|
||||
"github.com/minio/pkg/env"
|
||||
@@ -163,7 +164,6 @@ func (srv *Server) Shutdown() error {
|
||||
// NewServer - creates new HTTP server using given arguments.
|
||||
func NewServer(addrs []string, handler http.Handler, getCert certs.GetCertificateFunc) *Server {
|
||||
secureCiphers := env.Get(api.EnvAPISecureCiphers, config.EnableOn) == config.EnableOn
|
||||
|
||||
var tlsConfig *tls.Config
|
||||
if getCert != nil {
|
||||
tlsConfig = &tls.Config{
|
||||
@@ -171,8 +171,13 @@ func NewServer(addrs []string, handler http.Handler, getCert certs.GetCertificat
|
||||
MinVersion: tls.VersionTLS12,
|
||||
NextProtos: []string{"http/1.1", "h2"},
|
||||
GetCertificate: getCert,
|
||||
ClientAuth: tls.RequestClientCert,
|
||||
}
|
||||
|
||||
tlsClientIdentity := env.Get(xtls.EnvIdentityTLSEnabled, "") == config.EnableOn
|
||||
if tlsClientIdentity {
|
||||
tlsConfig.ClientAuth = tls.RequestClientCert
|
||||
}
|
||||
|
||||
if secureCiphers || fips.Enabled {
|
||||
tlsConfig.CipherSuites = fips.CipherSuitesTLS()
|
||||
tlsConfig.CurvePreferences = fips.EllipticCurvesTLS()
|
||||
|
||||
Reference in New Issue
Block a user