내용으로 건너뛰기

IAM 인증을 사용하여 Amazon RDS for MySQL에 연결하려고 할 때 ‘Access Denied’ 오류가 발생하는 이유는 무엇입니까?

3분 분량
0

AWS Identity Access Management(IAM) 인증을 사용하여 Amazon Relational Database Service(Amazon RDS) for MySQL 인스턴스에 연결하려고 합니다. 하지만 ‘Access Denied’ 오류가 발생합니다.

간략한 설명

IAM 역할 권한 부족, IAM 인증 비활성화, 데이터베이스 사용자 구성 오류 또는 연결 문자열 오류로 인해 오류 메시지가 발생할 수 있습니다. 다음과 비슷한 오류 메시지가 표시될 수 있습니다.

"ERROR 1045 (28000): Access denied for user 'root'@'10.0.4.253' (using password: YES)"

AWSSupport-TroubleshootRDSIAMAuthentication 런북을 사용하여 Amazon RDS 인스턴스의 IAM 인증에 필요한 구성을 자동으로 확인한 다음, 해결 방법을 통해 이 오류를 해결하십시오.

해결 방법

IAM 역할 권한이 충분하지 않음

IAM 데이터베이스 인증을 사용하여 Amazon RDS for MySQL 인스턴스에 연결하려면 rds-db:connect 작업에 액세스할 수 있어야 합니다. 자세한 내용은 IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용을 참조하십시오.

서비스 제어 정책(SCP)을 사용하는 경우 정책에서 데이터베이스 인스턴스에 대한 연결을 허용하는지 확인하십시오. 자세한 내용은 AWS Organizations를 사용하여 조직 정책 생성을 참조하십시오.

IAM 인증 활성화

기본적으로 데이터베이스 인스턴스에 대한 IAM 인증은 비활성화되어 있습니다. IAM 인증을 활성화하려면 다음 단계를 완료하십시오.

  1. Amazon RDS 콘솔을 엽니다.
  2. 인스턴스를 선택합니다.
  3. 수정을 선택합니다.
  4. 데이터베이스 인증에서 암호를 선택합니다.
  5. IAM 데이터베이스 인증을 선택합니다.
  6. 구성 설정을 업데이트하려면 계속을 선택합니다.
  7. 인스턴스를 수정하려면 적용을 선택합니다.

참고: 클러스터 구성 설정을 업데이트할 때 즉시 적용을 선택하면 보류 중인 모든 수정 사항이 유지 관리 기간 중이 아닌 즉시 적용됩니다. 이 작업으로 인해 Amazon RDS for MySQL 인스턴스의 운영 중단이 연장될 수 있습니다. 자세한 내용은 수정 예약 설정을 참조하십시오.

잘못 구성된 데이터베이스 사용자

AWSAuthenticationPlugin은 Amazon RDS for MySQL 인스턴스에 대한 IAM 인증을 처리합니다. 이 플러그인이 IAM 역할에 연결되는지 확인하려면 다음 명령을 실행합니다.

select user,plugin,host from mysql.user where user like '%db-user-name%';

참고: db-user-name을 데이터베이스 사용자 이름으로 바꾸십시오.

출력 예시:

+------+-------------------------+------+|
user | plugin | host |
+------+-------------------------+------+
| root | AWSAuthenticationPlugin | % |
+------+-------------------------+------+
1 row in set (0.00 sec)

IAM 역할이 특정 호스트를 사용하는 경우 해당 호스트 이름을 사용해야 합니다. 또한 지정된 데이터베이스에 액세스할 수 있는 권한이 있는지 확인하십시오.

사용자에게 부여된 권한을 보려면 다음 명령을 사용합니다.

show grants for user;

참고: user를 사용자 이름으로 바꾸십시오.

다른 사용자에게 권한을 부여하려면 다음 명령을 사용합니다.

grant select on mydb.mytable to user;

참고: mydb를 데이터베이스 인스턴스 이름으로, mytable을 테이블 이름으로, user를 사용자 이름으로 바꾸십시오.

자세한 내용은 MySQL 웹 사이트의 GRANT 명령문을 참조하십시오.

잘못된 연결 문자열

Amazon RDS for MySQL 데이터베이스에 연결하려면 연결 문자열에서 --enable-cleartext-plugin 옵션을 사용하십시오. --enable-cleartext-plugin 구문은 인증 토큰 역할을 하므로 데이터베이스 연결 시 및 데이터베이스 사용자를 구성할 때 이 구문을 사용해야 합니다.

연결 문자열 예시:

$ mysql -h <endpoint> -P 3306 --enable-cleartext-plugin --user=RDSConnect --password=$

관련 정보

사용자가 Amazon IAM 자격 증명을 통해 Amazon RDS for MySQL DB 인스턴스에 인증하도록 허용하려면 어떻게 해야 합니까?

IAM 데이터베이스 인증

댓글 없음

관련 콘텐츠