mcpField
R
redis-security

redis-security

github.com/redisセキュリティ1712.5k 回インストール7 週間前に更新
リポジトリ

redis-security について

redis-securityは、本番環境のRedisを扱う運用者やアプリケーション開発者向けのセキュリティ強化スキルです。認証、ACLによる権限制御、ネットワーク公開の制限をまとめて扱います。

主な機能

  1. 01パスワード認証とTLSの設定
  2. 02最小権限のACLユーザー設定
  3. 03Redisのネットワークアクセス制限
  4. 04危険なコマンドの無効化や改名

活用シーン

  1. 01本番用Redisインスタンスの強化
  2. 02アプリケーションごとの認証情報設定
  3. 03Redisデプロイのセキュリティ確認
  4. 04スキャナーによる公開指摘への対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/redis/agent-skills --skill redis-security

インストール後、Claude Code で/redis-securityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
acls.md
auth.md
network.md

詳細

Redis のセキュリティ

Redis の本番環境向けセキュリティ強化:認証、ACL ベースのアクセス制御、ネットワークへの公開範囲。これら 3 つすべてを組み合わせてください。どれか 1 つだけでは、悪用可能な隙間が残ります。

適用するタイミング

  • 本番環境に配置する Redis インスタンスをデプロイまたはレビューするとき。
  • 共有パスワード以外のアプリケーション認証情報を設定するとき。
  • セキュリティチェックリストに照らして Redis のデプロイを監査するとき。
  • スキャナーから「Redis がインターネットに公開されている」という指摘を受けたとき。

1. 必ず認証を行う(TLS も使用する)

本番環境でパスワードなしの Redis を実行しないでください。認証と TLS を組み合わせ、認証情報やデータが平文で送信されないようにします。

# redis.conf
requirepass your-strong-password
tls-port 6380
tls-cert-file /path/to/redis.crt
tls-key-file  /path/to/redis.key
r = redis.Redis(
    host="localhost",
    port=6380,
    password="your-strong-password",
    ssl=True,
    ssl_cert_reqs="required",
)

単一の requirepass の代わりに ACL ユーザー(次のセクション)を使用できる場合は、そうしてください。requirepass は実質的に、従来の「default ユーザー」向けの簡易設定です。

references/auth.md を参照してください。

2. 最小権限アクセスのための ACL

共有パスワードを設定した default ユーザーは、開発環境では問題ありません。本番環境では、各アプリケーションに専用の ACL ユーザーを割り当て、実際に必要なコマンドとキーのパターンだけを許可してください。

# Cache-only reader
ACL SETUSER app_readonly on >password ~cache:* +get +mget +scan

# Writer that can't run dangerous ops
ACL SETUSER app_writer   on >password ~*        +@all -@dangerous

# Admin (use sparingly, never for application traffic)
ACL SETUSER admin        on >strong-password ~* +@all

便利なコマンドカテゴリ:

カテゴリ対象
@read読み取りコマンド(GET、MGET、HGET、...)
@write書き込みコマンド(SET、DEL、XADD、...)
@dangerousFLUSHALL、DEBUG、KEYS など
@admin管理コマンド

アプリケーションの認証情報が漏えいしても、厳格な ACL によって被害範囲を限定できます。攻撃者がキャッシュ読み取りユーザーのパスワードを入手しただけで、DB に対して FLUSHALL を実行できるようなことはありません。

references/acls.md を参照してください。

3. ネットワークアクセスを制限する

Redis の侵害で最もよくあるのは、認証なしでパブリックインターネットに公開された Redis です。次の 3 層でこれを防ぎます。

# redis.conf — bind to specific interfaces, keep protected-mode on
bind 127.0.0.1 192.168.1.100
protected-mode yes
# Firewall — allow only application subnets
iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP

アンチパターン:bind 0.0.0.0 + protected-mode no — 保護なしで Redis をネットワーク全体に公開します。

任意ですが、推奨:侵害されたクライアントが DB を破壊できないよう、破壊的なコマンドの名前を変更するか、無効にします。

rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command CONFIG ""

references/network.md を参照してください。

参考資料

コメント