Redis AUTH コマンドによる認証 - Amazon ElastiCache for Redis

Redis AUTH コマンドによる認証

Redis 認証トークン、またはパスワードにより、Redis はクライアントにコマンドの実行を許可する前にパスワードを要求できるため、データのセキュリティが向上します。

ElastiCache for Redis での AUTH の概要

ElastiCache for Redis クラスターで Redis AUTH を使用する場合に、いくつかの調整点があります。

特に、ElastiCache for Redis で AUTH を使用する場合は、AUTH トークンに関する以下の制約に注意してください。

  • トークン、またはパスワードは、印刷可能な 16~128 文字である必要があります。

  • 英数字以外の文字は、(!、&、#、$、^、<、>、-) に制限されています。

  • AUTH は、転送時の暗号化が有効な ElastiCache for Redis クラスターに対してのみ有効にできます。

強力なトークンを設定するには、以下の要件を満たすなど、厳格なパスワードポリシーに従うことをお勧めします。

  • トークン、またはパスワードには、以下の種類から 3 種類以上の文字が含まれている必要があります。

    • 英大文字

    • 英小文字

    • 数字

    • アルファベット以外の文字 (!&#$^<>-)

  • トークン、またはパスワードに、辞書に載っている単語またはそれを少し変更したような単語を使用することはできません。

  • トークン、またはパスワードは、最近使用したトークンと同じまたは類似していてはなりません。

ElastiCache for Redis クラスターへの認証の適用

トークン (パスワード) で保護された Redis サーバーでユーザーにトークンの入力を要求できます。そのためには、レプリケーショングループまたはクラスターを作成するときに、正しいトークンを指定したパラメータ --auth-token (API: AuthToken) を含めます。また、レプリケーショングループまたはクラスターに対する後続のすべてのコマンドにもそのパラメータを含めます。

以下の AWS CLI オペレーションでは、転送中の暗号化 (TLS) が有効なレプリケーショングループと、AUTH トークン This-is-a-sample-token を作成します。サブネット グループ sng-test を、実存のサブネットグループに置き換えます。

キーのパラメータ
  • --engineredis を指定する必要があります。

  • --engine-version — 3.2.6 または 4.0.10 以降を指定する必要があります。

  • --transit-encryption-enabled — 認証と HIPAA 適格性に必要です。

  • --auth-token — HIPAA 適格性に必要です。この値は、このトークンで保護された Redis サーバーの正しいトークンであることが必要です。

  • --cache-subnet-group — HIPAA 適格性に必要です。

Linux、macOS、Unix の場合:

aws elasticache create-replication-group \ --replication-group-id authtestgroup \ --replication-group-description authtest \ --engine redis \ --cache-node-type cache.m4.large \ --num-node-groups 1 \ --replicas-per-node-group 2 \ --transit-encryption-enabled \ --auth-token This-is-a-sample-token \ --cache-subnet-group sng-test

Windows の場合:

aws elasticache create-replication-group ^ --replication-group-id authtestgroup ^ --replication-group-description authtest ^ --engine redis ^ --cache-node-type cache.m4.large ^ --num-node-groups 1 ^ --replicas-per-node-group 2 ^ --transit-encryption-enabled ^ --auth-token This-is-a-sample-token ^ --cache-subnet-group sng-test

既存の ElastiCache for Redis クラスターでの AUTH トークンの変更

認証の更新を容易にするために、ElastiCache for Redis クラスターで使用される AUTH トークンを変更できます。エンジンのバージョンが 5.0.5 以上であり、ElastiCache for Redis で転送時の暗号化が有効になっている場合、この変更を行うことができます。

認証トークンの変更は、ROTATE と SET の 2 つの戦略をサポートしています。ROTATE 戦略では、以前のトークンを保持しながら、サーバーに別の AUTH トークンを追加します。SET 戦略では、1 つの AUTH トークンのみをサポートするように、サーバーを更新します。変更をすぐに適用するには、これらの変更の呼び出しで --apply-immediately パラメータを指定します。

AUTH トークンの更新

Redis サーバーを新しい AUTH トークンで更新するには、--auth-token パラメータで新しい認証トークンを指定し、--auth-token-update-strategy パラメータで値 ROTATE を指定して、ModifyReplicationGroup API を呼び出します。変更が完了すると、クラスターは auth-token パラメータで指定された AUTH トークンに加えて、以前の AUTH トークンをサポートします。

注記

AUTH トークンを前もって設定しない場合、変更が完了すると、クラスターは auth-token パラメータで指定されたもの以外の AUTH トークンをサポートしません。

すでに 2 つの AUTH トークンをサポートするサーバーに対してこの変更が行われると、最も古い AUTH トークンもこのオペレーション中に削除され、その時点でサーバーは最大 2 つの最新の AUTH トークンをサポートすることになります。

この時点で、最新の AUTH トークンを使用するようにクライアントを更新することで続行できます。クライアントが更新された後、AUTH トークンの更新に関する SET 戦略 (次のセクションで説明) を採用して、新しいトークンのみの使用を開始できます。

以下の AWS CLI オペレーションでは、レプリケーショングループを変更して、AUTH トークン This-is-the-rotated-token を更新します。

Linux、macOS、Unix の場合:

aws elasticache modify-replication-group \ --replication-group-id authtestgroup \ --auth-token This-is-the-rotated-token \ --auth-token-update-strategy ROTATE \ --apply-immediately

Windows の場合:

aws elasticache modify-replication-group ^ --replication-group-id authtestgroup ^ --auth-token This-is-the-rotated-token ^ --auth-token-update-strategy ROTATE ^ --apply-immediately

AUTH トークンの設定

2 つの AUTH トークンをサポートする Redis サーバーを、1 つの AUTH トークンをサポートするように更新するには、ModifyReplicationGroup API オペレーションを呼び出します。--auth-token パラメータで新しい AUTH トークンを指定し、--auth-token-update-strategy パラメータで値 SET を指定して、ModifyReplicationGroup を呼び出します。auth-token パラメータの値は、最後に更新された AUTH トークンの値と同じであることが必要です。この変更が完了すると、Redis サーバーは、auth-token パラメータで指定された AUTH トークンのみをサポートするようになります。

以下の AWS CLI オペレーションでは、AUTH トークンを This-is-the-set-token に設定するように、レプリケーショングループを変更します。

Linux、macOS、Unix の場合:

aws elasticache modify-replication-group \ --replication-group-id authtestgroup \ --auth-token This-is-the-set-token \ --auth-token-update-strategy SET \ --apply-immediately

Windows の場合:

aws elasticache modify-replication-group ^ --replication-group-id authtestgroup ^ --auth-token This-is-the-set-token ^ --auth-token-update-strategy SET ^ --apply-immediately

既存の ElastiCache for Redis クラスターでの認証の有効化

既存の Redis サーバーで認証を有効にするには、ModifyReplicationGroup API オペレーションを呼び出します。--auth-token パラメータで新しいトークンを指定し、--auth-token-update-strategy パラメータで値 ROTATE を指定して、ModifyReplicationGroup を呼び出します。

この変更が完了すると、クラスターは、認証なしの接続をサポートするだけでなく、auth-token パラメータで指定された AUTH トークンもサポートするようになります。認証の有効化は、転送中の暗号化 (TLS) が有効な Redis サーバーでのみサポートされます。

RBAC から Redis AUTH への移行

ロールベースのアクセスコントロール (RBAC) を使用したユーザーの認証で説明されているように、Redis ロールベースのアクセスコントロール (RBAC) を用いてユーザーを認証していて、Redis AUTH に移行する場合は、次の手順を使用します。コンソールまたは CLI を使用して移行できます。

コンソールを使用して RBAC から Redis AUTH に移行するには
  1. AWS Management Console にサインインして、ElastiCache コンソール (https://console.aws.amazon.com/elasticache/) を開きます。

  2. 右上のリストから、変更するクラスターが存在する AWS リージョンを選択します。

  3. ナビゲーションペインで、変更するクラスターで実行されているエンジンを選択します。

    選択したエンジンのクラスターが一覧表示されます。

  4. クラスターのリストで、変更するクラスターの名前を選択します。

  5. [アクション]、[変更] の順に選択します。

    [Modify Cluster] ウィンドウが表示されます。

  6. [アクセスコントロールのオプション] で、[Redis AUTH デフォルトユーザー] を選択します。

  7. [AUTH トークン] の下で、[変更なし] を受け入れるか、既存のトークンをローテーションするか、新しいトークンを設定します。

  8. [Modify] (変更) を選択します。

AWS CLI を使用して RBAC から Redis AUTH に移行するには、
  • 以下のいずれかのコマンドを使用します。

    Linux、macOS、Unix の場合:

    aws elasticache modify-replication-group \ --replication-group-id test \ --remove-user-groups \ --auth-token password \ --auth-token-update-strategy SET \ --apply-immediately

    Windows の場合:

    aws elasticache modify-replication-group ^ --replication-group-id test ^ --remove-user-groups ^ --auth-token password ^ --auth-token-update-strategy SET ^ --apply-immediately

AUTH の使用の詳細については、redis.io ウェブサイトの「AUTH トークン」を参照してください。