fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

待望!Session Managerのリアルタイムログ配信機能

万歳!素晴らしいアップデートが出ました!

aws.amazon.com

Session Managerとは

AWSにはSystems Managerという、EC2を管理するサービスがあり、その中の1つの機能としてSession Managerがあります。 Session Managerを使用して、EC2やオンプレミスのサーバへのSSHやRDPで接続できます。

詳細や始め方は過去の記事にも書いていますのでそちらも良ければ見てみてください。

fu3ak1.hatenablog.com

fu3ak1.hatenablog.com

今回のアップデートについて

Session Managerには操作ログをS3またはCloudWatch Logsに転送するという便利な機能があるのですが、これまでは操作終了時にログを転送するという仕様でした。

(ログ保存機能の私の過去記事より)

1点注意なのは、ログ転送はリアルタイムではないという点です。 セッション終了時にログを転送する仕組みとなっているため、shutdownコマンドでOS停止したり、ブラウザを閉じて終了した場合は、ログは転送されません。

これがリアルタイム(操作中に転送)になりました!現在はCloudWatch Logsのみ対応のようです。

リアルタイムになったことで、強制的なログ取得、またログ監視をして不正操作時にセッション強制中断など、よりセキュアなログイン管理ができそうです。

試してみる

では実際に試してみます。Session Managerの基本的な使いかたは過去記事に書いていますのでここでは割愛します。

ログ転送の設定

Systems Manager>Session Manager>設定の順で、設定画面に遷移します。

CloudWatch loggingのところをEnableにすると、「Stream session logs (Recommended)」という項目が!こちらを選択し(デフォルト)、任意のCloudWatch ロググループを選択します。

※ロググループは事前作成が必要です。暗号化を有効にする場合はKMSキーを作成してロググループを暗号化しておく必要があります。

f:id:fu3ak1:20201119094627p:plain

上記のとおり設定したら保存します。

EC2へのアクセス

Session Managerでアクセスしてみます。接続までの画面遷移方法は色々あるのですが、私は最近ではEC2の画面から接続>セッションマネージャーで使用することが多いです。

f:id:fu3ak1:20201119100233p:plain

が、失敗。。初期状態では、SSM Agentのバージョンが低いようで接続できないようです。

f:id:fu3ak1:20201119095437p:plain

SSM AgentのバージョンUP

接続できないのでバージョンUPします。Systems Manager経由のバージョンUPが楽なのでそれを使用します。

Systems Manager>Run CommandでRun Command画面へ遷移し、コマンドドキュメントとして「AWS-UpdateSSMAgent」を使用します。(SSMで検索すればOK)

f:id:fu3ak1:20201119100734p:plain

パラメータはデフォルトでOKです。最新にバージョンアップされます。

f:id:fu3ak1:20201119100858p:plain

バージョンUPしたいインスタンスを手動で選択します。

f:id:fu3ak1:20201119101040p:plain

その他はデフォルトで、最下部の実行を押します。すると以下のように正常終了するはずです。

f:id:fu3ak1:20201119101153p:plain

EC2へのアクセス(リトライ)

もう一度接続します。

f:id:fu3ak1:20201119100233p:plain

接続できました!!

f:id:fu3ak1:20201119101300p:plain

試しに以下のようにコマンドを実行してみます。

$ bash
$ date
$ pwd

f:id:fu3ak1:20201119100300p:plain

そのままセッションを終了せずに CloudWatchログを見てみます。

ありますね!! CloudWatchログの画面をそのまま見るとわかりにくいですが、確かに実行したコマンド(bash、date、pwd)が確認できます。

f:id:fu3ak1:20201119101546p:plain

実運用になった場合は、CloudWatch Logs Insightsや、Elasticsearchに送るなど、可視化の工夫が必要です。

まとめ、感想

すばらしい機能です。Security Groupの許可不要で、ログも強制的に取得可能となった今、監査要件の高い本番環境でも使用できるのではないでしょうか。

私としても、今後はSSHアクセスではなくSession Managerで運用できないか考えていきたいと思います。