Redis RENAME-COMMAND Parameter

<< LAZYFREE APPENDONLY >>

Redis RENAME-COMMAND parameter

레디스에서는 보안의 목적으로 명령어(command name)을 바꿀 수 있습니다.   예를 들어 아래와 같이 SET 명령을 XSETX으로 변경할 수 있습니다.
rename-command set xsetx
보안의 목적이기 때문에 일반 명령보다는 레디스 서버에 영향을 미치는 명령를 바꾸는 예가 redis.conf에 아래와 같이 나와있습니다.
첫 번째 예는 CONFIG 명령을 예측하기 어려운 문자열로 변경한 것입니다.
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
두 번째 예는 CONFIG 명령을 아예 사용할 수 없도록 한 것입니다.
rename-command CONFIG ""
이것은 redis.conf의 파라미터로만 가능합니다.
명령어를 바꿀 경우 꼭 확인해야 할 몇 가지 주의사항이 있습니다.

주의사항

  • CONFIG 명령을 바꾸었을 경우: 센티널 또는 클러스터에서 해당 마스터 down이 발생하면 failover를 진행하는 센티널 또는 마스터 노드는 failover 마지막 단계에서 변경 내용을 해당 슬레이브 노드의 redis.conf 파일에 CONFIG REWRITE 명령으로 쓰기를 시도합니다. 이때 CONFIG 명령의 이름이 변경되었씀으로 CONFIG 명령이 실패하고 failover가 성공하지 못합니다.   다운된 마스터의 CONFIG 명령을 변경했다면 이 마스터가 다시 시작할 때 클론으로 변경되어야 하는데 이때도 CONFIG REWRITE 명령이 실패해서 클론으로 변경되지 않고 마스터로 남아있습니다.
    센티널 또는 클러스터 환경에서 운용한다면 CONFIG 명령은 변경하지 마십시오.
  • AOF를 운영중이라면 AOF에 기록되는 SET 명령같은 명령을 나중에 변경하지 마십시오. 레디스 서버를 다시 시작했을 때 AOF loading 시 변경한 명령이 실행되지 않습니다.
  • 마스터와 클론의 명령을 다르게 변경했다면 클론에 복제가 제대로 이루어지지 않습니다.

다음은 redis.conf에 있는 rename-command 내용입니다.

Command renaming.
It is possible to change the name of dangerous commands in a shared environment. For instance the CONFIG command may be renamed into something hard to guess so that it will still be available for internal-use tools but not available for general clients.
Example:
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
It is also possible to completely kill a command by renaming it into an empty string:
rename-command CONFIG ""
Please note that changing the name of commands that are logged into the AOF file or transmitted to slaves may cause problems.




<< LAZYFREE RENAME-COMMAND APPENDONLY >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.