yuj1osm's tech blog

クラウドやセキュリティなど

Session Managerのログ保存

前回、「Session Managerを使用したEC2接続」をご紹介しましたが、この機能を使ってコマンドログを取ることができます。
前回の記事の設定を流用します。

Session ManagerでコマンドログをS3に保存する

バケットを作成

ログ保存用のバケットを作成します。

暗号化は「Amazon S3 マネージドキー (SSE-S3)」を選択し、その他の設定はデフォルトのままにします。

IAMロールを設定

S3にログを保存するためのインラインポリシーをロールに追加します。

S3保存と暗号化に必要な権限を付与します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::sessionmanager-log-bucket/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "*"
        }
    ]
}

ポリシー作成は公式ドキュメントが参考になります。

docs.aws.amazon.com

S3エンドポイントを作成

インターネットを経由しない閉じた環境でS3に接続するため、S3エンドポイントをGateway型で作成します。

インスタンスが配置されているVPCと、サブネットで指定しているルートテーブルを選択します。

Session Managerのログ設定を有効化

System Managerの画面からSession Managerのログ設定を有効化します。

S3へのログ転送と暗号化を有効化し、転送先のバケットを指定します。

Session Managerで接続

EC2の画面から、Session Managerで接続します。

適当なコマンドを入力し、終了します。

Session Managerの画面で、セッション履歴が確認できます。

バケットにログファイルが格納されています。

まとめ

Session Managerでコマンドログを取る方法を紹介しました。
今回はEC2と同一アカウントのS3に保存しましたが、ログを保存するアカウントを別途用意するとより安心です。
さらに、権限を正しく設定することで、ログの改ざんを防ぐことも重要になります。