본문 바로가기
SQL/Redis

Redis 기본 사용자 접근을 막고 아이디 비밀번호 적용하기 (ACL)

by 흑시바 2024. 6. 15.

운영 중인 서비스에서 관리하는 레디스에 외부에서 접근이 필요하도록 설정해야 하는 경우가 있다. 단순하게 레디스 접근포트를 열어서 자유롭게 접근을 허용한다면 운영 중인 서비스의 데이터가 외부로 노출되거나 조작될 가능성이 존재한다.

 

따라서, 외부에서 레디스 직접 접근이 필요한 경우에는 기본 사용자 접근을 막고, 안전하게 데이터에 접근할 수 있는 환경을 구성해야 한다.

 

해당 포스트에서는 Redis 6.0 버전부터 제공하는 ACL(Access Control List) 기능을 활용해서 사용자 계정을 생성하고 관리하는 방법에 대해서 설명한다.

1. 외부 접근 허용하기

레디스 설정파일 /etc/redis/redis.conf에 접근해서 설정 파일을 텍스트 편집기로 연다.

 

sudo vi /etc/redis/redis.conf

 

bind 부분을 찾아서 127.0.0.1로 된 부분을 0.0.0.0으로 변경한다. (접근 가능한 특정 IP가 있으면 해당 IP만 오픈하면 된다.)

2. 비밀번호 설정

bind 설정 이후, requirepass를 찾아서 비밀번호를 설정한다. 예를 들어, 비밀번호를 shibaholic으로 설정하려면 다음과 같이 수정한다. (ACL이 없는 레디스 6 이하 버전은 해당 설정을 통한 보안까지만 가능하다.)

 

3. ACL 설정

Redis 6.0 이상에서는 ACL(Access Control List)을 사용하여 기본 사용자 접근을 막을 수 있다. 기본 사용자를 비활성화하고 새로운 사용자를 생성하여 접근을 허용하기 위해 하단의 내용을 참고하여 ID / PW를 설정 파일에 작성한다.

 

예를 들어, shiba라는 새로운 사용자를 생성하고 비밀번호를 shibaholic#2024로 만들려면 다음과 같이 설정한다.

 

user default off
user shiba on >shibaholic#2024 ~* +@all

 

명령어를 해석하면 다음과 같다.

 

shiba : 사용자 이름

on : 사용자가 활성화됨

>shibaholic#2024 : 사용자의 비밀번호

~* : 모든 키에 대한 접근 권한

+@all : 모든 명령어에 대한 접근 권한

 

명령어에 대한 추가적인 기능 또는 자세한 설명이 궁금하면 하단의 Redis 공식 홈페이지 Reference에서 찾아보자.

 

https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/

 

ACL

Redis Access Control List

redis.io

4. 서버 재시작

설정을 적용하려면 Redis 서버를 재시작해야 한다.

 

sudo service restart redis

5. 테스트

인텔리제이에서 레디스에 접근되는지 테스트해 보도록 한다.

 

비밀번호 없이 그냥 접근하려고 하면 인증이 필요하다는 메시지와 함께 Failed 처리된다.

 

그다음 아이디와 비밀번호를 제대로 입력하고 접근을 시도하면 정상적으로 접근되는 것을 확인할 수 있다.

댓글