本番サーバーへ「誰が・いつ・何をしたか」を証跡に残す。特権アクセス(踏み台)の設計は、セキュリティ監査でもっとも問われる領域のひとつです。AWSには従来型の踏み台ホストに加え、踏み台そのものを不要にするSystems Manager Session Managerという選択肢があります。本記事では4つのアクセス方式を、公式ドキュメントで確認した仕様に基づき「何ができて/何ができないか」まで正直に対比し、監査ログと申請ベース(Just-in-Time)アクセスの設計の勘所を整理します。

01踏み台の本質:閉じる境界と、残す証跡

特権アクセスの設計目的は突き詰めると2つです。ひとつは「攻撃面を閉じること」——本番インスタンスへのインバウンド(SSHの22番など)を可能な限り開かないこと。もうひとつは「証跡を残すこと」——誰が、いつ、どのサーバーに入り、何をしたかを改ざんできない形で記録することです。従来この2つを担ってきたのが踏み台ホスト(bastion / jump box)でした。しかし踏み台ホスト自体が公開エンドポイントであり、SSHキーの配布・ローテーション、OSパッチ、それ自体の監査という運用負債を抱えます。AWSでは、この負債を根本から減らせる選択肢が揃っており、まず全体像を押さえるのが出発点です。

024つのアクセス方式と、その得手不得手

AWS環境で本番ホストへ入る主な手段は4つあります。「従来型の踏み台ホスト(EC2+SSH)」「Systems Manager Session Manager」「EC2 Instance Connect」「サードパーティPAM(特権アクセス管理)」です。それぞれ設計思想が異なり、優劣ではなく適材適所です。まずは意思決定のための一枚表で、できること・できないことを対比します。

方式できることできないこと・注意点
従来型 踏み台ホスト
(EC2+SSH)
SSMエージェント非対応のOS・機器や、独自プロトコルにも柔軟に対応。既存の運用資産を流用しやすい公開エンドポイントを抱える。SSHキー配布・ローテーション、踏み台自体のパッチ・監査が負債化。セッション記録は別途仕組みが必要
SSM
Session Manager
インバウンド不要・SSHキー不要。IAMで認可、S3/CloudWatch Logsへセッション記録、CloudTrailでAPI操作を記録。ポートフォワードやRDPトンネルも可SSMエージェント+IAMロール+エンドポイント到達性が前提。ポートフォワード/SSHトンネルは内容を記録できない
EC2
Instance Connect
一時的な公開鍵をIAM認可でプッシュしSSH接続。恒久的なSSHキーの持ち回りを排除できる本質はSSHの入口。セッションの入出力記録は標準では残らない。Endpoint経由でなければ到達性を別途確保する必要
サードパーティ
PAM
キーストローク/画面録画、コマンド許可リスト、資格情報の集中管理・自動ローテーションなど深い統制製品導入・ライセンス・運用コスト。AWSネイティブ機能との役割分担の設計が必要

03Session Managerが「できること」

現代のAWSでは、踏み台レスの既定手段としてSession Managerを置くのが合理的です。SSMエージェントがアウトバウンドでSystems Managerエンドポイントへ接続するため、セキュリティグループのインバウンドルールをゼロにできます。踏み台ホストもSSHキーも不要で、誰がどのノードに接続できるかはIAMポリシーで制御します。監査面では、セッション中に入力したコマンドとその出力をS3やCloudWatch Logsへ記録でき、過去30日間の接続レポートも生成できます。さらにセッションの開始・終了といったAPI操作はCloudTrailに記録され、EventBridge経由でSNS通知やLambda起動につなげられます。

現場のコツ:Linux/macOSノードでセッションログを取るなら screen ユーティリティを入れておきます。無いとログが途中で切れることがあります(Amazon Linux 2/2023、Ubuntu Serverは既定で導入済み)。
# インスタンスはSSMエージェント+IAMロール(AmazonSSMManagedInstanceCore)が前提
# インバウンド不要でシェルを開く
aws ssm start-session --target i-0123456789abcdef0

# 踏み台なしでRDP/DBへポートフォワード(内容はログに残らない点に注意)
aws ssm start-session \
  --target i-0123456789abcdef0 \
  --document-name AWS-StartPortForwardingSession \
  --parameters '{"portNumber":["3389"],"localPortNumber":["13389"]}'

04Session Managerが「できないこと」——監査の限界を正直に

ここがポジショントークになりやすい箇所です。Session Managerのセッションログは強力ですが、万能なキーロガーではありません。第一に、記録されるのは端末に出力(エコー)される入出力ストリームであり、セッション設定に依存します。パスワードのような機微情報は stty -echo で伏せられる——裏を返せば、キーストローク単位で全打鍵を確実に押さえる完全なロギングとは性質が異なります。第二に、ポートフォワードやSSHトンネルのセッションは内容が記録できません。SSHがTLSトンネル内を暗号化し、Session Managerは通り道(トンネル)に徹するためで、この場合CloudTrailに「誰がいつ開始したか」は残っても、トンネル内の通信は見えません。第三に、vimやlessのような全画面TUIはログが乱れやすく、EventBridgeもAPIを伴わないセッション内動作(exit など)は検知しません。コマンド許可リスト、画面録画、OSレベルの改ざん耐性ある監査が要件なら、auditd/sudoロギングやPAMの領域だと割り切るのが正しい設計です。

