🔐
SSH port forwarding しつつ IAM database authentication する方法
背景
自分の PC から好きなクライアントで VPC 内に隔離されている Aurora MySQL にアクセスしたいというニーズはあると思います。
自分でも調べてみたのですが SSH port forwarding しつつ IAM database authentication する方法、そのものをまとめている記事は見つけられなかったので、まとめておきます。
方法
IAM database authentication 自体の説明や設定方法は IAM database authentication - Amazon Aurora を参照してください。
-
local_port
: ローカル PC 側で待ち受けるポート -
db_host
:gateway_host
から Aurora MySQL にアクセスするときに使うホスト名。Aurora MySQL のエンドポイントでなく Route53 で設定したエイリアス等でも OK -
remote_port
: Aurora MySQL が待ち受けているポート。デフォルトなら3306
-
login_user
:gateway_host
にログインするためのユーザー名 -
gateway_host
: VPC 内にアクセス可能なホスト -
mysql_user
:AWSAuthenticationPlugin
を使用可能に設定してある Aurora MySQL のユーザー -
ca_file
: SSL の証明書バンドル。Connecting to your DB cluster using IAM authentication from the command line: AWS CLI and mysql client - Amazon Aurora を参照
ssh -fNL ${local_port}:${db_host}:${remote_port} ${login_user}@${gateway_host}
pid=$(pgrep -f ${local_port})
mysql --protocol tcp -u ${mysql_user} -h localhost -P ${local_port} --ssl-ca=${ca_file} \
-p$(aws rds generate-db-auth-token --hostname ${rds_endpoint} --port 3306 --username ${mysql_user})
kill ${pid}
どこで生成したトークンでも使えるというのがポイントだと思います。
ちなみに Aurora MySQL のエンドポイントは writer のものでも reader のものでも認証することができました。
Discussion