Redis 6.0부터 도입된 강력한 보안 기능으로, 사용자별 권한을 세밀하게 제어할 수 있습니다.
STEP 1 : 레디스 설치
STEP 2 : redis-cli 접속(6379 포트)
redis-cli를 이용하여 레디스 서버에 접속합니다.redis-cli -p 6379
STEP 3 : ACL 사용 가능 여부 확인
127.0.0.1:6379> ACL HELP
STEP 4 : 평문패스워드를 해시값으로 만든다. 레디스 버전별 OS별 에러가 날수 있어 여러방법 나열 함
ACL GENPASS 32 uracle123
ACL GENPASS uracle1234
echo -n "uracle1234" | sha256sum
echo -n "uracle1234" | shasum -a 256
STEP 5 : 레디스 암호화된 패스워드로 계정 생성 확인! 생성된 해시키앞에 반드시 "#"을 붙여야 함.
# uracle 계정에 해시 암호 등록
ACL SETUSER uracle on #6f35b4486847293526065566f12255776d52f6f36c568f638848f76694856f6e ~* +@all
# 보안을 위해 기존 default 계정 비활성화
ACL SETUSER default off
# 설정을 redis.conf 파일에 영구 저장 (중요)
ACL SAVE
# 접속 종료
exit
STEP 6 : 센티넬 암호화된 패스워드로 계정 생성
# 센티넬 접속
redis-cli -p 26379
# default 계정에 해시 암호 설정 (스프링은 유저명을 안 보내므로 default를 써야 함)
ACL SETUSER default on #6f35b4486847293526065566f12255776d52f6f36c568f638848f76694856f6e ~* +@all
# 3. 설정을 sentinel.conf 파일에 영구 저장 (중요)
ACL SAVE
STEP 7 : sentinel.conf 파일 아래 부분 셋팅(해당 부분은 평문 설정만 가능함. 한계 파일 권한 600으로 )
# 센티넬 끼리 서로 통신시 사용암호
sentinel sentinel-pass uracle1234
# 센티넬이 레디스에 접속할때 사용할 이름
sentinel sentinel-user mymaster uracle
# 센티넬이 레디스에 접속할 때 쓸 암호
sentinel auth-pass mymaster uracle1234
STEP 8 : 센티넬 설정 파일에는 노드 간 통신을 위한 평문 암호(sentinel-pass)가 여전히 존재하므로, 파일 권한변경
chmod 600 /path/to/redis.conf
chmod 600 /path/to/sentinel.conf
redis.master.hostName=172.16.120.72
redis.master.port=6379
redis.master.database=14
redis.master.username=uracle
redis.master.password=ENC(f+5UGh5wXTIzRHm70JSYKA==)
redis.master.username=uracle
redis.master.password=ENC(f+5UGh5wXTIzRHm70JSYKA==)
sentinel.ip1=172.16.120.72
sentinel.port1=26379
#sentinel.ip2=211.241.199.216
#sentinel.port2=26379
#sentinel.ip3=211.241.199.217
#sentinel.port3=26379
redis.sentinel.password=ENC(f+5UGh5wXTIzRHm70JSYKA==)
<value>${redis.node2.hostName}:${redis.node2.port}</value> 주석을 플어줘야 함.redis.master.hostName=redis-cluster.usw2.cache.amazonaws.com
redis.master.port=6379
redis.master.database=14
redis.master.username=uracle
redis.master.password=ENC(f+5UGh5wXTIzRHm70JSYKA==)
redis.node2.hostName=redis-cluster.usw2.cache.amazonaws.com
redis.node2.port=6379
<master>
<host>127.0.0.1</host>
<port>6379</port>
<database>15</database>
<username>uracle</username>
<password>ENC(f+5UGh5wXTIzRHm70JSYKA==)</password>
</master>
<sentinel>
<!-- sentinel이 여러대일 경우 쉼표구분자로 등록 -->
<masterName>mymaster</masterName>
<hostPorts>172.16.120.72:26379</hostPorts>
<database>15</database>
<username>uracle</username>
<password>ENC(f+5UGh5wXTIzRHm70JSYKA==)</password>
<sentinalPassword>ENC(f+5UGh5wXTIzRHm70JSYKA==)</sentinalPassword>
</sentinel>
<cluster>
<!-- 클러스트노드 여러대일 경우 쉼표구분자로 등록 -->
<clusterNodes>redis-cluster.usw2.cache.amazonaws.com:6379,redis-cluster.usw2.cache.amazonaws.com:6379</clusterNodes>
<username>uracle</username>
<password>ENC(f+5UGh5wXTIzRHm70JSYKA==)</password>
</cluster>