ElastiCache(Redis)でAUTH構成時のRails TLS接続確認方法について
ElastiCache(Redis)で認証(Redis auth)設定を構成する場合、Redisへの通信暗号化が前提となります。
Redis-Authと通信暗号化 構成時の接続確認方法について記載させて頂きます。
1. redis-cli での接続確認
redis-cliは、通信暗号化機能が実装されていないため、stunnelを使用した疎通・接続確認が可能です。
Amazon ElastiCache の転送時の暗号化が有効化された Redis ノードへの接続に redis-cli を使用するにはどうすればよいですか?
redis-cli を使用して送信中の暗号化を有効にした Redis 用 Amazon ElastiCache ノードへの接続
2. [参考情報] rails consoleを使用した接続確認
環境
Rails Client (AmazonLinux 2)
$ ruby -v ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux] $ gem -v 3.0.3 $ rails -v Rails 5.2.4.3 $ gem list redis *** LOCAL GEMS *** redis (4.2.1) redis-actionpack (5.2.0) redis-activesupport (5.2.0) redis-rack (2.1.3) redis-rails (5.0.2) redis-store (1.9.0) redis-store-testing (0.0.2)
rails consoleでの接続/検証コマンド
Redisオブジェクト作成時のurlを"rediss://"にします。
(url: 'rediss://<パスワード>>@
$ rails c Loading development environment (Rails 5.2.4.3) irb(main):001:0> redis = Redis.new(url: 'rediss://:This-is-a-sample-token@master.xxxxxxxx.yyyyy.apne1.cache.amazonaws.com:6379/0') => #<Redis client v4.2.1 for redis://master.xxxxxxxxx.yyyyy.apne1.cache.amazonaws.com:6379/0> irb(main):002:0> redis.set "mykeyid0002", "123456789abcdefg" => "OK" irb(main):003:0> redis.keys => ["mykeyid0002", "keyid1111", "mykeyid0001", "hoge"]
参考情報 Support of encryption when using Redis from Amazon ElastiCache
3. [参考情報] Rails session_store使用時の設定、接続/検証コマンド
Ruby on Railsサンプル簡易アプリをrails newで作成。 session_storeを用いたセッション管理をElastiCacheに格納するため以下session_store.rbを作成。
config/initializers/session_store.rb
<ApplicationName>::Application.config.session_store :redis_store, { servers: [ { host: "master.xxxxxx.yyyyyy.apne1.cache.amazonaws.com", # EndPoint FQDN port: 6379, # Port db: 0, password: "this-is-a-test-token", # auth token (password) ssl: true, # ssl enable namespace: "session" }, ], expire_after: 90.minutes }
rails s -b
$ rails s -b 10.0.X.X => Booting Puma => Rails 5.2.4.4 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.6 (ruby 2.6.6-p146), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://10.0.X.X:3000 Use Ctrl-C to stop
ElastiChacheにセッション情報が格納されているか確認。
$ rails c Running via Spring preloader in process 16498 Loading development environment (Rails 5.2.4.4) irb(main):001:0> redis = Redis.new(url: 'rediss://:This-is-a-sample-token@master.xxxxxx.yyyyyy.apne1.cache.amazonaws.com:6379/0') => #<Redis client v4.2.1 for redis://master.xxxxx.yyyyy.apne1.cache.amazonaws.com:6379/0> irb(main):002:0> redis.keys => ["session:2::11bd96f4315c95ef2b216bcf4e2807a056efdb2143735d41bb3f2c2ae689c247"] # Session情報Key irb(main):003:0> redis.get "session:2::11bd96f4315c95ef2b216bcf4e2807a056efdb2143735d41bb3f2c2ae689c247" => "\u0004\b{\u0006I\"\u0010_csrf_token\u0006:\u0006EFI\"1fRkIT2faQQxor1sqNiRaDCp6l3G2eEsKR2XA8ImG2ZI=\u0006;\u0000F" # Session情報 ### 他クライアントからRailsアプリケーションへアクセス irb(main):004:0> redis.keys => ["session:2::19177af23f6ec49087bf08ca78deda97d7dd7f884d8b77f367df6d7599b4350a", "session:2::11bd96f4315c95ef2b216bcf4e2807a056efdb2143735d41bb3f2c2ae689c247"] # Session情報Keyが追加された irb(main):005:0>
参考情報 Support of encryption when using Redis from Amazon ElastiCache