aws rds の iam 認証 を試してみた時のメモ。

MySQL および Amazon Aurora に対する IAM データベース認証 - Amazon Relational Database Service

という資料にある通り、AWSのRDSでは IAM 認証を利用してDBにアクセスする方法があるのでそれを試した話。

まず、Tokenは長いです。

というのが前提。

Mac上のiTerm2で作業を行っていたのですが

コマンドライン: AWS CLI および mysql クライアント - Amazon Relational Database Service

に記載がある通り、TOKENを変数に入れておきそれを利用するような場合は普通にうまくいきます。

しかし、例えば、TOKEN生成はローカルで行い、踏み台サーバからRDSにアクセスするようなケースだと、それがうまくできないため

aws rds generate-db-auth-token \
   --hostname hostName  \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe   

このようなことをローカルで行い、TOKENをクリップボードにコピーします。 つづいて、踏み台にログインし

mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password

のようなコマンドで、パスワード入力プロンプトを出してペーストするのが普通かなと思うのですが、この方法では再三試してもうまくいきませんでした。

しょうがないので

mysql --host=hostName --port=portNumber --ssl-ca=[full path]rds-combined-ca-bundle.pem --enable-cleartext-plugin --user=jane_doe --password="ここにTOKENをペースト"

このようなコマンドにすると、うまくいきます。

ただ、15分しか有効でないとはいうものの、出来れば表示したくないし、履歴が無駄に長くなるというのもあるので何とかしたいのでいい方法を探しています。

という話。

また、AWSのドキュメントにはMySQL クライアントの利用方法であって、 MariaDBのクライアントだと、--enable-cleartext-plugin オプションがなかったりする(CentOS7.5のmariadb v5.5.60とかv10.3.10とか)ので、その際は代わりに --default-auth=mysql_clear_password を利用しましょうという学びがありました。オプションを探すのに手間取ったので忘れないように。