コマンドラインから IAM 認証を使用して、DB インスタンスに接続する: AWS CLI および mysql クライアント - Amazon Relational Database Service

コマンドラインから IAM 認証を使用して、DB インスタンスに接続する: AWS CLI および mysql クライアント

以下に示すように、AWS CLI および mysql コマンドラインツールを使用して、コマンドラインから Amazon RDS DB インスタンスに接続できます。

前提条件

IAM 認証を使用して DB インスタンスに接続するための前提条件は以下のとおりです。

注記

IAM 認証を使用して SQLWorkbench/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 \ --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 サポートについては、「MariaDB DB インスタンスで SSL/TLS を使用する」を参照してください。

    MySQL での SSL/TLS サポートについては、「MySQL DB インスタンスで SSL を使用する」を参照してください。

    SSL 証明書をダウンロードするには SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化 を参照ください。

  • --enable-cleartext-plugin - この接続で AWSAuthenticationPlugin を使用する必要があることを示す値

    MariaDB クライアントを使用している場合、--enable-cleartext-plugin オプションは必須ではありません。

  • --user - アクセス先のデータベースアカウント

  • --password - 署名済みの IAM 認証トークン

認証トークンは数百の文字で構成されます。これは、コマンドラインでは手に負えなくなる可能性があります。この問題を回避する 1 つの方法は、環境可変にトークンを保存し、接続時にその可変を使用することです。次の例は、この回避策を実行する 1 つの方法を示しています。この例では、/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 認証を使用したプロキシへの接続」を参照してください。