スキップしてコンテンツを表示

IAM 認証で ElastiCache クラスターに接続する際に発生する、「invalid username-password pair or user is disabled」というエラーの解決方法を教えてください。

所要時間3分
0

AWS Identity and Access Management (IAM) 認証を使用して Amazon ElastiCache Valkey や Redis OSS クラスターに接続する際、「AuthenticationError: invalid username-password pair or user is disabled (ユーザー名とパスワードのペアが無効か、ユーザーが無効化されています)」というエラーが発生します。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

ユーザーを作成する

次の手順を実行します。

  1. ElastiCache コンソールを開きます。
  2. [構成][ユーザー管理] を選択します。
  3. [ユーザーを作成] を選択し、次の情報を入力します。
    [ユーザー ID] にユーザー ID を入力します。
    [ユーザー名] にユーザー名を入力します。
    注: IAM ユーザのユーザー ID とユーザー名は同一かつ、小文字である必要があります。
    ドロップダウンリストから [エンジン] を選択します。
    [認証モード][IAM 認証] を選択します。
    [アクセス文字列] フィールドに on ~* +@all と入力します。
    注: アクティブなユーザーに使用可能なすべてのキーとコマンドへのアクセスを許可するには、on ~*+@all というアクセス文字列を使用します。ユーザーに必要なアクセス許可のみを付与する、制限付きアクセス文字列を作成することをおすすめします。詳細については、「アクセス文字列を使用してアクセス許可を指定する」を参照してください。
  4. [作成] を選択します。

ユーザーグループを作成する

次の手順を実行します。

  1. ElastiCache コンソールを開きます。
  2. [構成] で **[ユーザーグループ管理]**を選択します。
  3. [ユーザーグループの作成] を選択します。
  4. [ユーザーグループ ID] にユーザーグループ ID を入力します。
  5. ドロップダウンリストの [エンジン] から該当するものを選択します。
  6. [選択したユーザー] セクションで [管理] を選択します。
  7. 先ほど作成したユーザーをユーザーのリストから選択します。
    重要: [エンジン]Redis を選択した場合は、Default という名前のユーザーを選択します。ElastiCache は、認証にパスワードを必要とせず、Redis への完全なアクセス許可を持つデフォルトユーザーを自動的に作成します。デフォルトのユーザー設定を変更する方法については、「コンソールと CLI を使用してユーザーとユーザーグループを作成する」を参照してください。
  8. [作成] を選択します。

IAM 認証を許可する

ElastiCache クラスターで転送中の暗号化 (TLS) を有効にします。

クラスターにロールベースのアクセス制御を設定する

次の手順を実行します。

  1. ElastiCache コンソールを開きます。
  2. クラスターリストから、該当するクラスターを選択します。
  3. [アクション] を選択し、[変更] を選択します。
  4. [アクセス制御] かde [ユーザーグループのアクセス制御リスト] を選択し、該当するユーザーグループを選択します。
  5. [変更をプレビュー] を選択します。
  6. [保存] を選択します。

IAM ポリシーを設定する

ElastiCache クラスターへの接続に使用する IAM ID に elasticache:Connect アクションを追加します。IAM ポリシーの例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticache:Connect"
      ],
      "Resource": [
        "AWS_RESOURCE_ARN_1",
        "AWS_RESOURCE_ARN_2"
      ]
    }
  ]
}

注: AWS_RESOURCE_ARN_1 を ElastiCache Valkey または Redis OSS クラスターの Amazon リソースネーム (ARN) に、AWS_RESOURCE_ARN_2 を ElastiCache 用の IAM ユーザーの ARN に置き換えます。

次に、IAM ロールを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたは ElastiCache クラスターに接続する AWS Lambda 関数にアタッチします。詳細については、「IAM による認証」を参照してください。

注: 正しい IAM ポリシーを使用していても、AuthenticationError エラーが発生する場合は、組織内の他のポリシータイプに制限がないか確認してください。詳細については、「ポリシーを使用してアクセスを管理する」の「その他のポリシータイプ」を参照してください。

ネットワーク接続を確認する

ElastiCache クラスターとクライアントリソース間のネットワーク接続を検証します

認証トークンを生成する

IAM 認証を使用して ElastiCache クラスターに接続する場合は、パスワードではなく、認証トークンを使用します。IAM 認証トークンは 15 分間有効です。

長時間接続する場合は、認証情報プロバイダーインターフェイスをサポートする Valkey または Redis OSS クライアントの使用をおすすめします。接続を 12 時間延長するには、新しいトークンを使用して AUTH または HELLO を送信します。

