redis 6 GA 됐고 ACL이 제일 기다렸던 기능. 지금까진 requirepass 하나로 "다 되거나 안 되거나"였는데 이제 유저 단위 권한 줄 수 있음.
설정 예.
ACL SETUSER reporter on >s3cret ~stats:* +@read
ACL SETUSER worker on >w0rkerpw ~jobs:* +@read +@write -@admin
ACL SETUSER default off
설명:
~stats:*: key 패턴 제한+@read: read 계열 명령만 허용-@admin: admin 명령 차단default off: 무인증 접속 차단
우리는 prod에서 앱 서비스별로 별도 유저 생성. reporter는 읽기 전용, worker는 쓰기/읽기, backup은 스캔 + 덤프 계열만 허용.
aclfile /etc/redis/users.acl로 외부 파일로 빼서 관리. ConfigMap에 올리고 SIGHUP으로 리로드. CONFIG REWRITE는 ACL 반영이 완전하지 않아서 aclfile 쓰는 게 낫다.
운영 팁:
- 패스워드는
>로 평문 넣지 말고 SHA256 해시로#접두어 써서 넣기 - MONITOR 명령은 기본적으로 큼직한 권한이라 운영 유저엔 주지 말 것.
-monitor박자 - slow log 같은 건
+@slow나+slowlog로 따로
기존 requirepass 써드파티들은 호환 모드로 그대로 돌아감. 다만 redis-cli 쓸 때 6 이후로는 AUTH 명령이 AUTH user pass 형태로 변해서 스크립트들 수정 필요.
클러스터에도 적용하려면 각 노드에 같은 ACL 배포 필요. 아직 통합 관리는 없고 Sentinel도 따로. 이 부분은 개선 여지.
댓글 없음:
댓글 쓰기