0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者】Instance Connect vs Session Manager (Windows Serverへの接続)

0
Posted at

1. はじめに

  • AWSにWindows Serverインスタンスを立てて、外部から安全にアクセスしたいという案件あり。
  • そういう時に用いる Session Manager に関して、以前Linuxインスタンスへのアクセスについてはまとめたことがあった(【初心者】AWS Systems Manager Session Manager を使ってみる)。
  • 類似機能のInstance Connectも含めて、改めてWindows Serverインスタンスへリモートアクセスする場合どうしたらよいのかの手順を確認する。

2. やったこと

  • VPC内(Private Subnet)に、Windows Server 2022インスタンスを作成する。
  • 手元のPC(Win11)から、Instance Connect経由、Session Manager経由で接続可能なことを確認する。
  • Instance ConnectとSession Managerで何が異なるのかを自分なりにまとめる。
  • 最近(2025/4頃~?)、「ジャストインタイムノードアクセス」という、より高機能な接続オプションが提供開始されているが、まだ大阪リージョンでは使えない(2026/2時点)こともあり、今回は検証していない。

3. 構成図

image.png

4. ざっくり比較

4.1 比較表

細かいことは書ききれないので、主要な差分をメモする。

項目 Instance Connect Session Manager
接続方法 PCのRDPクライアント 1) PCのRDPクライアント
2) FleetManagerのRDP接続
3) FleetManagerのターミナル接続
クライアント側に必要なもの AWS CLI、PCのRDPクライアント 1) AWS CLI、Session Manager Plugin、RDPクライアント
2) ブラウザのみ
3) ブラウザのみ
インスタンス側に必要なもの なし SSM Agent、ロール(AmazonSSMManagedInstanceCoreなど)
インスタンスで許可する通信 エンドポイントからの3389/tcp エンドポイントへの443/tcp
必要なエンドポイント インスタンスコネクトエンドポイント ※マルチAZ不可 ssm用エンドポイントx3、S3エンドポイント/CloudWatch Logsエンドポイント(ログ出力する場合) ※マルチAZ可
ログ トンネル接続のログ(ユーザ名、時刻など) 1),2) セッション接続のログ(ユーザ名、時刻など)
3):セッション接続のログ(ユーザ名、時刻など)に加え、S3/CloudWatch Logs出力を有効にしている場合、コマンド実行結果

4.2 ユースケース毎の使い分け(自分の理解)

全てのパターンではないが、「こんな要件だったらどれがよいか?」を考えてみる。

  • 一時的な開発用などで、なるべくシンプルにRDP接続したい ⇒ Instance Connect
  • クライアントPCに追加ソフトを入れたくない(社用PCなど)⇒ Session Manager のパターン2) Fleet ManagerでのRDP接続
  • RDPではなくCLI(PowerShell)だけ使えればよいので、操作ログ(実行したコマンド)を全てログ出力したい ⇒ Session Manager のパターン3) Fleet Managerでのターミナル接続
  • RDPもしたいし、操作ログ(実行したコマンド)も取りたい ⇒ 今回の検証範囲では実現不可なので、別途インスタンス内でログを取得したり、新機能の「ジャストインタイムノードアクセス」に紐づく操作録画機能を使ったりする必要あり

5. 手順

5.1 事前準備

VPC作成

  • 構成図のVPC(Public Subnet x2, Private Subnet x2)を作成する(今回はPublic Subnetは特に使用しない)。
  • NAT Gatewayは作成しないため、Private Subnetからのインターネット接続は不可。

Windows Server 2022の作成

  • 接続テスト先として、Private Subnet内にWindows Server 2022 インスタンスを作成する。
  • AMI: Windows_Server-2022-Japanese-Full-Base-2025.12.10 (日本語版のAMIは、AMI検索時、「Japanese」で検索すると出てくる)
  • Amazonが提供するAMIのため、SSM Agent(Session Managerの利用時に必要)はプリインストールされている。

5.2 Instance Connect による接続

