Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
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" 오류가 표시됩니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
사용자 생성
다음 단계를 완료하십시오.
- ElastiCache 콘솔을 엽니다.
- 구성에서 사용자 관리를 선택합니다.
- 사용자 생성을 선택하고 다음 정보를 입력합니다.
사용자 ID에 사용자 ID를 입력합니다.
사용자 이름에 사용자 이름을 입력합니다.
참고: IAM 사용자의 경우 사용자 ID와 사용자 이름이 동일하고 소문자여야 합니다.
드롭다운 목록에서 엔진을 선택합니다.
인증 모드에서 IAM 인증을 선택합니다.
액세스 문자열 필드에 on ~* +@all를 입력합니다.
참고: 사용 가능한 모든 키와 명령에 대한 액세스 권한을 활성 사용자에게 부여하려면 on ~*+@all 액세스 문자열을 사용하십시오. 사용자에게 필요한 권한만 제공하는 제한적인 액세스 문자열을 만드는 것이 좋습니다. 자세한 내용은 액세스 문자열을 사용한 권한 지정을 참조하십시오. - 생성을 선택합니다.
사용자 그룹 생성
다음 단계를 완료하십시오.
- ElastiCache 콘솔을 엽니다.
- 구성에서 사용자 그룹 관리를 선택합니다.
- 사용자 그룹 생성을 선택합니다.
- 사용자 그룹 ID에 사용자 그룹 ID를 입력합니다.
- 드롭다운 목록에서 엔진을 선택합니다.
- 선택된 사용자 섹션에서 관리를 선택합니다.
- 사용자 목록에서 이전에 생성한 사용자를 선택합니다.
중요: 엔진으로 Redis를 선택한 경우에는 이름이 Default인 사용자를 선택하십시오. ElastiCache는 인증에 암호가 필요하지 않은 전체 Redis 액세스 권한을 가진 기본 사용자를 자동으로 생성합니다. 기본 사용자 설정을 수정하려면 콘솔 및 CLI를 사용한 사용자 및 사용자 그룹 생성을 참조하십시오. - 생성을 선택합니다.
IAM 인증 허용
ElastiCache 클러스터에서 전송 중 암호화(TLS)를 활성화하십시오.
클러스터의 역할 기반 액세스 제어 구성
다음 단계를 완료하십시오.
- ElastiCache 콘솔을 엽니다.
- 클러스터 목록에서 클러스터를 선택합니다.
- 작업을 선택한 다음, 수정을 선택합니다.
- 액세스 제어에서 사용자 그룹 액세스 제어 목록을 선택하고 사용자 그룹을 선택합니다.
- 변경 사항 미리 보기를 선택합니다.
- 저장을 선택합니다.
IAM 정책 구성
ElastiCache 클러스터에 연결하는 데 사용하는 IAM 자격 증명에 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을 EElastiCache Valkey 또는 Redis OSS 클러스터의 Amazon 리소스 이름(ARN)으로 바꾸고, AWS_RESOURCE_ARN_2를 ElastiCache에 대한 IAM 사용자의 ARN으로 바꾸십시오.
그런 다음, ElastiCache 클러스터에 연결되는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 AWS Lambda 함수에 IAM 역할을 연결합니다. 자세한 내용은 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의 지표를 참조하십시오.
- 연결 실패로 이어질 수 있는 만료된 IAM 인증 토큰을 모니터링하려면 IamAuthenticationExpirations를 확인합니다.
- ElastiCache가 제한한 IAM 자격 증명을 사용한 인증 시도 횟수를 확인하려면 IamAuthenticationThrottling을 검토합니다.
관련 정보
IAM을 사용하여 Amazon ElastiCache for Redis 클러스터에 대한 액세스 관리 간소화
GitHub 웹 사이트의 ElastiCache IAM 인증 데모 애플리케이션
Redisson 웹 사이트의 ElastiCache IAM 자격 증명 공급자를 사용하여 Redis에 연결하는 방법
