サイトアイコン IT NEWS

AWSのDocumentDBにローカルから安全に接続する手順

クラウド上のデータベースに接続する際、セキュリティを保ちつつ接続するにはいくつかの工夫が必要です。
本記事では、AWSが提供するDocumentDBに、EC2を経由して、自宅などのローカル環境から安全に接続する方法を、失敗例も交えて詳しく解説します。

なぜEC2を経由する必要があるのか?

DocumentDBプライベートネットワーク上に構築されるため、基本的にインターネットから直接アクセスすることはできません。
これにより、外部からの不正アクセスを防ぐことができます。

その代わり、AWS内部のEC2を中継地点(踏み台サーバーとも呼びます)として利用し、トンネル接続ポートフォワーディング)を行うことで、安全にアクセスすることができます。

準備するもの

  • AWSに作成済みのDocumentDBクラスター
  • 同じ仮想ネットワーク(VPC)内にあるEC2インスタンス
  • EC2への接続鍵ファイル(.pem)
  • ローカルの端末(LinuxやMacなど)
  • mongosh(MongoDB用の接続コマンドツール)

EC2からの接続確認

まずは、EC2インスタンスにリモート接続して、そこからDocumentDBに直接接続できることを確認します。

ssh -i /パス/to/秘密鍵.pem ec2-user@EC2のグローバルIPアドレス

接続後、以下のようなコマンドで接続を試みます。

mongosh --host DocumentDBのエンドポイント:27017 --ssl --username ユーザー名 --password パスワード --authenticationDatabase admin

この段階で正常に接続できれば、EC2からDocumentDBへの接続設定は完了です。

ローカル環境から接続する方法

次に、ローカル端末からトンネルを開き、EC2を中継してDocumentDBに接続する方法を紹介します。

SSHトンネルの作成

以下のコマンドで、ローカル環境からEC2を経由したトンネル接続を開始します。

ssh -i /パス/to/秘密鍵.pem -L 27017:DocumentDBのエンドポイント:27017 ec2-user@EC2のグローバルIPアドレス

このコマンドの意味は次のとおりです。

このコマンドを実行中は、そのターミナルは閉じないでください。
トンネルが閉じてしまうと接続できなくなります。

mongoshでローカル接続を試みる

別のターミナルを開き、今度はローカルのmongoshを使って接続を行います。

mongosh --host localhost:27017 --ssl --username ユーザー名 --password パスワード --authenticationDatabase admin

ここで重要なのは、接続先ホスト名が「localhost」になっている点です。
これは、先ほどのトンネル設定により、ローカルの27017番ポートが実質的にDocumentDBへの入口になっているためです。

よくあるエラーと対処法

エラー: MongoServerSelectionError: Server selection timed out after 30000 ms

このエラーが出る場合、以下の点を確認してください。

mongoshが古いバージョンだと、TLS1.2以降の接続に失敗することがあります。
最新版にアップグレードして試してみてください。

設定の確認ポイント

まとめ

本記事では、AWS上のDocumentDBに対して、ローカル環境からEC2を中継して安全に接続する方法をステップバイステップで紹介しました。

直接インターネットからアクセスできないクラウドデータベースに接続するには、トンネル接続が非常に有効な手段です。また、セキュリティや構成の見直しも必須であり、EC2やセキュリティグループの設定が意図通りに動いているかを都度確認することが、トラブル回避のポイントです。

この記事が、現場で実務をこなすシステムエンジニアの皆さんの一助となれば幸いです。
今後も、実際に詰まったところから解決するノウハウを中心に、より実践的な内容を発信していきます。

モバイルバージョンを終了