diff --git a/lib/sidekiq/redis_connection.rb b/lib/sidekiq/redis_connection.rb index 23926184..f2c1946e 100644 --- a/lib/sidekiq/redis_connection.rb +++ b/lib/sidekiq/redis_connection.rb @@ -103,6 +103,11 @@ module Sidekiq if scrubbed_options[:password] scrubbed_options[:password] = redacted end + if scrubbed_options[:sentinels] + scrubbed_options[:sentinels].each do |sentinel| + sentinel[:password] = redacted if scrubbed_options[:password] + end + end if Sidekiq.server? Sidekiq.logger.info("Booting Sidekiq #{Sidekiq::VERSION} with redis options #{scrubbed_options}") else diff --git a/test/test_redis_connection.rb b/test/test_redis_connection.rb index 229b93fd..1c2c80ef 100644 --- a/test/test_redis_connection.rb +++ b/test/test_redis_connection.rb @@ -188,6 +188,28 @@ describe Sidekiq::RedisConnection do assert_equal redis_driver, redis.instance_variable_get(:@client).driver end end + + describe 'logging redis options' do + it 'redacts credentials' do + output = capture_logging do + Sidekiq::RedisConnection.create( + role: 'master', + master_name: 'mymaster', + sentinels: [ + { host: 'host1', port: 26379, password: 'secret'}, + { host: 'host2', port: 26379, password: 'secret'}, + { host: 'host3', port: 26379, password: 'secret'}, + ], + password: 'secret' + ) + end + + assert_includes(output, ':host=>"host1", :port=>26379, :password=>"REDACTED"') + assert_includes(output, ':host=>"host2", :port=>26379, :password=>"REDACTED"') + assert_includes(output, ':host=>"host3", :port=>26379, :password=>"REDACTED"') + assert_includes(output, ':password=>"REDACTED", :id=>') + end + end end describe ".determine_redis_provider" do