0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

対象読者

  • インフラ構成図に bastion が出てきて、なぜ要るのか腹落ちしていない人

レガシーなAWS構成を最適化するプロジェクトでbastionという踏み台サーバーの存在にぶち当たったので詳細をまとめます。「直接DBに繋げればいいのに、なんでわざわざ一段挟むんだ?」と内心思っていました。

その認識がひっくり返ったのは、attack surface(攻撃対象面)という言葉で踏み台を捉え直したときでした。この記事では、そのときの腹落ちをそのまま順に整理していきます。

そもそも、なぜ人がDBに直接触る必要があるのか

「アプリ経由でしかDBに触らない設計が理想」というのは正論です。でも運用していると、どうしても人間が直接リソースに触る場面が出てきます。

  • 本番で起きた障害の調査(アプリのログだけでは原因が追えない)
  • データの中身を直接確認したい(マイグレーション後の整合性チェックなど)
  • 検証作業や、緊急のデータ修正

理想論だけでは現場は回りません。そして触りたい相手は1種類とは限りません。たとえば、よくあるサービス構成だとこんな顔ぶれになります。

  • リレーショナルDB(RDS のようなマネージドDB)
  • キャッシュ(ElastiCache / Redis)
  • プライベートサブネットで動くコンテナ(ECS など)
  • VPC Peering 越しにつながる外部マネージドDB(MongoDB Atlas のような外部サービス)

これら全部に、開発者が必要なときだけ安全に入れるようにしたい。さて、どうするか。

開発者をDBに入れる方法は、突き詰めると3つしかない

ここがこの記事の核心です。いろいろやり方があるように見えて、本質的には選択肢は3つに収束します。

image.png

①は論外に見えますが、急いでいるときに「とりあえずパブリックにして繋ぐ」をやってしまった経験、ありませんか? 私はあります。そして消し忘れます。これが一番こわい。

②は一見まともです。IP制限してるんだから安全じゃないか、と。でも在宅勤務でIPは変わるし、出先のカフェから繋ぎたくなるし、結局「DBがインターネットに顔を出している」状態は変わりません。穴を開けたり閉じたりの運用も地味に事故ります。

③が踏み台です。なぜこれが「正解」と言われるのか。鍵になるのが次の概念です。

攻撃対象面(attack surface)という考え方

attack surface とは、ざっくり言えば「攻撃者が攻撃を仕掛けられる入口の総量」です。入口が多いほど、守るべき面が広がり、どこか1つでも穴があれば抜かれます。

ここで①②③を入口の数で並べてみると、違いが一目でわかります。

【踏み台なし(①②)】              【踏み台あり(③)】

 Internet                          Internet
 ╱ │ │ ╲  ← N個の入口               │  ← 入口は1個だけ
RDS Redis 外部DB ECS               bastion(公開・要塞化・監視)
 全部が標的                          │(VPC内部のSSH/トンネル)
                                    ↓
                              RDS Redis 外部DB ECS(外から到達不能)

①②では、RDSもRedisも外部DBもコンテナも、それぞれがインターネットに面した「入口」になります。攻撃者から見れば標的がN個。1個でも設定をミスれば終わりです。

③では、外から到達できるのは bastion ただ1台。その奥のリソースは、そもそもインターネットからは到達不能なネットワーク(VPC内部)に閉じ込めます。守るべき面が N個から1個に減る。これが踏み台の効きどころです。

図でも整理しておきます。

要点は「踏み台はトラフィックを速くするための中継ではない」ということ。セキュリティ上の関所として、晒す面を1点に絞るために存在しているんです。私が昔つまずいていたのはまさにここでした。

踏み台が「やってはいけない設計」になる瞬間

ただし、踏み台は置けば安全という魔法の箱ではありません。1台に入口を集約するということは、その1台が抜かれたら奥まで通じてしまうということでもあります。踏み台が、文字どおり攻撃者の「踏み台」にされるわけです。

