Systems Managerを使ってRDSにアクセスする

2022/03/19に公開
1

構成

  • RDSと踏み台EC2をプライベートサブネットに配置
  • Systems Managerを使って、NAT Gateway経由でポートフォワーディング接続

下の図のような構成です。

VPCエンドポイント経由でも接続可能ですが、両方設定すると、NAT GatewayよりVPCエンドポイントが優先され、若干ややこしいため今回はNAT Gatewayでやってみます。

手順

前提

以下は設定済みなものとします。

  • VPC
  • サブネット
  • セキュリティグループ
  • NAT Gateway
  • EC2
  • RDS

ローカル環境で公開鍵の作成

ローカル環境で、公開鍵を作成します。

$ ssh-keygen -t ed25519
$ cat ~/.ssh/id_ed25519.pub | pbcopy

EC2にIAMロールを設定

踏み台EC2用のIAMロールなので、「IAM-Role-For-EC2-Bastion」という名前でIAMロールを作成します。
IAMポリシーは、AWS管理タイプの AmazonSSMManagedInstanceCore を選択します。
この設定がないと、SSM経由で接続ができません。

IAMロールの設定が完了したら、EC2インスタンスを選択して[接続]をクリックします。
そうすると、以下のようにセッションマネージャーのタブで接続できるようになっています。

EC2上でユーザー作成 & SSH接続設定

EC2インスタンスに接続して、ユーザーを作成していきます。
上記のページから、[接続]をクリックすると、コンソールが立ち上げります。

sh-4.2$ sudo adduser ${name}
sh-4.2$ sudo su ${name}
[${name}@ip-${private_ip_address} bin]$ mkdir ~/.ssh && cd .ssh/
[${name}@ip-${private_ip_address} .ssh]$ chmod 700 .
# authorized_keysファイルを作り、公開鍵の中身を貼ります。
[${name}@ip-${private_ip_address} .ssh]$ vi authorized_keys

ローカルでaws-cli周りの設定

$ brew install awscli
$ brew install session-manager-plugin

ローカルSSH接続設定

~/.ssh/config を開き、以下の内容をそのまま貼り付けます。

# SSH over Session Manager
host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

sshコマンドを実行します。

$ ssh -i ~/.ssh/id_ed25519 ${name}@i-${instance_id} -L 9090:${endpoint}.ap-northeast-1.rds.amazonaws.com:3306 -v
GitHubで編集を提案

Discussion

Hidden comment