AWS-Systems-Manager

AWS Systems Managerのリモートデスクトップ接続の内容を録画してみた

はじめに

こんにちは、ディーネットの山田です。

AWS Systems ManagerのFleet Managerで利用できる画面録画機能を使ってみました。

画面録画機能を利用することで、Fleet Manager経由で操作したリモートデスクトップ接続の画面が動画(mp4)として録画されて、S3バケットに保存されました。

作業内容

画面録画の結果を記録するS3バケットを作成

画面録画を記録するためのS3バケットを作成します。

バケット名は、任意のもので構いません。

S3バケットポリシーを設定

S3バケットポリシーに画面録画の内容を記録できるように「ssm-guiconnect.amazonaws.com」サービスからの書き込みアクセスを許可します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ConnectionRecording",
            "Effect": "Allow",
            "Principal": {
                "Service": "ssm-guiconnect.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::xxxxxxxx-fleetmanager-rdp-rec",
                "arn:aws:s3:::xxxxxxxx-fleetmanager-rdp-rec/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{AWSアカウントID}"
                }
            }
        }
    ]
}

KMSでキーを作成

画面録画を記録するためには、KMSでキーの作成が必要になるので、KMSのキーを作成します。

キーポリシーを設定

ブログの検証用に権限範囲などは、適切に設定しておりませんが本番利用される際は、最小権限の試行となるようにキーポリシーを調整してください。

{
    "Version": "2012-10-17",
    "Id": "key-policy-for-blog-demo",
    "Statement": [
        {
            "Sid": "EnableRootAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{AWSアカウントID}:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowGUIConnectServiceViaS3",
            "Effect": "Allow",
            "Principal": {
                "Service": "ssm-guiconnect.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{AWSアカウントID}"
                },
                "StringLike": {
                    "kms:ViaService": "s3.ap-northeast-1.amazonaws.com"
                }
            }
        }
    ]
}

「ジャストインタイムノードアクセス」を事前に有効化

「ジャストインタイムノードアクセス」が無効だと、リモートデスクトップ接続記録を有効化できない。

先に「ジャストインタイムノードアクセス」を有効化する。

「ジャストインタイムノードアクセス」を有効化することで、特権アクセスのようにどのユーザーにアクセスを許可するといった制御が行えますが、そういった設定は今回行いません。

「ジャストインタイムノードアクセス」を有効化した後、改めてリモートデスクトップ接続記録を有効化を実施

※ジャストインタイムノードアクセスを有効化すると、WebUIのスタイルが変わるのはよく分かっていません……

記録の動作検証

対象のEC2インスタンスにリモートデスクトップ接続してみます

少しだけいろいろと操作してみます

接続履歴に残ります

Recording statusがFinishedのステータスになれば、先ほど設定したS3バケットに録画データが保存されます。

https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-just-in-time-node-access-rdp-recording.html#rdp-recording-status

録画データが正しく保存された

mp4ファイルなので、ローカルPC環境にダウンロードして再生することで閲覧可能

まとめ

  • AWS Systems ManagerのFleet Managerで利用できる画面録画機能を利用することで、操作した内容を記録することができました。
  • 万が一不正な操作が行われたときの証跡や、作業を行った際の証跡として有効活用できることがわかりました。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA