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

4분 분량
0

Amazon Relational Database Service(Amazon RDS) for MySQL DB 인스턴스에 연결하려고 합니다. 기본 인증 방법 대신 AWS Identity and Access Management(IAM) 보안 인증을 사용하고 싶습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

Amazon RDS DB 인스턴스 또는 클러스터에 연결하려면 IAM 사용자 또는 역할 자격 증명과 인증 토큰을 사용합니다.

참고: 클라이언트와 서버가 동일한 가상 프라이빗 클라우드(VPC)에 있고 네트워크를 신뢰할 수 있는 경우에만 암호화되지 않은 MySQL 연결을 사용하십시오.

사전 요구 사항

데이터베이스에 연결하려면 IAM 데이터베이스 인증을 지원하는 DB 인스턴스와 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작해야 합니다.

IAM 인증에 필요한 구성을 확인하려면 AWSSupport-TroubleshootRDSIAMAuthentication AWS Systems Manager 자동화 런북을 사용하십시오. 런북을 사용하여 Amazon RDS 인스턴스 또는 Aurora 클러스터에 대한 연결 문제도 해결할 수 있습니다.

RDS DB 인스턴스에서 IAM DB 인증 활성화

Amazon RDS 콘솔, AWS Command Line Interface(AWS CLI) 또는 Amazon RDS API를 사용하여 IAM 데이터베이스 인증을 활성화할 수 있습니다. Amazon RDS 콘솔을 사용하여 DB 인스턴스를 수정하는 경우 즉시 적용을 선택하여 IAM 데이터베이스 인증을 활성화합니다. 자세한 내용은 Amazon RDS DB 인스턴스를 참조하십시오.

참고: 즉시 적용을 선택하면 보류 중인 수정 사항도 즉시 적용됩니다. 자세한 내용은 수정 예약 설정을 참조하십시오.

AWS 인증 토큰을 사용하는 데이터베이스 사용자 계정 생성

DB 인스턴스 또는 클러스터 엔드포인트에 연결하려면 다음 명령을 실행합니다.

$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p

참고: 기본 암호를 사용하여 로그인하십시오.

암호 대신 AWS 인증 토큰을 사용하는 데이터베이스 사용자 계정을 생성하려면 다음 명령을 실행합니다.

CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';

기본적으로 데이터베이스 사용자에게는 아무런 권한이 없습니다. 이는 **SHOW GRANTS FOR {dbusername}**을 실행하면 GRANT USAGE로 나타납니다. 사용자 계정이 SSL을 통해 연결하도록 하려면 다음 명령을 실행합니다.

ALTER USER {dbusername} REQUIRE SSL;

MySQL을 닫으려면 exit 명령을 실행합니다. 그리고 DB 인스턴스에서 로그아웃합니다.

데이터베이스 사용자를 IAM 역할에 매핑하는 IAM 정책 추가

다음 단계를 완료하십시오.

  1. IAM 콘솔을 엽니다.
  2. 탐색 페이지에서 정책을 선택합니다.
  3. 정책 생성을 선택합니다.
  4. 필요한 사용자에게 rds-db:connect 작업을 허용하는 정책을 입력합니다. 이 정책 생성과 관련한 자세한 내용은 IAM 데이터베이스에 액세스할 때 필요한 IAM 정책 생성 및 사용을 참조하십시오.
    참고: 리소스 섹션에 데이터베이스 리소스의 세부 정보를 입력해야 합니다.
  5. 다음을 선택합니다.
  6. 다음을 선택합니다.
  7. 이름에 정책 이름을 입력합니다.
  8. 정책 생성을 선택합니다.

Amazon RDS 액세스를 허용하는 IAM 역할 생성

다음 단계를 완료하십시오.

  1. IAM 콘솔을 엽니다.
  2. 탐색 페이지에서 역할을 선택합니다.
  3. 신뢰할 수 있는 엔터티 유형 섹션에서 역할 생성을 선택합니다.
  4. AWS 서비스를 선택합니다.
  5. 사용 사례 섹션에서 서비스 또는 사용자 사례에 대해 EC2를 선택합니다.
  6. 사용 사례에서 EC2를 선택한 후 다음을 선택합니다.
  7. 검색 창의 데이터베이스 사용자를 매핑하는 IAM 정책 추가 섹션에서 이전에 생성한 IAM 정책을 찾을 수 있습니다.
  8. 다음을 선택합니다.
  9. 역할 이름에 이 IAM 역할의 이름을 입력합니다.
  10. 역할 생성을 선택합니다.

Amazon EC2 인스턴스에 IAM 역할 연결

다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.
  2. Amazon RDS에 연결하는 데 사용할 EC2 인스턴스를 선택합니다.
  3. 새로 생성한 IAM 역할을 EC2 인스턴스에 연결합니다.
  4. SSH를 통해 EC2 인스턴스에 연결합니다.

IAM 역할을 식별할 수 있는 AWS 인증 토큰 생성

Amazon EC2 인스턴스에 연결한 후 다음 AWS CLI generate-db-auth-token 명령을 실행하여 인증 토큰을 생성합니다.

$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}

참고: AWS CLI 명령을 실행할 때 오류가 발생하면, AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

나중에 사용할 수 있도록 이 인증 토큰을 복사하여 저장합니다. 또는 AWS SDK for .NET을 사용하여 토큰을 생성할 수 있습니다.

SSL 루트 인증서 번들 파일 다운로드

모든 AWS 리전의 인증서 번들을 다운로드하려면 모든 AWS 리전의 인증서 번들을 참조하십시오.

IAM 역할 자격 증명과 인증 토큰을 사용하여 RDS DB 인스턴스에 연결

인증서 파일을 다운로드한 후 다음 명령을 실행하여 SSL을 통해 DB 인스턴스에 연결합니다.

RDSHOST="rdsmysql.abcdefghijk.us-west-2.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username {db username})"

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN

참고: MariaDB 클라이언트를 사용하는 경우 --enable-cleartext-plugin 옵션을 포함하지 않습니다.

IAM 역할 자격 증명과 SSL 인증서를 사용하여 RDS DB 인스턴스에 연결

인증서 파일을 다운로드한 후 SSL을 통해 DB 인스턴스에 연결합니다.

관련 정보

MariaDB, MySQL, PostgreSQL용 IAM 데이터베이스 인증

사용자가 Amazon RDS DB 인스턴스를 생성, 삭제, 수정, 백업, 복구할 때 필요한 최소 권한은 무엇입니까?