ウェブサイト検索

Redis を簡単に: AlmaLinux 9 に Redis をインストールするためのステップバイステップ ガイド


Redis は、人気のあるオープンソースのメモリ内キー/値データ ストアです。ハッシュ、リスト、セット、文字列などのさまざまなデータ構造をサポートします。 Redis は信頼できる環境でのみ実行されるように設計されており、データベース、キャッシュ、メッセージ ブローカーとして使用できます。 Redis は、幅広いサポート、高パフォーマンス、高可用性、柔軟性で広く知られています。

小規模な展開では、Redis をスタンドアロンとしてインストールできます。大規模なデプロイメントの場合、高可用性のための Redis Sentinel や複数の Redis ノード サーバー間でデータを分割するための Redis Cluster などの追加コンポーネントが提供されます。

このチュートリアルでは、AlmaLinux 9 サーバーに Redis をインストールして設定する方法を説明します。さらに、Redis ACL (アクセス コントロール リスト) と Firewalld を介して Redis を保護する方法も説明します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • AlmaLinux サーバー 9 - この例では、ホスト名「alma-linux」と IP アドレス「192.168.5.21」の AlmaLinux サーバーを使用します。
  • sudo/root 管理者権限を持つ非 root ユーザー。
  • ファイアウォールが構成され、稼働中です。

それでは、詳しく見ていきましょう。

Redis のインストール

Redis は、データベース、キャッシュ、メッセージ ブローカー、ストリーミング エンジンとして使用できる高性能のオープンソース データ ストアです。 Redis は、AlmaLinux を含むほとんどの Linux ディストリビューションで利用できます。デフォルトの配布リポジトリを介してインストールできます。

Redis をインストールする前に、次のコマンドを実行してパッケージ キャッシュを再構築し、最新バージョンのパッケージ情報を取得します。

sudo dnf makecache

次に、以下の dnf コマンドを実行して Redis をインストールします。プロンプトが表示されたら y を入力し、ENTER を押して続行します。

sudo dnf install redis

Redis がインストールされたら、次の systemctl コマンドを実行して Redis サービスを開始し、有効にします。

sudo systemctl start redis
sudo systemctl enable redis

最後に、以下のコマンドを使用して Redis サービスのステータスを確認します。

sudo systemctl is-enabled redis
sudo systemctl status redis

次の出力は、Redis が実行中で有効であることを確認します。これは、Redis がシステム起動時に自動的に実行されることを意味します。

Firewalld による Redis の保護

このセクションでは、Redis インストールを保護するために firewalld を設定します。これを実現する最善の方法は、firewalld 上にゾーンを作成し、特定のネットワーク/サブネットをサービスに許可することです。

次のコマンドを実行して、「svcs」という名前の新しい firewalld ゾーンを作成し、そこに内部ネットワーク インターフェイスを追加します。この例では、Redis はインターフェイス 'enp0s8' の内部 IP アドレスで実行されます。インターフェイスをゾーン 'svcs' に追加する必要があります。

sudo firewall-cmd --new-zone=svcs --permanent
sudo firewall-cmd --zone=svcs --add-interface=enp0s8 --permanent

ここで、次のコマンドを実行して、ネットワーク '192.168.5.1/24' がゾーン 'svcs' 上のポートにアクセスできるようにします。

sudo firewall-cmd --zone=svcs --add-source=192.168.5.1/24

その後、Redis ポート '6379/tcp' をゾーン 'svcs' に追加し、変更を firewalld に適用します。

sudo firewall-cmd --zone=svcs --add-port=6379/tcp
sudo firewall-cmd --runtime-to-permanent

ここで、次のコマンドを使用して firewalld をリロードし、新しい変更が firewalld に適用されることを確認します。

sudo firewall-cmd --reload

最後に、次のコマンドを実行して、firewalld 上のアクティブなゾーンのリストを確認します。また、ゾーン「svcs」がアクティブであることがわかります。

sudo firewall-cmd --get-active-zones

「svcs」ゾーンで使用可能なルールのリストを確認できるようになりました。成功すると、[ポート] セクションに Redis ポート「6379/tcp」が表示され、ソースにサブネット「192.168.5.1/24」が表示されます。

sudo firewall-cmd --list-all --zone=svcs

Redisの構成