なので公開する1台は徹底的に固めます。最低限このあたりは押さえます。

  • SSHは鍵認証のみ。パスワード認証は無効化する
  • 22番ポートを世界に開かない(後述のSSMなら、そもそも開けずに済む)
  • OS・パッケージを継続的にパッチ適用する(晒している以上、放置は致命的)
  • ログインと操作を監視・記録する(誰がいつ入ったか追えるように)
  • 不要なソフトを入れない。踏み台は「踏むためだけ」の最小構成に保つ

ここで一つ、当時の私のような人が引っかかりやすい罠があります。「踏み台があるから安心」と思って、踏み台自体の運用を疎かにすること。入口を1個に絞ったということは、その1個の守りに全リソースを集中できるという意味であって、守らなくていいという意味ではありません。

踏み台に公開IPを付けて22番ポートを 0.0.0.0/0 に開けっ放し、というのは典型的な事故構成です。攻撃者は常時SSHポートをスキャンしています。「1台だけだから」と油断すると、その1台が最短の侵入経路になります。

で、2026年の今ならどう作るか(SSM Session Manager)

ここまでが踏み台の「考え方」です。どうやら、現在のAWSでの実装は下記でやるのが良いみたいです。

実は2025年あたりから、「公開IPを付けたSSH踏み台」自体がレガシーな構成と見なされるようになってきました。代わりに推奨されるのが、AWS Systems Manager の Session Manager を使うやり方です1

何が変わるかというと、踏み台の置き方がこうなります。

  • 踏み台EC2に 公開IPを付けない(パブリックサブネットに置かない)
  • セキュリティグループの インバウンドを1つも開けない(22番すら開けない)
  • 接続はSSMエージェント経由で、IAM認証だけで成立する
  • ローカルから AWS-StartPortForwardingSessionToRemoteHost でポートフォワードすれば、private subnet の RDS にそのまま繋がる2

つまり「踏み台=入口を1台に絞る」という発想はそのままに、その1台すらインターネットに口を開けないところまで持っていける、ということです。attack surface を1個に絞るどころか、限りなくゼロに近づけられる。最初にこれを知ったときは、正直ちょっと感動しました。

従来のSSH踏み台と並べると違いがはっきりします。

観点 従来のSSH踏み台 SSM Session Manager 経由
公開IP 必要 不要
インバウンドのポート開放 22番を開ける 開けない(ゼロ)
認証 SSH鍵 IAM(鍵管理が不要)
操作ログ 自前で仕込む CloudTrail / S3 / CloudWatch に記録可
IP制限の運用 必要(変動して煩雑) 不要

SSMエージェントはアウトバウンド通信が必要なので、踏み台はプライベートサブネットに置きつつ、NATゲートウェイ経由か、NATを使えない場合はVPCエンドポイント経由で外向き通信を確保します。DBサブネットはデフォルトルートを持たせず、外部との通信を完全に遮断するのが定石です2

なお、本記事の構成・サービス名・推奨事項は2026年6月時点の情報です。AWSの機能は更新が早いので、実装前に公式ドキュメントで最新を確認してください。

まとめ

長くなったので、要点を3つに絞ります。

  • 開発者をDBに入れる方法は、突き詰めると「全部公開」「SGで穴あけ」「踏み台1台」の3つしかない
  • 踏み台の本質は中継ではなく、晒す面(attack surface)を1点に絞り、奥を外から到達不能にすること
  • 2026年の今なら、SSM Session Manager で「公開IPなし・ポート開放ゼロ」の踏み台にできる。従来のSSH踏み台より一段安全

昔の私のように「踏み台=ただの中継サーバ」だと思っていた人に、この記事の「入口を1個に絞る」という見方が届いたら嬉しいです。

もし自分の構成を「公開IPなし踏み台」へ作り替えてみたら、つまずいたポイントなどぜひ教えてください。次はSSMポートフォワーディングの具体的な手順を書こうと思います。

  1. 「AWS Bastion Hosts Obsolete? 2025 Secure Access Guide with SSM Session Manager」など、2025年以降は公開IP付き踏み台をレガシーと位置づける記事が増えている。

  2. SSMの AWS-StartPortForwardingSessionToRemoteHost ドキュメントを使うと、プライベートサブネットのRDSへローカルから1コマンドで接続できる。 2

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?