Redis ACL 보안 설정 및 Docker Redis Insight 통합 가이드

Redis ACL을 활용한 보안 설정 및 Docker 환경에서의 Redis Insight 통합

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 대상: Redis를 프로덕션 환경에서 운영하는 개발자, DevOps 엔지니어
  • 난이도: 중간 (ACL 설정, Docker 네트워크 구성, 인증 프로세스 이해 필요)

핵심 요약

  • ACL 구성 규칙: 사용자별 권한 정의 시 user on|off >password ~ + 형식 사용 (예: user insight on >RedisInsightPass123 ~* +@all)
  • Docker 네트워크 구성: Redis와 Redis Insight 컨테이너는 동일한 네트워크(redis-net)에 연결되어야 함
  • 인증 필수: Redis Insight 컨테이너는 insight 사용자와 RedisInsightPass123 비밀번호로 인증해야 연결 가능

섹션별 세부 요약

1. ACL 구성 규칙

  • ACL 파일(users.acl)에서 사용자 정의 시 +@admin 권한은 ACL 관리 명령(ACL SETUSER, ACL LIST)을 허용
  • +@acl은 유효하지 않음 (Redis 오류 발생)
  • 예시:

```

user default off

user insight on >RedisInsightPass123 ~* +@all

user appuser on >MyAppSuperSecretPassword ~* +@all

```

2. Redis 컨테이너 설정

  • redis.conf 파일에 aclfile /usr/local/etc/redis/users.acl 설정
  • Docker 컨테이너 실행 시 redis-stack-server /redis.conf 명령으로 ACL 지원 활성화
  • 볼륨 마운트:

```bash

-v /home/user/Desktop/redis.conf:/redis.conf

-v /home/user/Desktop/users.acl:/usr/local/etc/redis/users.acl

```

3. Redis Insight 컨테이너 설정

  • Redis Insight 컨테이너는 redis-net 네트워크에 연결되어야 함
  • 포트 5540을 호스트에 노출 (-p 5540:5540)
  • 컨테이너 내 HTTP 서버 실행 확인:

```bash

docker exec -it redis-insight sh

netstat -tlnp | grep 5540

```

4. 인증 및 연결 테스트

  • redis-cli로 인증 테스트:

```bash

redis-cli -h 127.0.0.1 -p 6379 AUTH insight RedisInsightPass123

```

  • Redis Insight UI에서 연결 설정:

- 호스트: redis-server-acl (Docker 컨테이너 이름)

- 포트: 6379

- 사용자: insight

- 비밀번호: RedisInsightPass123

5. 오류 처리 및 검증

  • ACL 파일 오류 시 Redis 서버 실행 실패 (로그 확인: docker logs redis-server-acl | grep ACL)
  • Redis Insight 연결 실패 시 users.acl 파일 재확인 및 Redis 재시작

결론

  • 실무 팁: ACL 파일에서 +@admin 권한을 사용하여 관리 명령 허용, Docker 네트워크 설정 시 컨테이너 간 통신을 위한 --network 옵션 필수
  • 구현 예시:

```bash

docker network create redis-net

docker run -d --name redis-server-acl --network redis-net -p 6379:6379 -v /path/to/redis.conf:/redis.conf -v /path/to/users.acl:/usr/local/etc/redis/users.acl redis/redis-stack:latest redis-stack-server /redis.conf

```