見出し画像

AWS Session Managerを使った接続をBatch化してみた

先日、自分たちのゼロトラスト対応で、EC2サーバへの接続とRDSへの接続をSession Managerに切り替える件を記事にした。

上記記事で紹介している通り、
環境設定は、一度やればいいので、特段課題と感じることはなかったものの、
接続そのものは、毎日/毎回のことなので、いちいちコマンドをコピペすることすら面倒になってきた。人間って恐ろしい。。。

そこで、今回は、毎日発生するトークンの獲得、毎回発生する踏み台EC2への接続、そして毎回発生するRDSへの接続をBatch化してみた。

Session Managerトークン獲得

ファイル名を「Get-session-token(アカウントID).bat」とかに設定して以下のような単純なBatchファイルを作成する。

@echo off
REM トークン獲得
SET MFA_KEY=
SET /P MFA_KEY="ご自身のOne Time Passwordを入力してください。"
aws sts get-session-token --serial-number arn:aws:iam::(アカウントID):mfa/(ユーザ名) --token-code %MFA_KEY%

これを実行すると、以下のような画面になるので、携帯からOTPを確認して入力する。

すると、トークンを獲得して、Windowは閉じてくれるので、あとはつなげたいものを使えば良い。

踏み台EC2サーバへの接続

トークンはあるので、EC2に繋げればいいけど、これも面倒なので、「Start-session-toEC2.bat」のようなファイル名で下記のコードを書いておく。

@echo off
REM EC2接続
aws ssm start-session --target (EC2インスタンスID) --region ap-northeast-

これを実行することで、一発でEC2にログインできる!あ!楽!!

RDSインスタンスへのリモートポートフォワード

RDSへはMysql Workbenchで接続するけど、ポートフォワードを実行する必要がある。
それも面倒なので、「Start-PortForward-toRDS(データベース名).bat」のようなファイル名で以下のコードを書いておく。

@echo off
REM リモートポートフォワード 
aws ssm start-session --target (EC2インスタンスID) --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters host="(RDSエンドポイント)",portNumber="(ポート番号)",localPortNumber="(ポート番号)"

これを実行すると、以下のような画面が表れて、ポートフォワードが開始される。

あとは、Mysql Workbenchでlocalhost宛に接続すればOKなわけだ。

大したものではないが、毎回発生するがゆえに面倒なので、Batch化して正解だった!

この記事が気に入ったらサポートをしてみませんか?