IAM 認証トークンを生成して ElastiCache クラスターに接続するには、次の手順を実行します。

  1. デモアプリケーションを実行するための Amazon EC2 インスタンスを設定します。手順については、GitHub のウェブサイトで「Elasticache IAM 認証のデモアプリケーション」を参照してください。

  2. デモアプリの使用時にトークンを生成するには、次の Java CLI コマンドを実行します。

    java -cp target/ElastiCacheIAMAuthDemoApp-1.0-SNAPSHOT.jar \
    com.amazon.elasticache.IAMAuthTokenGeneratorApp --region REGION --replication-group-id REPLICATION-GROUP-ID --user-id USER-ID

    注: 実際のものでそれぞれ、REGION を AWS リージョンに、REPLICATION-GROUP-ID を ElastiCache レプリケーショングループの ID に、USER-ID を ElastiCache 用の IAM ユーザー ID に置き換えます。

  3. トークンをパスワードとして使用して ElastiCache クラスターに接続します。ElastiCache クラスターへの接続には、Valkey または Redis CLI、またはそのクライアント API ライブラリを使用できます。
    Valkey CLI のコマンド例:

    valkey-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER ID -a TEMPORARY-SECURITY-CREDENTIAL

    Redis CLI のコマンド例:

    redis6-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER-ID -a TEMPORARY-SECURITY-CREDENTIAL

    注: 実際のものでそれぞれ、PRIMARY-ENDPOINT を ElastiCache クラスターのプライマリエンドポイントに、USER-ID を IAM ユーザー ID に、TEMPORARY-SECURITY-CREDENTIAL を IAM 認証トークンに置き換えます。

    重要: valkey-cli コマンドまたは redis-cli コマンドを使用する際は、引数 --tls-a の両方を含める必要があります。これらの引数を指定しなかったり、入力した認証情報に誤りがあったりした場合、NOAUTH または AUTH failed というエラーメッセージが表示されます。valkey-cli または redis-cli コマンドに引数 --tls のみを指定して使用する場合は、接続後に AUTH user-id temporary-security-credential を使用して認証を完了します、。

    Lettuce Redis OSS クライアントの例:

    RedisURI redisURI = RedisURI.builder()
                .withHost(CACHE-NAME)
                .withPort(6379)
                .withSsl(true)
                .withAuthentication(USER-ID, TEMPORARY-SECURITY-CREDENTIAL)
                .build();
    return RedisClient.create(redisURI);

Redis OSS または Valkey クライアント設定のコンポーネントをレビューする

Redis OSS または Valkey クライアントで次の設定を検証します。

  • Valkey または Redis OSS クライアントには、正しい ElastiCache クラスターエンドポイントとポートが設定されていること。
  • Valkey または Redis OSS クライアントは SSL/TLS をサポートしていること。
  • 使用するユーザー名は ElastiCache が有効な IAM ユーザーであること。
  • ElastiCache クラスターの設定、エンジンタイプ、およびバージョンパラメーターと一致する最新バージョンの Valkey または Redis OSS クライアントを使用していること。クライアントバージョンが古かったり、互換性のないものであったりする場合、認証エラーの原因となります。
  • 要件に合わせてクライアントのタイムアウトパラメータを設定したこと。タイムアウトを正しく設定しない場合、接続が途中で終了し、認証エラーが発生する可能性があります。

Amazon CloudWatch メトリクスを確認する

Amazon CloudWatch メトリクスを参考に、ElastiCache クラスターの状態とアクティビティを監視します。認証の問題を特定するには、次のメトリクスを監視することをおすすめします。

  • CurrConnectionsNewConnections などの接続メトリクスを確認します。新規接続が減少している場合、認証エラーが原因で接続が失敗したことが示唆されます。ElastiCache は、各ケースにおいて 2 ~ 6 件の接続を使用してクラスターを監視します。詳細については、「Valkey および Redis OSS のメトリクス」を参照してください。
  • IamAuthenticationExpirations を確認すると、接続障害の原因となる可能性がある、期限切れの IAM 認証トークンを監視できます。
  • IamAuthenticationThrottling を参照し、ElastiCache によりスロットリングされた IAM 認証情報による認証試行回数を確認します。

関連情報

IAM を使用して Amazon ElastiCache for Redis クラスターへのアクセス管理を簡素化する

ElastiCache IAM 認証デモアプリケーション (GitHub のウェブサイト)

ElastiCache IAM 認証情報プロバイダーを使用して Redis に接続する方法 (Redisson のウェブサイト)

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