SSMのセッションマネージャのアイドルタイムアウトとストリームログ出力を試してみた

アイドルタイムアウト時間の指定と、操作ログのストリーム出力に対応した SSMのセッションマネージャを試してみました
2020.11.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS システムズマネージャ (AWS SSM) のセッションマネージャがアップデート。 アイドル状態のセッションタイムアウト時間の変更と、CloudWatch Logs への ストリームセッションログ出力が可能になりました。

その動作について試す機会がありましたので、紹介させていただきます。

SSM設定

AWS SSM ダッシュボード、セッションマネージャの画面を利用します。

タイムアウト

アイドルセッションのタイムアウト時間、デフォルトの20分を、1~60分に変更可能になりました。

ログ設定

これまでの セッションマネージャも CloudWatch Logs へログ出力する利用が可能でしたが、セッション終了後に操作ログが転送される仕様でした。

今回のアップデートにより、コマンド実行操作毎にログ記録が行われる様になりました。

CloudWatch Logs

ログ出力先として利用するロググループを新規作成して利用しました。

任意のロググループ名と保持期間を指定、暗号化の設定は省略しました。

SSM

CloudWatch logging を以下の指定で設定しました。

  • CloudWatch logging を「有効」
  • 暗号化の強制 (Enforce encryption) は「無効」
  • 先に作成したロググループを出力先として指定

EC2

セッションマネージャー動作確認を行うEC2は、以下の環境を利用しました。

  • OS: Amazon Linux 2 AMI (HVM),
  • AMI: ami-0ede32f8db20757b3
  • amazon-ssm-agentバージョン: 3.0.356.0
  • EC2ロール: 管理ポリシー「AmazonSSMManagedInstanceCore」をアタッチ済

確認

セッションマネージャを利用して検証対象のEC2インスタンスに接続、以下のコマンド操作を実施しました。

sh-4.2$ w
 13:50:27 up 1 day, 18:24,  0 users,  load average: 0.07, 0.03, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
sh-4.2$  echo "hello world"
hello world

ログ

セッション履歴より「CloudWatch Logs」を指定

ログ出力先として指定したロググループに、ほぼリアルタイムで操作ログが確認できました。

ログ抜粋(テキスト)

{
    "eventVersion": "1.0",
    "eventTime": "2020-11-19T13:50:27Z",
    "awsRegion": "ap-northeast-1",
    "target": {
        "id": "i-00000000000000000"
    },
    "userIdentity": {
        "arn": "arn:aws:sts::000000000000:assumed-role/0000/0000"
    },
    "runAsUser": "ssm-user",
    "sessionId": "0000-00000000000000000",
    "sessionData": [
        "sh-4.2$ sh-4.2$ w",
        " 13:50:27 up 1 day, 18:24,  0 users,  load average: 0.07, 0.03, 0.00",
        "USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT"
    ]
}
{
    "eventVersion": "1.0",
    "eventTime": "2020-11-19T13:50:31Z",
    "awsRegion": "ap-northeast-1",
    "target": {
        "id": "i-00000000000000000"
    },
    "userIdentity": {
        "arn": "arn:aws:sts::000000000000:assumed-role/0000/0000"
    },
    "runAsUser": "ssm-user",
    "sessionId": "0000-00000000000000000",
    "sessionData": [
        "sh-4.2$ echo hello",
        "hello"
    ]
}

タイムアウト

セッションマネージャで接続したターミナルを無操作で放置、アイドルタイムアウトの指定時間が経過した後、強制切断される事が確認できました。

まとめ

SSM、セッションマネージャのアップデートにより、PCI DSS などのセキュリティ指針に準拠した利用が実現しやすくなりました。

また、操作ログのストリーミング出力が可能になった事で、ニアリアルタイムな作業内容の把握や操作ログの回収漏れを抑制する効果も期待できると思われますので、ご活用ください。