接続に必要な設定

  • VPC内にインスタンスコネクトエンドポイントを作成し、Outbound(インスタンス向け)のRDP(3389/tcp)が許可されたセキュリティグループを設定する。
  • Window Server のインスタンスには、インスタンスエンドポイントからのRDP(3389/tcp)を許可する。
  • PC には AWS CLI をインストールする。

接続手順

  • PCでトンネルを開始する。
C:\Users\user1>aws login  ※アクセスキーの設定などでも可
C:\Users\user1>aws ec2-instance-connect open-tunnel --instance-id [インスタンスID] --remote-port 3389 --local-port 13389 --region ap-northeast-3
  • PCのRDPクライアントで、localhost:13389を指定して接続し、OSのID/passwordを入力してログオンする。

image.png

  • PCのRDPクライアントからログオンできる。

image.png

ログ

  • トンネルを開始したログが、CloudTrailに記録される。
  • トンネルを開始したIAMユーザ、時刻、SRCIPなどが記録される。トンネル確立後に実際にRDP接続をしたかどうか、VPC内に複数のサーバがある場合にどのサーバにRDPしたのか、サーバ内でどういう操作したのかなどは分からない。

image.png

image.png

image.png

5.3 Session Manager による接続: 1) PCのRDPクライアント

Instance Connectと同様、初めにトンネル的なもの(セッション)を確立した上で、PCのRDPクライアントを用いてRDP接続する。

接続に必要な設定

  • VPC内にVPCエンドポイント (ssm, ssmmessages, ec2messages) を作成し、Inbound(インスタンスから)の443/tcpが許可されたセキュリティグループを設定する。
  • 今回はS3/CloudWatch Logsへのログ出力もテストするため、S3/CloudWatch Logsのインターフェースエンドポイントも追加で作成する。「プライベートDNS名を有効化」にチェックする。
  • 上記のVPCエンドポイントについては、NATGW経由などでのインターネット接続があればそれでも代替可。
  • インスタンスにSession Manager Agentがない場合はインストールする。(Amazonが提供するAMIであれば基本プリインストールされているため今回は対応不要)
  • インスタンスにSession Managerを使用するためのロールを付与する。ロールには許可ポリシー「AmazonSSMManagedInstanceCore」を含める。今回はさらにログ出力のため、CloudWatch 及び S3 への権限を追加する(今回は検証のためCloudWatchFullAccess、S3FullAccessを付与)。
  • PC には AWS CLI と、Session Manager Plugin をインストールする。
  • セッションマネージャーの設定画面でログに関する設定を追加することで、CloudWatchログ記録と、S3ログ記録を有効にすることができる。

image.png

接続手順

  • PCでセッションを開始する。
C:\Users\user1>aws login   ※アクセスキーの設定などでも可
C:\Users\user1>aws ssm start-session --target [インスタンスID] --document-name AWS-StartPortForwardingSession --parameters portNumber="3389",localPortNumber="13389" --region ap-northeast-3
  • PCのRDPクライアントで、localhost:13389を指定して接続し、OSのID/passwordを入力してログオンする(画面はInstance Connectの場合と同じなので省略)。

ログ

  • マネコンの「セッションマネージャー」-「セッション履歴」で、接続したIAMユーザ、接続先インスタンス、開始・終了時刻を確認することができる。(以下の画面は1回の接続の1行のログ。ログが横に長い)

image.png
image.png

  • CloudTrailでも同様のログを確認可能。
    image.png

5.4 Session Manager による接続: 2) Fleet ManagerのRDP接続

2)Fleet Manager 内のRDP接続では、ブラウザ(マネコン)の中でRDPを開いて接続する。1) PCのRDPクライアント の場合と異なり、PC側にAWS CLIやSession Manager Pluginは不要だが、ブラウザ内での操作となるため若干使いにくい。

接続手順

  • Session Manager -> フリートマネージャー -> マネージドノード にて、接続したいインスタンスを選択し、ノードアクション -> 接続 -> リモートデスクトップで接続

image.png

  • ユーザ名/パスワード、もしくはキーペアを用いて認証する。

image.png

  • マネコンの中でRDPを行うことができる。

image.png

