ACL ユーザーを作成し、権限をテストして永続化する
Redisセキュリティコマンド
# Application user: only app:* keys and channels, dangerous commands excluded:
ACL SETUSER app_rw on >S3cret-Change ~app:* resetchannels &app:* +@read +@write -@dangerous
# Monitoring user: no key access, only specific commands:
ACL SETUSER monitor on >M0n-Secret resetkeys resetchannels -@all +info +ping +client|list +slowlog|get +latency +config|get
# Test permissions without running the command:
ACL DRYRUN app_rw GET app:1001
ACL GETUSER app_rw
ACL LIST
# Make it persistent: ACL SAVE if aclfile is set, otherwise CONFIG REWRITE into redis.conf
ACL SAVE概要
キーのプレフィックス、pub/sub チャネル、コマンドカテゴリで権限を与えたアプリケーションユーザーと監視ユーザーを作成する。DRYRUN でコマンドを実行せずに許可されるかどうかをテストし、ACL をディスクに書き込む。
使用する場面
単一の共有パスワード (requirepass) からユーザーごとのアクセスに移行する場合、アプリケーション同士のキーを分離する場合、または監視ツール用の読み取り専用アカウントを作成する場合。
注意
ルールの順序が重要: resetchannels は、それより前に指定された &channel ルールをすべて削除する。-@dangerous は KEYS、FLUSHALL、CONFIG、DEBUG などのコマンドもブロックするため、アプリケーションが使用するコマンドを DRYRUN で検証する。default ユーザーが nopass と +@all で有効なままだと、ACL は何の保護にもならない。管理ユーザーを作成した後に ACL SETUSER default off を実行する。redis-cli では、--user/--pass による AUTH が失敗すると接続は default ユーザーとして継続し、コマンドはそのまま実行される。そのため権限のテストには DRYRUN を使用する。