Redis ACL로 계정별 키와 명령 범위 설정하기

목차

Redis 6 이상에서 ACL 사용자를 만들고 명령·키 범위를 제한하는 방법입니다. 원노트의 전체 명령 허용 예제 대신 app: 접두사의 키를 읽고 쓰는 서비스 계정으로 정리했습니다. 관리 세션에서 redis-cli 대화형으로 실행하는 예시입니다.

ACL 파일과 사용자 준비

redis.conf의 aclfile 경로를 확인합니다. ACL SAVE로 저장하려면 실행 계정이 파일을 관리할 수 있어야 합니다. 비밀번호와 인증 정보가 들어가므로 파일을 외부에 공개하지 않습니다.

TERMINAL / CONFIG
aclfile /etc/redis/users.acl
TERMINAL / CONFIG
ACL SETUSER lieper reset on >CHANGE_ME_PASSWORD ~app:* +get +set +del +expire +ttl +ping
ACL GETUSER lieper

reset은 기존 사용자 규칙을 초기화하므로 운영 계정 수정 시 현재 규칙을 먼저 보관합니다. >로 시작하는 암호 구문을 OS 셸에 그대로 적으면 출력 리디렉션으로 해석될 수 있어 대화형 예시와 셸 명령을 구분합니다.

허용·거부 시험

새 세션에서 lieper 계정으로 인증하고 app: 키의 읽기·쓰기가 되는지 확인합니다. 다른 접두사의 키나 CONFIG·FLUSHALL 같은 관리 명령은 허용되지 않아야 합니다. Pub/Sub가 필요한 경우에는 채널 규칙도 별도로 설계합니다.

TERMINAL / CONFIG
redis-cli --user lieper --askpass -p 16379
TERMINAL / CONFIG
SET app:health ok
GET app:health
GET other:health

저장과 재기동 후 확인

관리자 세션에서 ACL을 저장합니다. 사용자 변경이 런타임에만 남아 있으면 재시작 후 사라질 수 있습니다. default 사용자를 끄기 전에는 별도 관리 계정으로 접속이 유지되는지 확인합니다.

TERMINAL / CONFIG
ACL SAVE
ACL LIST

명령 범위와 키 패턴은 애플리케이션이 쓰는 트랜잭션·스크립트·라이브러리 동작까지 확인해 조정합니다. 인증은 네트워크 암호화와 별개이므로 bind 주소, 방화벽, TLS 요구도 함께 검토합니다. ACL 출력의 암호 해시는 공유 자료에서 제거합니다.
참고: https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/

DB › Redis
Redis 목록