Redis ACL

강세준·2023년 1월 26일
0

ACL(접근 제어)

Redis ACL은 실행할 수 있는 명령과 엑세스 할 수 있는 키를 제한하여 유저를 관리하는 기능입니다.

  • 신뢰할 수 없는 클라이언트에게는 엑세스 권한을 주지 않고 신뢰할 수 있는 클라이언트들에게 필요한 작업을 수행하기 위한 최소한의 권한만 제공한다.
  • Redis에 접근하는 프로세스나 사람이 소프트웨어 오류 or 조작 실수로 데이터나 구조를 손상시키지 않도록 운영을 개선하기 위해 사용한다. (명령어 제한)

사용자 등록(SET USER)

>ACL SETUSER [user이름] on [password] [액세스 가능한 키] [액세스 할 pub/sub 채널] [액세스 가능한 command]
  • 패스워드 설정은 >구분자 다음에 지정해야 한다. 패스워드가 없을 경우 >가 없이 nopass를 입력하면 된다.
  • 모든 키를 사용할 경우 allkeys(~*), 모든 키를 금지할 경우 Resetkeys를 통해 제한 가능하고 사용자에게 필요한 적절한 key를 할당한다.
  • 모든명령어를 사용할 경우 allcommands(+@all) 모든 명령어를 금지할 경우 Nocommands(-@all)을 지정한다.
  • Redis 6.0이상의 버전 부터 Pub/Sub 채널 엑세스 관리도 제공하며 7.0버전은 기본적으로 채널 액세스를 제한하기 위해 acl-pubsub-default값이 설정된다. resetchannels를 통해 기본값을 설정할 수 있다.

사용자 정보 조회

  • ACL GETUSER [유저명]

    • Redis에서 패스워드는 SHA256으로 해시된 패스워드가 저장된다.
  • ACL LIST (사용자 정보 리스트 조회)

  • ACL WHOAMI (본인확인)


사용자 삭제(DEL USER)


명령그룹 조회(CAT)

  • ACL CAT

  • ACL CAT DANGEROUS (dangerous 명령어들 확인)

    • dangerous 명령 활용법

      위험한 커맨드는 사전에 정의하여 사용자들에게 해당 커맨드들을 제한함으로 사용자의 실수로 인한 시스템 마비를 미리 예방할 수 있다.

로그인 (AUTH)

  • auth [username][password]

    • 단 패스워드가 없을 시 아무 문자열을 넣어도 상관 없음
참고자료

http://redisgate.kr/redis/server/acl.php
https://redis.io/docs/management/security/acl/

profile
데이터를 탐구하는 개발자

0개의 댓글