阿里的 Redis 连环炮面试题,看的资料一个也没用上

Redis 这类开源的 Key-Value 数据库被越来越多的公司所采用,于是乎,Redis 已经是成了面试必问的技术了。

昨天,我在外买菜期间,有网友私信我,说上周面试阿里,面了 Redis 的知识,命令之类的一个也没问,只问了 Redis 的密码配置和 Jedis 对配置文件的加解密处理。他当场懵圈了,面试之前看了很多 Redis 的知识,一个也没问到。

阿里的 Redis 连环炮面试题,看的资料一个也没用上
Redis 连环炮面试题

今天,我们就一起来说说,Redis 的密码认证配置和 Jedis 的对配置的加密密码的处理!

公司越大,安全性要求越高。为了不让你的数据裸奔,所以,安全认证很有必要。Redis 的密码配置有两种方案。

1、直接在 redis.conf 中配置。

阿里的 Redis 连环炮面试题,看的资料一个也没用上
Redis 配置密码

比如,我的 redis.conf 在 /usr/local/etc/redis.conf 位置,那么我就编辑这个配置文件。

找到 #requirepass foobared 这一行,去掉前面的 # 号。设置密码为:xttblog。

requirepass xttblog

保存文件,然后重启 Redis。

brew services restart redis

除了,这一种配置密码的方法,还有一种通过命令的形式修改密码。

2、通过 config set requirepass 命令,配置修改密码。

redis-cli -h 127.0.0.1 -p 6379 -a xttblog

连接上了之后,配置或修改新密码。

config set requirepass xttblog_new_password

然后,无需重启,之后的新链接都必须通过新密码才能才能完成认证。

但是这种方式有一个问题,那就是,当服务重启之后,新密码就失效了,认证密码又被重置成了配置文件中的密码。

需要注意的是,一旦你配置了密码。那么你连接的 Jedis,集群中的 slave 都需要配置密码,否则就无法正常使用了。

配置密码后,Jedis 的使用就非常简单了。只需要在 yml 中,配置密码认证即可。

spring:
    redis:
        host: 127.0.0.1
        port: 6379
        password: xttblog_new_password
        database: 8

但是,只这样还不行,还需要把配置文件中的内容给加密了。然后在 JedisPool 中,对要使用的密码进行解密。

@Bean
public JedisPool pool(JedisPoolConfig config, JedisProperties jedisProperties) {
    return new JedisPool(config, jedisProperties.getHost(), jedisProperties.getPort(), 5000,
            decryptPwd(jedisProperties.getPassword()), jedisProperties.getDatabase());
}
private String decryptPwd(String pwd){
    //省略解密代码
}

除此之外,大家都知道阿里面试的套路。光会这些还不行,比如,对方继续套路你,原生 Redis 通过 config get 命令可能获取到服务端敏感信息。针对这种情况,如何解决?

如何检验/校验密码设置的复杂度?如何防止 Redis 认证的暴力破解?如何限制访问的 IP 范围?登录认证时,能否记录日志?怎么记录?配置文件中的明文密码如何加密处理?

以上,希望大家对有所帮助。知道自己的不足,赶紧充电吧!

阿里的 Redis 连环炮面试题,看的资料一个也没用上

: » 阿里的 Redis 连环炮面试题,看的资料一个也没用上

原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/252131.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论