Redisでクライアントの認証を行う方法を調べました。
Redisのv3.2.3を使いました。
Redisの認証について、公式サイトでは、
に、おおよそ次のようなことが書かれている。
AUTH
コマンドを使ってパスワード認証を行うことができる。パスワードについては、
から、brute force攻撃への耐性として十分に長い値を設定するべき。
それから、AUTHコマンドは他のコマンドと同様に暗号化されずにサーバに送信されるので、パケットを盗聴するのに十分なアクセス権を持つ攻撃者からは守られない、ともある。
redisの設定ファイル(redis.conf, 6379.confなど)に、
requirepass パスワード
を追記し、redis-serverを起動する。
この状態でredis-cli
を使ってアクセスすると、
$ redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
のように認証エラーが表示されコマンドが拒否される。
redisの設定ファイルを編集しなくても、CONFIG SETコマンドを使うことで、動的にパスワードを設定することもできる。
クライアント側で認証をパススするには、AUTH
コマンドを使用する。
$ redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6376> AUTH パスワード
OK
127.0.0.1:6379> keys *
1) "towers"
127.0.0.1:6379>
AUTH
コマンドで認証されると、以降のコマンドが正常に実行される。
思ったよりシンプルな認証方式となっていました。