명령줄에서 IAM 인증을 사용해 DB 인스턴스에 연결: AWS CLI 및 mysql 클라이언트

명령줄에서 IAM 인증을 사용해 DB 인스턴스에 연결: AWS CLI 및 mysql 클라이언트

AWS CLI와 mysql 명령줄 도구를 사용해 명령줄에서 Amazon RDS DB 인스턴스에 연결할 수 있어요. IAM 인증 토큰을 생성하고 이 토큰으로 SSL 연결을 만드는 과정을 함께 볼게요.

출처: 문서

본문

AWS CLI와 mysql 명령줄 도구를 사용해 명령줄에서 Amazon RDS DB 인스턴스에 연결할 수 있어요.

사전 요구 사항

IAM 인증을 사용해 DB 인스턴스에 연결하기 위한 사전 요구 사항은 다음과 같아요.

  • IAM 데이터베이스 인증 활성화 및 비활성화
  • IAM 데이터베이스 접근을 위한 IAM 정책 생성 및 사용
  • IAM 인증을 사용한 데이터베이스 계정 생성

참고

IAM 인증으로 SQL Workbench/J를 사용해 데이터베이스에 연결하는 방법은 "Use IAM authentication to connect with SQL Workbench/J to Aurora MySQL or Amazon RDS for MySQL" 블로그 게시물을 참고하세요.

주제 (Topics)

  • IAM 인증 토큰 생성
  • DB 인스턴스에 연결

IAM 인증 토큰 생성

다음 예시는 AWS CLI를 사용해 서명된 인증 토큰을 가져오는 방법을 보여줘요.

aws rds generate-db-auth-token \
   --hostname rdsmysql.123456789012.us-west-2.rds.amazonaws.com \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe

예시에서 매개변수는 다음과 같아요.

  • --hostname – 접근하려는 DB 인스턴스의 호스트 이름이에요.
  • --port – DB 인스턴스에 연결하는 데 사용되는 포트 번호예요.
  • --region – DB 인스턴스가 실행 중인 AWS 리전이에요.
  • --username – 접근하려는 데이터베이스 계정이에요.

토큰의 처음 몇 자자는 다음과 같아요.

rdsmysql.123456789012.us-west-2.rds.amazonaws.com:3306/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...

참고

인증 토큰을 생성하기 위해 DB 인스턴스 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용할 수 없어요.

DB 인스턴스에 연결

연결 형식의 일반적인 형태는 다음과 같아요.

mysql --host=hostName --port=portNumber --ssl-ca=full_path_to_ssl_certificate --enable-cleartext-plugin --user=userName --password=authToken

매개변수는 다음과 같아요.

  • --host – 접근하려는 DB 인스턴스의 호스트 이름이에요.
  • --port – DB 인스턴스에 연결하는 데 사용되는 포트 번호예요.
  • --ssl-ca – 공개 키가 포함된 SSL 인증서 파일의 전체 경로예요. MariaDB의 SSL/TLS 지원에 대한 자세한 내용은 "Amazon RDS에서 MariaDB DB 인스턴스의 SSL/TLS 지원" 문서를, MySQL의 SSL/TLS 지원에 대한 자세한 내용은 "Amazon RDS에서 MySQL DB 인스턴스의 SSL/TLS 지원" 문서를 참고하세요. SSL 인증서를 다운로드하려면 "SSL/TLS를 사용해 DB 인스턴스 또는 클러스터로의 연결 암호화" 문서를 참고하세요.
  • --enable-cleartext-plugin – 이 연결에 AWSAuthenticationPlugin을 사용해야 함을 지정하는 값이에요. MariaDB 클라이언트를 사용한다면 --enable-cleartext-plugin 옵션이 필요하지 않아요.
  • --user – 접근하려는 데이터베이스 계정이에요.
  • --password – 서명된 IAM 인증 토큰이에요.

인증 토큰은 수백 자로 구성돼요. 명령줄에서 다루기 어려울 수 있어요. 이 문제를 해결하는 한 가지 방법은 토큰을 환경 변수에 저장한 다음 연결할 때 그 변수를 사용하는 거예요. 다음 예시는 이 해결 방법의 한 방식을 보여줘요. 예시에서 /sample_dir/은 공개 키가 포함된 SSL 인증서 파일의 전체 경로예요.

RDSHOST="mysqldb.123456789012.us-east-1.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username jane_doe )"

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

AWSAuthenticationPlugin으로 연결하면 연결이 SSL로 보호돼요. 이를 확인하려면 mysql> 명령 프롬프트에 다음을 입력해요.

show status like 'Ssl%';

출력의 다음 줄에 더 많은 세부 정보가 표시돼요.

+---------------+-------------+
| Variable_name | Value                                                                                                                                                                                                                                |
+---------------+-------------+
| ...           | ...
| Ssl_cipher    | AES256-SHA                                                                                                                                                                                                                           |
| ...           | ...
| Ssl_version   | TLSv1.1                                                                                                                                                                                                                              |
| ...           | ...
+-----------------------------+

프록시를 통해 DB 인스턴스에 연결하려면 "IAM 인증을 사용한 데이터베이스 연결" 문서를 참고하세요.

더 알아보기 (Learn more)