當我使用 IAM 驗證連接到 ElastiCache 叢集時,如何解決 "invalid username-password pair or user is disabled" (使用者名稱-密碼對無效或使用者已停用) 錯誤?
當我使用 AWS Identity and Access Management (IAM) 驗證連線到 Amazon ElastiCache Valkey 和 Redis OSS 叢集時,我收到 "AuthenticationError: invalid username-password pair or user is disabled" (AuthenticationError:無效的使用者名稱-密碼對或使用者已停用) 錯誤。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
建立使用者
請完成下列步驟:
- 開啟 ElastiCache console (ElastiCache 主控台)。
- 從 Configurations (組態) 中,選擇 User management (使用者管理)。
- 選擇 Create user (建立使用者),然後輸入下列資訊:
在 User ID (使用者 ID) 中,輸入使用者 ID。
在 User name (使用者名稱) 中,輸入使用者名稱。
注意:對於 IAM 使用者,使用者 ID 和使用者名稱必須相同且小寫。
從下拉式清單中選取您的引擎。
在 Authentication mode (驗證模式) 中,選取 IAM authentication (IAM 驗證)。
在 Access string (存取字串) 欄位中,輸入 on ~* +@all。
**注意:**若要讓作用中使用者存取所有可用的按鍵和命令,請使用 on ~*+@all 存取字串。最佳做法是建立限制性存取字串,僅提供使用者所需的權限。如需詳細資訊,請參閱使用存取字串指定權限。 - 選擇 Create (建立)。
建立使用者群組
請完成下列步驟:
- 開啟 ElastiCache console (ElastiCache 主控台)。
- 從 Configurations (組態) 中,選擇 User group management (使用者群組管理)。
- 選擇 Create user group (建立使用者群組)。
- 在 User group ID (使用者群組 ID) 中,輸入使用者群組 ID。
- 從下拉式清單中選取您的引擎。
- 在 Selected users (選取的使用者) 區段中,選擇 Manage (管理)。
- 從使用者清單中,選取您先前建立的使用者。
**重要:**如果您在 Engine (引擎) 中選擇 Redis,請選取名為 Default (預設) 的使用者。ElastiCache 會自動建立一個具有完全 Redis 存取權的預設使用者,該使用者無需密碼進行驗證。若要修改預設使用者設定,請參閱使用主控台和 CLI 建立使用者和使用者群組。 - 選擇 Create (建立)。
允許 IAM 驗證
在您的 ElastiCache 叢集上啟用傳輸中加密 (TLS)。
為叢集設定角色型存取控制
請完成下列步驟:
- 開啟 ElastiCache console (ElastiCache 主控台)。
- 從叢集清單中選取您的叢集。
- 選擇 Actions (動作),然後選擇 Modify (修改)。
- 從 Access control (存取控制) 中選擇 User group access control list (使用者群組存取控制清單),然後選取您的使用者群組。
- 選擇 Preview changes (預覽變更)。
- 選擇 Save (儲存)。
設定您的 IAM 政策
將 elasticache:Connect 動作新增至用於連線 ElastiCache 叢集的 IAM 身分。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 使用者的 ARNRN。
然後,將 IAM 角色附加到連線至 ElastiCache 叢集的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或 AWS Lambda 函式。如需詳細資訊,請參閱使用 IAM 進行驗證。
注意:如果您的 IAM 政策正確,但您仍收到 AuthenticationError 錯誤,請檢查組織中的其他政策類型是否有限制。如需詳細資訊,請參閱使用政策管理存取權中的其他政策類型。
檢查網路連線
確認 ElastiCache 叢集和用戶端資源之間的網路連線。
產生驗證權杖
如果您使用 IAM 驗證連線到 ElastiCache 叢集,請使用驗證權杖而不是密碼。IAM 驗證權杖有效期為 15 分鐘。
對於長時間連線,最佳做法是使用支援憑證供應商介面的 Valkey 或 Redis OSS 用戶端。若要將連線延長 12 小時,請使用新權杖傳送 AUTH 或 HELLO。
若要產生 IAM 驗證權杖並連線到您的 ElastiCache 叢集,請完成以下步驟:
-
設定 Amazon EC2 執行個體以執行示範應用程式。如需說明,請參閱 GitHub 網站上的 Elasticache IAM 驗證示範應用程式。
-
若要在使用示範應用程式時產生權杖,請執行下列 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。
-
使用權杖作為密碼連線到 ElastiCache 叢集。您可以使用 Valkey 或 Redis CLI,或其用戶端 API 庫連線到 ElastiCache 叢集。
Valkey CLI 命令範例:valkey-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER ID -a TEMPORARY-SECURITY-CREDENTIALRedis 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 叢集的運作狀態和活動。若要識別驗證問題,最佳做法是監控以下指標:
- 檢查您的連線指標,例如 CurrConnections 和 NewConnections。新連線數減少代表驗證錯誤導致連線嘗試失敗。在各種情況下,ElastiCache 會使用 2 到 6 個連線來監控叢集。如需詳細資訊,請參閱Valkey 和 Redis OSS 的指標。
- 檢查 IamAuthenticationExpirations,以監控可能導致連線失敗的過期 IAM 驗證權杖。
- 請參閱 IamAuthenticationThrottling,以了解 ElastiCache 限制的 IAM 憑證嘗試驗證次數。
相關資訊
使用 IAM 簡化對 Amazon ElastiCache for Redis 叢集的存取管理
GitHub 網站上的 ElastiCache IAM 驗證示範應用程式
Redisson 網站上的如何使用 ElastiCache IAM 憑證供應商連線到 Redis
相關內容
已提問 2 年前
已提問 2 年前
