안녕하세요. 오늘은 베스핀글로벌 D&A실 김동규 님이 작성해 주신 IAM 인증 사용해서 RDS에 접근하는 방법에 대해 알아보겠습니다. 읽으시다가 궁금하신 부분이 있으시면 댓글을 달아주세요~ 🙂
1. EC2 인스턴스 생성
- DB 접속 테스트 및 관리를 위한 서버를 생성하고 db client를설치한다.

# sudo yum install mariadb
2. 암호 인증 방식 RDS 생성
- RDS 생성시 암호 인증 방식만 선택했을 경우

3. 암호 인증 방식 RDS
- 마스터 사용자로 접속 후 암호 인증 방식의 DB사용자를 생성하고 해당 사용자로 DB에 접근하는 일반적인 방식은 다음과 같다.
# mysql -u admin -p -h dkkim.czbvwtgoawg6.ap-northeast-2.rds.amazonaws.com
# CREATE USER dkkim IDENTIFIED by ‘1234’;
# mysql -u dkkim -p -h dkkim.czbvwtgoawg6.ap-northeast-2.rds.amazonaws.com

4. 암호 인증 및 IAM 데이터베이스 인증 방식 RDS 생성
- RDS 생성시 (DB생성 후 수정도 가능) IAM 인증 방식도 가능하도록 설정

5. EC2 인스턴스 SSL 인증서 설치
- SSL 통신이 필요하기 때문에 SSL 인증서를 설치해야 한다.
# sudo mkdir -p /var/mysql-certs
# cd /var/mysql-certs
# sudo wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

6. IAM 인증 사용자 생성
- 마스터 사용자로 접속 후 IAM 인증을 통해 접속할 사용자를 추가하고 SSL을 사용하여 DB에연결하도록 요구한다.
# mysql -u admin -p -h dkkim-iam.czbvwtgoawg6.ap-northeast-2.rds.amazonaws.com
> CREATE USER dkkimiam IDENTIFIED WITH AWSAuthenticationPlugin as ‘RDS’;
> GRANT USAGE ON *.* TO ‘dkkimiam’@’%’ REQUIRE SSL;

7. EC2 용 정책 생성
- IAM에서 다음과 같이 정책을 생성한다.
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“rds-db:connect”
],
“Resource”: [
“arn:aws:rds-db:ap-northeast-2:859234351948:dbuser:db-RMGCHJUBMBFZNRCALAVPJROBRM/dkkimiam“
]
}
]
}
리전, 계정번호, DB리소스 ID, DB 사용자 변경 필요
RDB 구성 페이지에서 확인 가능(뒷 페이지)
8. EC2 용 정책 생성
- DB 구성 페이지 확인

9. IAM role 생성
- DB 접근 EC2에 할당할 것이기에 IAM에서 아래와 같이 EC2로 선택한 후 앞서 생성한 정책을 연결한다.
- Role을 생성한 후 EC2에 할당한다.

10. EC2에서 IAM 인증으로 DB 접근 확인
- EC2에서 토큰을 발행한 후(15분 이내 만료) 해당 토큰을 이용해서 DB 접근을 시도해 본다.
# TOKEN=”$(aws rds generate-db-auth-token –hostname dkkim-iam.czbvwtgoawg6.ap-northeast-2.rds.amazonaws.com –port 3306 –region ap-northeast-2 –username dkkimiam)”
# mysql -h dkkim-iam.czbvwtgoawg6.ap-northeast-2.rds.amazonaws.com –ssl-ca=/var/mysql-certs/rds-combined-ca-bundle.pem –user=dkkimiam –password=$TOKEN

감사합니다~ 🙂

문의: info@bespinglobal.com | 대표번호: 02-1668-1280