ログ

    1. PCのRDPクライアント からの接続の場合同様、マネコンの「セッションマネージャー」-「セッション履歴」で、接続したIAMユーザ、接続先インスタンス、開始・終了時刻を確認することができる。(以下の画面は1回の接続の1行のログ。ログが横に長い)

image.png
image.png

  • CloudTrailでも同様のログを確認可能。

image.png

  • フリートマネージャー - リモートデスクトップ - 接続履歴 でも、対象のインスタンスへの接続履歴の確認が可能。

image.png

5.5 Session Manager による接続: 3) ターミナル接続

Session Managerの機能として、RDPではなく、ターミナル接続(PowerShellだけが使える)を行うことが可能。その場合はGUIが使えず不便だが、実行したコマンドを記録できるメリットがある。

接続手順

  • Session Manager -> フリートマネージャー -> マネージドノード にて、接続したいインスタンスを選択し、ノードアクション -> 接続 -> ターミナルセッションで接続
  • ID/パスワードなどの入力なしに、PowerShellの画面を開くことができる。

image.png

ログ

  • 1 ) PCのRDPクライアント、2) Fleet ManagerのRDP接続 の接続の場合同様、マネコンの「セッションマネージャー」-「セッション履歴」で、接続したIAMユーザ、接続先インスタンス、開始・終了時刻を確認することができる。(以下の画面は1回の接続のログ。ログが横に長い)

image.png

image.png

  • CloudTrailにもRDPの時同様のログが出力される。

image.png

  • ターミナル接続の場合、事前にCloudWatch Logs/S3へのログ出力を有効な設定にしている場合、実行したコマンドがログ記録される。

  • CloudWatch Logs 出力のイメージ(pwdコマンドが記録されている部分)

image.png

  • S3出力のイメージ (JSONではなくてテキストなので、人の目にはやさしい)
**********************
Windows PowerShell トランスクリプト開始
開始時刻: 20260206084308
ユーザー名: WORKGROUP\SYSTEM
RunAs ユーザー: WORKGROUP\SYSTEM
構成名: 
コンピューター: EC2AMAZ-79HQQUB (Microsoft Windows NT 10.0.20348.0)
ホスト アプリケーション: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
プロセス ID: 5912
PSVersion: 5.1.20348.4294
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.20348.4294
BuildVersion: 10.0.20348.4294
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
トランスクリプトが開始されました。出力ファイル: C:\ProgramData\Amazon\SSM\InstanceData\i-xxxxxxxxxxxxxxxx\session\orchestration\user-6cj2s97dh7iqbxn2veka73jei4\Standard_Stream\logTempFile.log
PS C:\Windows\system32> &'C:\Program Files\Amazon\SSM\ssm-session-logger.exe' C:\ProgramData\Amazon\SSM\InstanceData\i-xxxxxxxxxxxxxxxx\session\orchestration\user-6cj2s97dh7iqbxn2veka73jei4\Standard_Stream\ipcTempFile.log true

Initializing new seelog logger
New Seelog Logger Creation Complete
2026-02-06 08:43:13.4741 INFO [ssm-session-logger] ssm-session-logger - v3.3.3185.0
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新�機�能�と�改�善�の�た�め�に�最�新�の� PowerShell を�イ�ン�ス�ト�ー�ル�し�て�く�だ�さ�い�!https://aka.ms/PSWindows

PS C:\Windows\system32> pwd

Path
----
C:\Windows\system32


PS C:\Windows\system32> cd c:\
PS C:\>
PS C:\Windows\system32> exit

**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20260206084413
**********************

6. 所感

  • 検証パターンが意外と多くなり、記事構成が複雑になってしまった。
  • 今回の検証範囲(従来のInstace Connect / Session Manager)の場合、RDPで接続した場合に、RDPセッションの中でどういう操作をしたのかの記録は取れない。
  • そこまでの対応が必要な場合、こちらの記事「AWS Systems Managerのリモートデスクトップ接続の内容を録画してみた」のように、「ジャストインタイムノードアクセス」を使えば可能になるようなので、こちらも検証してみたい。
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?