[AWS] IAM 인증 사용해서 RDS에 접근하기

안녕하세요. 오늘은 베스핀글로벌 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

Leave a Comment