このセクションでは、デフォルトの Redis 構成 '/etc/redis/redis.conf' を変更して Redis インストールを構成します。

以下の nano editor コマンドを使用して、Redis 構成ファイル '/etc/redis/redis.conf' を開きます。

sudo nano /etc/redis/redis.conf

バインド」パラメータの値をサーバーの内部 IP アドレスに変更します。この例では、Redis はローカル IP アドレス「192.168.5.21」で実行されます。

bind 192.168.5.21

ここで、パラメータの値を「no」に変更して「保護モード」を無効にします。アプリケーションから Redis サーバーへのリモート接続を許可するには、「保護モード」を無効にする必要があります。

protected-mode no

AlmaLinux では、デフォルトのサービスマネージャーは「systemd」です。 「supervised」パラメータのコメントを解除し、デフォルト値を「systemd」に変更して、Redis と systemd の統合を有効にします。

supervised systemd

最後に、「aclfile」パラメータのコメントを解除して、ファイル経由で Redis の ACL (アクセス コントロール リスト) を有効にします。 Redis v6 以降、Redis を保護するには ACL の使用が推奨されており、Redis は ACL を使用するためのさまざまな方法をサポートしているため、Redis シェルまたは定義された ACL ファイルを介して ACL を作成できます。この例では、ファイル経由で ACL を使用します。

aclfile /etc/redis/users.acl

完了したら、ファイルを保存して閉じます。

ここで、次のコマンドを実行して ACL ファイル「/etc/redis/users.acl」を作成します。

touch /etc/redis/users.acl

その後、以下のコマンドを実行して Redis サービスを再起動し、加えた変更を適用します。

sudo systemctl restart redis

これにより、redis が新しい構成で稼働するようになります。次のステップでは、Redis CLI を介して Redis 構成を確認します。

以下の「redis-cli」コマンドを使用して Redis サーバーに接続します。この例では、Redis サーバーの IP アドレスを指定します。

redis-cli -h 192.168.5.21

ログインしたら、次のコマンドを実行して、接続が成功したことを確認します。接続が成功すると、「test redis」という出力が表示されるはずです。

PING "test redis"

次に、次のクエリを実行して、現在の Redis 構成を取得します。この例では、「バインド」、「監視対象」、および保護モードの設定を確認します。

CONFIG GET bind
CONFIG GET supervised
CONFIG GET protected-mode

成功すると、以前に行った設定と一致する構成が得られるはずです。

最後に、以下の ACL クエリを実行して、Redis で使用可能な ACL のリストを取得します。

ACL LIST

次のような出力が表示されると予想されます。デフォルトの Redis インストールには ACL ユーザー 'default' が付属しており、認証は 'nopass' またはパスワードなしでログインされます。権限「+@all」。これにより、「デフォルト」ユーザーは Redis クエリを実行できます。

この時点で、Redis の基本構成が完了しました。次のステップでは、Redis インストールを保護するための Redis ACL (アクセス コントロール リスト) の構成について詳しく説明します。

ACL (アクセス制御リスト) による Redis の保護

Redis 6.x 以降、Redis を保護する最善の方法は、ACL (アクセス制御リスト) を実装することです。これにより、Redis サーバー上でユーザーと権限を設定できるようになり、古い Redis バージョンの「requirepass」パラメータと「rename-command」パラメータが廃止される可能性があります。

次の 2 つの異なる方法で Redis に ACL を設定できます。

  • ACL コマンドによる ACL のセットアップ\
  • 外部 ACL ファイルを使用した ACL のセットアップ

構成した Redis サーバーを使用して、外部 ACL ファイルを介して Redis ACL をセットアップします。

まず、次の nano editor コマンドを使用して、ACL ファイル「/etc/redis/users.acl」を開きます。

sudo nano /etc/redis/users.acl

次の構成を挿入して、Redis 用の 2 人のユーザーを作成します。

user alice on -DEBUG +@all ~* >AliceP4ssw0rd
user bob on +@all -@dangerous ~* >BobP4ssw0rd

ファイルを保存し、終了したらエディタを終了します。

