はじめに
- 本記事では、プライベートサブネットに置いたRDSへのAWS Systems Manager Session Maneger(以降SSM)を使ったローカルからの接続方法について、備忘録も兼ねて書いていく。
- これまでは、プライベートサブネットに置いてあるRDSへ接続するには、EC2を踏み台にしてSSHポートフォワーディングを行う必要があり、そのためにはEC2をパブリックサブネットに置き、SSH用のポートも開ける必要があった。
- しかし、SSMを使えば、EC2をプライベートサブネットに置き、SSH用のポートを開けることもなく、EC2にローカルから接続できるようになり、セキュリティリスクも軽減させられるようになった。
実行環境について
- Windowsで実行。
作成手順
RDS作成
- プライベートサブネットにRDSを作成。
- 作成方法については本記事では省略するが、気を付けるポイントを下記に書いておく。
- RDSに付与するセキュリティーグループの設定。
- インバウンドルールに、EC2に付与するセキュリティーグループから5432ポートへの接続の許可を入れておくこと。
- RDSに付与するセキュリティーグループの設定。
EC2作成
- 今回はプライベートサブネット内にEC2を作成。
- EC2の作成方法については本記事では省略するが、気を付けるポイントを下記に書いておく。
- キーペアは、SSHポートフォワーディング時に必要になるのでダウンロードしておくこと。
- EC2に付与するIAMロールに下記のポリシーを付与しておくこと。
- AmazonSSMManagedInstanceCore
VPCエンドポイントの作成
- プライベートサブネット内のEC2でSSMを利用するには、AWS PrivateLinkを使う必要あり。
- 下記3つのVPCエンドポイントを作成。
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ssmmessages
- com.amazonaws.ap-northeast-1.ec2messages
- 作成方法については、下記を参照。
SSMの設定
- AWS CLIをインストール。
- Session Manager Pluginをインストール
-
C:\Users\xxxxx\.ssh\config
に下記内容を追記。- xxxxxはユーザー名。
- configファイルがない場合は作成する。
host i-* mi-*
ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"
ローカルより接続
- まずはSSMでプライベートサブネットに置いたEC2に接続できることを確認。
ssh -i {ダウンロードした秘密鍵のパス} ec2-user@{EC2インスタンスID}
-
SSHポートフォワーディングでトンネル開通。
- 秘密鍵については、置き場所次第では権限エラーが出るので注意。
- Windowsの場合は、ユーザー直下に置いていたら問題なさそう。
- {}は除去すること。
ssh -i {ダウンロードした秘密鍵のパス} ec2-user@{EC2インスタンスID} -L {ローカルのポート}:{RDSのエンドポイント}:{RDSのポート}