0
0

SSM Session Managerを使用してPrivate Subnet内のRDSにアクセスする

Posted at

事前準備

  1. Private Subnet内にRDSを作成

構成図

ssm.png

手順

踏み台用EC2を作成

  1. EC2 > インスタンス > インスタンスを起動
    • Amazon マシンイメージ (AMI)
    • インスタンスタイプ
      • t4g.nano(適当なタイプでOK)
    • キーペア
      1. 新しいキーペアを作成(既にあれば流用でOK)
        • キーペアのタイプ
          • ED25519
        • プライベートキーファイル形式
          • .pem
      2. ローカルに秘密鍵がダウンロードされるため、~/.ssh配下に保存する
      3. Permissionを変更
        • chmod 400 ~/.ssh/[作成したキーペア秘密鍵]
    • ネットワーク設定 > 編集
      • VPC
        • RDSが属するVPCを選択
      • サブネット
        • RDSが属するプライベートサブネットを選択
      • ファイアフォール(セキュリティグループ)
        • セキュリティーグループを作成
          • インバウンドのセキュリティーグループを削除(Session Managerからの接続にセキュリティグループの穴あけは不要なため削除する)
    • 高度な詳細
      • IAMインスタンスプロフィール > 新しいインスタンスプロファイルの作成 > ロールを作成
        • 信頼されたエンティティタイプ
          • AWSのサービス
        • サービスまたはユースケース
          • EC2
        • ユースケース
          • EC2 role for EC2 Role for AWS Systems Manager
        • (その他はデフォルトでOK)
  2. インスタンスを起動

VPCエンドポイントを作成

  1. VPC > 仮想プライベートクラウド > エンドポイント > エンドポイントを作成
    • サービスカテゴリ
      • AWSのサービス
    • サービス
      • com.amazonaws.ap-northeast-1.ssm
      • com.amazonaws.ap-northeast-1.ssmmessages
        ※ 同時には作れないため1つずつ作成
        ※ SSM Agentのバージョンが3.3.40.0よりも古い場合はcom.amazonaws.ap-northeast-1.ec2messagesも必要
    • VPC
      • RDS(EC2)が属するVPCを選択
      • DNS名を有効化にチェック
    • サブネット
      • RDS(EC2)が属するサブネットを選択
    • セキュリティグループ
      • 踏み台EC2からのInbound HTTPS(443)を許可したセキュリティーグループを作成し選択
  2. エンドポイントを作成

AWSマネジメントコンソールからEC2への接続確認

  1. EC2 > インスタンス > 作成した踏み台EC2にチェック > 接続
  2. 「セッションマネージャー」タブを選択し接続
    ※ 接続できない場合はアクセスできない場合の確認ポイントを参照

ローカルPCからEC2に接続

  1. 下記サイトを参考にSession Manager Pluginインストール
    https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
  2. ローカルPCの~/.ssh/configに以下追加
    Host bastion
        HostName [踏み台EC2のインスタンスID]
        User ec2-user
        Port 22
        IdentityFile ~/.ssh/[作成したキーペアの秘密鍵]
        ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
    
  3. ローカルPCで ssh bation を実行し、EC2に接続できることを確認

SSHポートフォワーディングでRDSに接続

  1. 作成した踏み台EC2経由でRDS向けにSSHポートフォワーディングを張る
    ssh -N -L localhost:60000:[RDSのエンドポイント]:[RDSのポート] -C bastion
    
  2. localhost:60000に適当なDBクライアントソフトでアクセスする

アクセスできない場合の確認ポイント

  • EC2
    • セキュリティグループのアウトバウンドルールで、VPCエンドポイント向けのHTTPS通信が許可されているか確認
    • インスタンスプロファイルに「AmazonSSMManagedInstanceCore」が付与されたロールが設定されているか確認
    • 再起動(SSM Agentは、5 分ごとにクラウド内のSystems Managerサービスを呼び出して、ヘルスチェック情報を提供するため、再起動で強制的にサービスを呼び出す)
  • VPCエンドポイント
    • ssm/ssmmessagesがRDS(EC2)の属するサブネットに関連付けられているか確認
    • セキュリティグループのインバウンドルールで、EC2からのHTTPS通信が許可されているか確認
    • プライベートDNSが有効化されているか確認
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