ElastiCache for Redisの認証方式概要

ElastiCache for Redisの認証方式概要
この記事をシェアする

はじめに

こんにちは、スカイアーチHRソリューションズのharaです。

今回はElastiCache for Redisの認証方式について記事をまとめてみました。

ElastiCache for Redisとは?

分散インメモリデータストア(キャッシュ)環境のことを指します。

サーバレスキャッシュまたはキャッシュクラスターの構成が可能です。

詳細は以下のAWS公式ドキュメントをご参照ください。

ElastiCache for Redisに対して転送中の暗号化(TLS)の有効化を必須とした場合は、
大きく分けて以下の2種類から認証方法を選択する必要があります。

  • Redis AUTH 認証
  • ロールベースアクセスコントロール(RBAC)認証

これらの認証について、以下で詳しく見ていきたいと思います。

Redis AUTH認証

こちらはElastiCacheに対して設定可能なトークン(パスワード)を使用した認証です。

利用可能文字数は16~128文字以内の文字列で、試用できる記号は !、&、#、$、^、<、>、- のみとなります。

AUTH トークンは最大2つまで保持可能です。既に2つのトークンを保持している状態で新しいトークンが設定された際は、古いトークンの情報が削除され、最新の2つのトークンが保持されます。

また、サーバレスキャッシュではこちらの認証方法は利用できませんので、次に紹介するロールベースのアクセスコントロールで認証を実現する必要があります。

詳細は以下のAWS公式ドキュメントをご参照ください。

ロールベースアクセスコントロール(RBAC)認証

もう一つはRBAC認証です。こちらは以下の2種類から方式を選択することができます。

  • パスワード認証
  • IAM認証

いずれの認証も、ElastiCacheユーザーおよび管理グループを作成し、グループをElastiCacheに紐づけることで使用可能となります。

各ユーザーには、ユーザーが実行可能なコマンドやキーで細かなアクセス許可を設定することができます。

なお、ElastiCacheユーザーには既定で「default」ユーザーが存在します。
グループを作成する際は、このdefaultユーザーを必ず入れる必要がありますのでご注意ください。

defaultユーザーは既定ですべての権限およびコマンドが許可されています。適切なアクセスコントロールを設定したい場合は、新しくdefaultユーザーを作成することで既存のユーザーと置き換えることが可能です。

パスワード認証方式

Redisのバージョンが6.0以上の場合に利用可能な認証方式です。

利用可能文字数は16~128文字以内の文字列で、試用できる記号は , “” / @ のみとなります。

こちらはユーザー単位でパスワードを最大2つまで設定および保持することが可能です。

ユーザーやグループの作成数条件等、詳細は以下のAWS公式ドキュメントをご参照ください。

また、ユーザーに設定したパスワードは AWS SecretsManagerのSecretStringフィールドに user_arn/username/password の値を設定することで、ローテーションすることができます。

こちらも手順についての詳細は、以下のAWS公式ドキュメントをご参照ください。

IAM認証方式

IAM認証はRedisのバージョンが7.0以上の場合のみ使用可能です。

他の認証方式と比べると認証時間が短く(15分間有効/認証後は最大12時間で切断)、細かいアクセス制御を設定できるため、最小特権の権限への実現性が最も高い方式です。

ElastiCacheおよびElastiCacheユーザーに対し、IAMポリシーのActionにて「elasticache:Connect」を許可することでIAM認証トークンを作成できます。

手順についてはAWS公式ドキュメントをご参照ください。

おわりに

以下に各認証の特徴や制約を簡単にまとめます。

  • Redis AUTH:クライアント単位で認証制御が可能。サーバレスキャッシュでの利用不可。
  • パスワード(RBAC):ユーザー/パスワード単位でアクセス制御が可能。Redis6以降で利用可能。
  • IAM(RBAC):IAMトークンで認証が可能。認証時間が短い。Redis7以降で利用可能。

本記事がご参考になりましたら幸いです。

この記事をシェアする
著者:hara
AWS2年目のエンジニア。前職ではAzure、M365サポート等をやっていました。