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
```