LoginSignup
0
0

EC2踏み台サーバー経由でRDSアクセス

Posted at

構成図

構成図.drawio.png

以下参考資料をベースに上記の構成を作成していきます。
AWSのEC2からRDSに接続してmySQLを操作。EC2踏み台サーバー構築メモ

ネットワーク

ベースにしている参考資料の設定値をほぼそのまま使います。

  • VPC
    Name CIDR
    rds-ec2-ssh_vpc 10.0.0.0/16
  • サブネット
    Name CIDR 用途
    rds-ec2-ssh_publicSubnet-a 10.0.0.0/24 踏み台サーバー(EC2)用
    rds-ec2-ssh_privateSubnet-a 10.0.100.0/24 RDS用
    rds-ec2-ssh_privateSubnet-c 10.0.101.0/24 RDS用(RDSの仕様上複数AZを指定する必要があるため)
  • インターネットゲートウェイ
    Name
    rds-ec2-ssh_igw
  • ルートテーブル(パブリックサブネット用。Name: public_rtb)
    |送信先|ターゲット|
    |0.0.0.0/0|igw-××××(上で作ったインターネットゲートウェイ)|
    |10.0.0.0/16|local|
  • ルートテーブル(プライベートサブネット用。Name: private_rtb)
    |送信先|ターゲット|
    |10.0.0.0/16|local|

セキュリティ

  • 踏み台サーバー(EC2)用のセキュリティグループ
    • Name: ec2-ssh_sg
    • インバウンドルール
      タイプ プロトコル ポート範囲 送信元
      SSH(22) TCP(6) 22 0.0.0.0/0(※1)
    • アウトバウンドルール
      タイプ プロトコル ポート範囲 送信元
      すべてのトラフィック すべて すべて 0.0.0.0/0
    外部からのアクセスはSSHのみ許可。踏み台サーバー(EC2)からのアクセスはすべて許可

※1クライアントの接続元を特定のIPアドレスに制限したい場合は許可するIPアドレスを指定する。

  • RDS用のセキュリティグループ
    • Name: rds-ec2_sg
    • インバウンドルール
      タイプ プロトコル ポート範囲 送信元
      PostgreSQL(5432) TCP(6) 5432 10.0.0.0/16
    • アウトバウンドルール
      タイプ プロトコル ポート範囲 送信元
      すべてのトラフィック すべて すべて 0.0.0.0/0
    VPC内からの5432ポートのみ許可。RDSからのアクセスはすべて許可

EC2

ec2_1.png

  • 名前とタグ: rds-ec2-ssh_ec2_linux2

  • アプリケーションおよびOSイメージ(Amazonマシンイメージ): Amazon Linux 2(無料利用枠)※2

  • キーペア

    • キーペアのタイプ: RSA
    • プライベートキーファイル形式: .pem
      ※ここで作成したキーファイルは必ずダウンロードして保存しておいてください。
  • ネットワーク設定

    • ネットワーク: rds-ec2-ssh_vpc
    • サブネット: rds-ec2-ssh_publicSubnet-a
    • 自動割り当てパブリック IP: 有効化
    • セキュリティグループ: ec2-ssh_sg

※2 デフォルトの「Amazon Linux 2023」はssh-rsa署名が使用できず、TeraTerm4.×系からSSH接続が出来ないようです。(CloudShellからなら接続できる)
TeraTerm5以降からならrsa-sha2-256およびrsa-sha2-512プロトコルを使用して接続可能だが、2023/7/10時点ではベータ版までしかリリースされていない模様。

RDS

  • サブネットグループ
    • 名前: rds-ec2-ssh_sng
    • 説明: rds-ec2-ssh_sng(空にできないので適当に)
    • VPC: rds-ec2-ssh_vpc
    • アベイラビリティーゾーン: ap-northeast-1a, ap-northeast-1c
    • サブネット: rds-ec2-ssh_privateSubnet-a(10.0.100.0/24), rds-ec2-ssh_privateSubnet-c(10.0.101.0/24)

rds_1.png

  • エンジンのオプション

    • エンジンのタイプ: Aurora(PostgreSQL Compatible)
    • エンジンバージョン: Aurora PostgreSQL(Compatible with PostgreSQL 14.6)
  • 設定

    • DB クラスター識別子:
    • マスターユーザー名: postgres(デフォルト。メモしておくこと)
    • マスターパスワード: (適当にパスワードポリシーを満たしている値。メモしておくこと)
  • 接続

    • Virtual Private Cloud (VPC): rds-ec2-ssh_vpc
    • DB サブネットグループ: rds-ec2-ssh_sng
    • 既存の VPC セキュリティグループ: rds-ec2_sg
  • 追加設定

    • 最初のデータベース名: test(適当に)

EC2の踏み台サーバーに入る

ここは二パターン紹介します。

CloudShellを使用する
ローカルにSSHクライアントをインストールしたくないあるいはめんどくさい人向け。
cloudshell_1.png

  • フッターにあるアイコンからCloudShellを立ち上げる。
    cloudshell_2.png

  • 「ファイルのアップロード」を押下して、踏み台サーバー(EC2)を立ち上げた際にダウンロードしたキーファイル(.pemのやつ)をアップロードする。

  • アップロードしたキーファイルの権限を600にする。

    chmod 600 `キーファイル名`.pem
    

権限を絞らないと、下記のような警告がでて踏み台サーバーにアクセスできない。
cloudshell_3.png

  • 以下のコマンドで踏み台サーバーにアクセスできる。
    ssh -i `キーファイル名`.pem ec2-user@`踏み台サーバーのパブリックIPv4アドレス`
    

TeraTarmを使用する
ssh_teraterm_1.png

  • 「ホスト(T)」に ec2-user@`踏み台サーバーのパブリックIPv4アドレス` を入力して「OK」を押下。
    ssh_teraterm_2.png

  • そのまま「続行」を押下。
    ssh_teraterm_3.png

  • 「ユーザ名(N)」がec2-userであることを確認。

  • 「認証方式」をRSA/DSA/ECDSA/ED25519鍵を使うにし、踏み台サーバー(EC2)を立ち上げた際にダウンロードしたキーファイル(.pemのやつ)を指定。

  • 「OK」を押下。
    ssh_teraterm_4.png

  • 踏み台サーバーにアクセス成功。

RDSのPostgreSQLに接続する

踏み台サーバー(EC2)に入ることができたら、そこからRDSに接続します。

  • 以下コマンドでpsqlコマンドをインストールする。

    // yumパッケージ更新
    sudo yum update
    // このコマンドで`postgresql14`をいうパッケージがあることを確認
    sudo amazon-linux-extras
    // `postgresql14`をインストール
    sudo amazon-linux-extras install -y postgresql14
    

    普通にyum installでインストールしたものはバージョンが古かったらしく、認証方式が合わなくてログインができなかった。
    多分コマンドが間違っていた気もするので要検証。一先ずamazoninuxなら上のやり方でインストールできる。

  • 以下コマンドでRDS(ライターインスタンスの方)にログイン。

    psql -h `エンドポイント` -p 5432 -U postgres -d test
    
    オプション
    -h RDS「接続とセキュリティ」の「エンドポイント」の接続したい方
    -p ポート番号
    -U ユーザー名
    -d 接続するデータベース名

    パスワード入力を要求されるので、RDS作成時にメモしたマスターパスワードを入力。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0