監査要件Session Managerで足りるOS監査/PAMが要る
誰がいつどのノードに接続したか○ CloudTrail+接続レポート
対話シェルの入出力・コマンド履歴○ S3/CloudWatch Logsへ記録補完的に有効
ポートフォワード/トンネル内の通信内容× 記録不可(開始のみ)○ 別手段が必要
全打鍵のキーストローク・画面録画× 保証しない○ PAMの領域
コマンド許可リスト・強制遮断× 機能外○ sudo/PAMで実装

05監査ログの設計:分離と改ざん耐性

「記録できる」ことと「証跡として信頼できる」ことは別です。ログの出力先を運用アカウントと同居させると、特権を持つ運用者自身がログを消せてしまう——これはPoC・検証段階で必ず先に潰しておきたい落とし穴です。そこで、セッションログを集約するS3バケットは監査専用アカウントへ分離し、S3 Object Lock(WORM:Write Once Read Many)を有効化します。Compliance/Governanceの保持モードやリーガルホールドにより、保持期間内はオブジェクトの上書き・削除を防げます(ただし削除マーカーはWORM保護対象外である点に注意)。加えてKMSでの暗号化、CloudTrailの証跡もこの監査アカウントへ集約する構成にすると、記録主体と被監査主体を分離でき、証跡の信頼性が担保されます。

現場のコツ:Object LockのCompliance モードはrootでも保持期間内は削除できません。検証環境で誤って長期の保持を設定して「消せないテストデータ」を大量生成しないよう、まずGovernanceモードや短い保持期間で挙動を確認してから本番方針を固めます。

06申請ベース/Just-in-Timeアクセス

常時付与された特権は、それ自体がリスクです。理想は「必要なときだけ、承認を得て、時限で付与し、自動で失効する」——Just-in-Time(JIT)アクセスです。AWSネイティブでは複数の部品を組み合わせて実現します。承認フローはSystems Manager Change Managerが担い、変更テンプレートに必要な承認者・実行できるランブック・通知を定義し、変更リクエストの承認を経て操作を走らせます。権限の一時付与はIAMのAssumeRoleを軸に、信頼ポリシーの条件キー(MFA必須、送信元、時刻など)で絞り込みます。恒常的なガードレールはSCP(サービスコントロールポリシー)で組織全体に敷き、リソース側はタグベース(ABAC)で「このタグの環境にはこのロールだけ」と制御します。そして、承認フローが機能しない緊急時のためのブレークグラス(break-glass)用ロールを別途用意し、その使用は必ず高優先度で通知・監査する——ここまで含めて申請ベースの設計です。

目的使う仕組み役割
承認フローSSM Change Manager承認者・ランブック・通知をテンプレート化し、承認を経て実行
時限の権限付与IAM AssumeRole+条件キーMFA・時刻・送信元などの条件で限定した一時クレデンシャル
組織のガードレールSCPそもそも禁止する操作を組織全体で強制
環境ごとの制御タグベース(ABAC)タグ条件で対象リソースとロールを対応付け
緊急時ブレークグラス用ロール承認フロー不全時の最終手段。使用は必ず通知・監査

07構成図:踏み台レス+承認+改ざん耐性ログ

ここまでの部品を1枚に落とすと次のようになります。運用者はIAM+MFAで認証し、Change Managerの承認を経てSession Manager経由でプライベートサブネットのEC2へ接続します。EC2のセキュリティグループはインバウンドを一切開かず、セッションの入出力は監査アカウントのWORMバケットとCloudWatch Logsへ、API操作はCloudTrailへ流れます。

踏み台レス:Session Manager + 承認 + 改ざん耐性ログ 運用者 IAM + MFA Change Manager 承認 / JIT付与 SSM Session Manager EC2(Private) SG インバウンド 0 SSM Agent 監査アカウント(記録主体を分離) S3 バケット Object Lock / WORM CloudWatch Logs CloudTrail API操作を記録
踏み台レス構成:インバウンドを開かず、承認を経て接続し、証跡を分離アカウントのWORMログへ集約する。

08設計の勘所と移行判断

結論として、現代のAWSでは踏み台レス(Session Manager)を既定に置き、SSMエージェント非対応のOS・機器やエンドポイント到達性を確保できないケースに限って従来型の踏み台ホストを残す、という切り分けが実務的です。踏み台を残す場合も、ネットワーク隔離・MFA必須・最小権限・改ざん耐性のあるログ保管という原則は共通です。EC2 Instance Connectは恒久SSHキーを排除できますが、セッション記録が標準では残らないため、監査要件が厳しい本番では単独運用を避け、記録手段とセットで検討します。深い統制(画面録画・コマンド許可リスト)が要件なら、AWSネイティブに固執せずPAMの導入を素直に評価します。

現場のコツ:移行判断は「そのホストにSSMエージェントを入れ、必要なIAMロールとエンドポイント(またはNAT)到達性を用意できるか」を棚卸しすることから始めます。ここが通れば踏み台は大半のケースで不要になります。逆に、検証環境でエージェント未導入のまま「Session Managerで繋がらない」と踏み抜くのが定番の落とし穴で、本番前に必ず前提条件を確認しておきます。

参考情報(一次情報)

特権アクセスの棚卸しから踏み台レス移行・監査ログ設計・Just-in-Time承認フローの構築まで、EMWがAWSの設計・実装をご支援します。

相談する
← ブログ一覧へ戻る