概要
SSM(AWS Systems Manager) Session Managerは以下の理由で便利なのでよく使っていた。
- 踏み台サーバ構築する必要ない
- ポート(22,3389)開く必要ない
- AWSコンソールかCLIベースでアクセスできる
- CloudTrailとかS3とかCloudWatch Logsにログ残せる
ひと昔前の運用方式を考えてみると、踏み台サーバたてて、そこから各サーバに接続する方式が多いと思う。かくいう私もそのケースが多い。
だがしかし、踏み台ベースの運用って怖いものがあって、例えば踏み台サーバがSPOFになる事もままある。
そうすると障害が発生した時に踏み台も死んでると何もできないという運用にはあってはならない状況が発生してしまう。
かといって踏み台サーバを冗長化しておくっていうのも費用がかかってしまうのでやっているケースは少ない。
また、他の考慮点として操作ログをどのように取得して保存しておくのか?といった事を考慮して仕組みを作るのも手間だったりする。
LDAP連携とかするのもありだが、結局OSのローカルユーザ作ってログ取るみたいな運用したり、サードパーティのツール入れたりする。
正直そういう仕組み作り自体面倒であったり、ユーザが増えるにしたがって運用が追い付かなかったりする例もよくある。
こういった悩みを解決してくれるサービスとして Session Manager があり便利であるので利用していました。
しかしながら、Windows Serverってコマンドライン(Powershell)よりかはGUI使いたい時ってありますよね。
そんな悩みを解決してくれる手段として Fleet Manager があります。
※結局ログ取る部分はFleet Managerでは現状解決できてなくて、Session Managerのコマンドベースの運用であればログ取れるのだが。
WindowsインスタンスへのSSM経由での接続方法
という訳で使ってみた。
1. SSMマネージドインスタンスとして設定する
以下を参考に管理対象のWindowsインスタンスがマネージドインスタンスとなるようにVPCエンドポイントの設定、EC2インスタンスのIAMロールの設定、Security Groupのアウトバウンドの設定を実施します。
順を追って設定する人向け
2. 鍵またはパスワード認証を用いて接続する
今回はEC2インスタンスを起動する時に指定したキーペアを用いて接続する
使ってみた感想
ポートフォワードして、、みたいなのが要らないので凄く便利だと思いました。
しかしながら、実運用で使う場合はちょっと考えなければならないな~と思うところも多々ありました。
現状はSession Manager(CUI)でログ取りながら操作=>どうしてもGUI使わないと、って時はFleet Managerかなと思いました。
メリット
- そもそも踏み台サーバが必要ない
- EC2インスタンスに直接接続できるので踏み台サーバいらない
- インスタンスにGIP要らない
- SSMの良いところで、パブリックIPを持っていないインスタンスにもFleet Manager経由で接続できる
- もちろんSession Manager経由でPowershellも使える
- ブラウザ経由でクリップボードのコピー&ペーストができる
- ローカル<=>リモート間双方向でのコピペができる
- インスタンスのインバウンドポートを一切解放しなくてよい
- 余計なセキュリティホールをつくらなくていい
- GIP変更に伴う穴あけ等が必要ない
- フルスクリーンでの作業も可能
- ブラウザ経由のRDPでもフルスクリーン対応しているので小文字が苦手な人でも大丈夫
- OS側のグループポリシーで2セッションまで有効化すると同じユーザでFleet Managerから2セッションまでは接続できる
- 2セッションの両方でWindowsOS内のブラウザを起動した場合、片方のユーザでプロセス掴んでいてEdgeが片方のセッションで上がらなかったりするので使用するアプリケーションによっては同じユーザでの接続は考慮する必要あり
デメリット
- ブラウザ経由でのファイルの受け渡しはできない
- フリードマネージャー経由でファイルシステムの表示はできるのですが、ファイルの受け渡しは現状ではできないようです
- 操作ログが取れない
- Session ManagerであればPowershellでの操作履歴をS3やCloudWatch Logsに操作ログを取れるのですが、Fleet Managerの場合RDP接続での画面操作になるので何かしらツールを入れないとログを取れないみたいです。ここはアップデートしてほしいですね。
- 画面操作に若干ラグがある
- 人によっては気にならないかもしれないですがフルスクリーンにした時の画面操作(特に入力)の若干のラグが気になりました
- パフォーマンスカウンターでCPU使用率とか取得できるみたいですが、KMSで暗号化していないと機能が使えない
- KMSの暗号化キーがマネージドインスタンス共通みたいなのでインスタンス毎に分離できるようにできるともっといいと思いました