この構成では、2 人のユーザーを作成します。

  • ユーザー alice はパスワード 'AliceP4ssw0rd' で、DEBUG '-DEBUG を除くすべてのクエリ '+@all' の実行が許可されています。 >」を使用し、使用可能なすべての Key-Value '~*' に対してクエリを実行することもできます。
  • ユーザー bob のパスワードは「BobP4ssw0rd」で、ユーザー bob は「-@dangerous」を除くすべてのクエリ「+@all」の実行を許可されています。 」。コマンド カテゴリ '-@dangerous には、FLUSHALL、MIGRATE、RESTORE、SORT、KEYS、CLIENT、DEBUG、INFO、CONFIG、SAVE、REPLICAOF などが含まれます。また、このユーザーは、Redis サーバー上で使用可能なすべてのキー値に対してクエリを実行することができます。

Redis のコマンド カテゴリの完全なリストを取得します。

次に、次の systemctl コマンドを実行して Redis サービスを再起動し、変更を適用します。

sudo systemctl restart redis

Redis が再起動したら、以下の redis-cli コマンドを使用して Redis サーバーに接続します。

redis-cli -h 192.168.5.21

ログインしたら、次の ACL クエリを実行して、Redis で使用可能なユーザーのリストを確認します。

ACL LIST

この時点で、alice、bob、default という 3 人のユーザーが表示されることが予想されます。

次のクエリを使用して、Redis 上の詳細なユーザーを確認することもできます。

ACL GETUSER alice
ACL GETUSER bob

ユーザー alice は、コマンド グループ「+@all」を使用して、Redis 上で使用可能なすべてのコマンドを実行することが許可されていることがわかります。

ユーザー bob に関しては、許可されたコマンド '+@all' が確認できますが、コマンド グループ 'dangerous' も無効になっています。

デフォルトの Redis ユーザーを無効にする

新しいユーザー alice と bob が作成された場合、次のクエリを使用して「デフォルト」ユーザーを無効にする必要があります。

ACL SETUSER default OFF

次に、以下のコマンドを使用して、Redis で利用可能なユーザーのリストを再度確認します。

ACL LIST

次のように、ユーザー 'default' のステータスがオフまたは無効になっていることが予想されます。

Ctrl+d を押して Redis シェルを終了します。

その後、以下のコマンドを使用して Redis に再度ログインします。

redis-cli -h 192.168.5.21

次に、次の PING クエリを入力して現在の接続を確認します。

PING

Redis の「デフォルト」ユーザーが無効になっていると、次のようなエラーが表示されます - クエリを実行するには認証されたユーザーが必要です。

ユーザーアリスの確認

次に、作成した新しい Redis ユーザー alice と bob を検証します。

次のコマンドを実行して、ユーザー「alice」として認証します。成功すると、「OK」という出力が得られます。

AUTH alice AliceP4ssw0rd

次に、次のクエリを実行して、ユーザー alice 経由で Redis に認証されていることを確認します。

PING
ACL WHOAMI

メッセージ PONG が表示され、ユーザー alice として認証されることが予想されます。

次に、次のクエリを実行して、ユーザー alice が関連する Redis 管理を含む、使用可能なすべてのクエリを実行できることを確認します。

CONFIG GET bind
CONFIG GET supervised

成功すると、パラメーターのバインドと監視の現在の Redis 構成の出力を取得する必要があります。

ユーザーボブの検証

次のクエリを実行して、ユーザー bob としてログインし、認証します。

AUTH bob BobP4ssw0rd

認証後、以下の PING クエリを実行します。成功すると、PONG というメッセージが表示されます。

PING

次に、Redis ACL ファイル内で、ユーザーはコマンド カテゴリ '-@dangerous' を設定します。これにより、このユーザーは Redis サーバー上で FLUSHALL、CONFIG などのいくつかの危険なコマンドを実行できなくなります。

ユーザー bob として次のクエリを実行すると、「NOPERM」などの出力が得られます。これは、ユーザー bob にはコマンドを実行する権限がないことを意味します。

FLUSHALL
CONFIG GET bind
SAVE

これで、ACL ファイルを介して ACL (アクセス制御リスト) で Redis を保護することができました。

結論

おめでとう!これで、Redis が AlmaLinux 9 に正常にインストールされました。また、ACL ファイルを介して ACL (アクセス コントロール リスト) を設定して、Redis を安全にインストールする方法も学習しました。それに加えて、Redis サービス用の特定のゾーンを作成することで、firewalld で Redis を保護しました。

関連記事: