명령줄에서 IAM 인증을 사용하여 DB 인스턴스에 연결: AWS CLI 및 mysql 클라이언트
아래 설명과 같이 AWS CLI 및 mysql
명령줄 도구를 사용하여 명령줄에서 Amazon RDS DB 인스턴스로 연결할 수 있습니다.
필수 조건
다음은 IAM 인증을 사용하여 DB 인스턴스에 연결하기 위한 사전 조건입니다.
참고
IAM 인증을 통한 SQL Workbench/J를 사용하여 데이터베이스에 연결하는 방법에 대한 자세한 내용은 블로그 게시물 IAM 인증을 사용하여 SQL Workbench/J를 Aurora MySQL 또는 Amazon RDS for MySQL에 연결
IAM 인증 토크 생성
다음은 AWS CLI를 사용하여 서명이 되어 있는 인증 토큰을 생성하는 방법을 설명한 예제입니다.
aws rds generate-db-auth-token \ --hostname
rdsmysql.123456789012.us-west-2.rds.amazonaws.com
\ --port3306
\ --regionus-west-2
\ --usernamejane_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 --port3306
--regionus-west-2
--usernamejane_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 인증을 사용하여 프록시에 연결을 참조하세요.