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以降で利用可能。
本記事がご参考になりましたら幸いです。