セッションロギングの有効化と無効化 - AWS Systems Manager

セッションロギングの有効化と無効化

セッションロギングは、Systems Manager コンソールでの現在のセッションと完了済みのセッションに関する情報を記録します。また、AWS アカウント でのセッション中に実行されるコマンドの詳細をログに記録することもできます。セッションロギングでは、以下を実行できます。

  • アーカイブの目的でセッションログを作成し、保存する。

  • 過去 30 日間に、Session Manager を使用してマネージドノードに実行されたすべての接続の詳細を示すレポートを生成する。

  • Amazon Simple Notification Service (Amazon SNS) 通知など、AWS アカウント でのセッションロギングに関する通知を生成する。

  • AWS Lambda 関数の実行、AWS CodePipeline パイプラインの開始、または AWS Systems Manager Run Command ドキュメントの実行など、セッション中に行われたアクションの結果として、AWS リソースで別のアクションを自動的に開始する。

重要

Session Manager の次の要件と制限事項に注意してください。

  • Session Manager は、セッション設定に応じて、セッション中に入力したコマンドとその出力を記録します。パスワードなどの機密データがセッションログに表示されないようにするには、セッション中に機密データを入力するときに次のコマンドを使用することをお勧めします。

    Linux & macOS
    stty -echo; read passwd; stty echo;
    Windows
    $Passwd = Read-Host -AsSecureString
  • Windows Server 2012 またはそれ以前を使用している場合、ログ内のデータが最適にフォーマットされていない可能性があります。最適なログ形式のために、Windows Server 2012 R2 以降の使用をお勧めします。

  • Linux または macOS のマネージドノードを使用している場合は、スクリーンユーティリティがインストールされていることを確認します。インストールされていない場合、ログデータが切り捨てられることがあります。Amazon Linux 1、Amazon Linux 2、AL2023、および Ubuntu Server では、スクリーンユーティリティがデフォルトでインストールされています。スクリーンを手動でインストールするには、Linux のバージョンに応じて、sudo yum install screen または sudo apt-get install screen のいずれかを実行します。

  • ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH はすべてのセッションデータを暗号化し、Session Manager は SSH 接続のトンネルとしてのみ機能するためです。

セッションデータのログ記録に Amazon S3 または Amazon CloudWatch Logs を使用するために必要なアクセス許可の詳細については、「Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成」を参照してください。

Session Manager のログ記録のオプションの詳細については、次のトピックを参照してください。

Amazon CloudWatch Logs を使用してセッションデータをストリーミングする (コンソール)

セッションデータログの連続ストリームを Amazon CloudWatch Logs に送信できます。セッションデータのストリーミングには、ユーザーがセッションで実行したコマンド、コマンドを実行したユーザーの ID、セッションデータが CloudWatch Logs にストリーミングされた時のタイムスタンプなど、重要な詳細情報が含まれます。セッションデータをストリーミングする場合、ログは JSON 形式で、既存のログソリューションとの統合に役立ちます。対話型コマンドでは、セッションデータのストリーミングはサポートされていません。

注記

Windows Server のマネージドノードからセッションデータをストリーミングする場合、PowerShell 5.1 以降がインストールされている必要があります。デフォルトでは、Windows Server 2016 以降には必要な PowerShell バージョンがインストールされています。ただし、Windows Server 2012 と 2012 R2 には、デフォルトで必要な PowerShell バージョンがインストールされていません。Windows Server 2012 または 2012 R2 マネージドノードの PowerShell をまだ更新していない場合、Run Command を使用して更新できます。Run Command を使用した PowerShell の更新方法については、「Run Command を使用して PowerShell を更新する」を参照してください。

重要

Windows Server のマネージドノードに PowerShell トランスクリプションポリシー設定が構成されている場合、セッションデータをストリーミングができません。

Amazon CloudWatch Logs を使用してセッションデータをストリーミングするには (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Session Manager] を選択します。

  3. [Preferences (設定)] タブを選択してから、[Edit (編集)] を選択します。

  4. CloudWatch のログ記録で [有効にする] の横にあるチェックボックスをオンにします。

  5. [Stream session logs (セッションログのストリーム)] オプションを選択します。

  6. (推奨) [Allow only encrypted CloudWatch log groups (暗号化された CloudWatch ロググループのみを許可する)] の横にあるチェックボックスをオンにします。このオプションが有効になっている場合、ログデータはロググループに指定されたサーバー側の暗号化キーを使用して暗号化されます。CloudWatch Logs に送信されるログデータを暗号化しない場合は、このチェックボックスをオフにします。ロググループで暗号化が有効になっていない場合も、このチェックボックスをオフにする必要があります。

  7. [CloudWatch Logs] の場合、セッションログのアップロード先である AWS アカウント の既存の CloudWatch Logs ロググループを指定するには、次のいずれかを選択します。

    • セッションログデータを保存するためにアカウントにすでに作成されているテキストボックスにロググループの名前を入力します。

    • ロググループを参照: セッションログデータを保存するためにアカウントですでに作成されているロググループを選択します。

  8. [Save] を選択します。

Amazon S3 を使用してセッションデータをログ記録する (コンソール)

デバッグおよびトラブルシューティングの目的で、指定した Amazon Simple Storage Service (Amazon S3) バケットにセッションログデータを保存することができます。デフォルトのオプションでは、ログは暗号化された Amazon S3 バケットに送信されます。暗号化は、AWS KMS key または Amazon S3 サーバー側暗号化 (SSE) キー (AES-256) のいずれかで、バケットに指定されたキーを使用して実行されます。

重要

仮想ホスティング形式のバケットを Secure Sockets Layer (SSL) で使用する場合、SSL ワイルドカード証明書はピリオドを含まないバケットにのみ一致します。この問題を回避するには、HTTP を使用するか、または独自の証明書検証ロジックを記述します。仮想ホスティング形式のバケットを使用するときは、バケット名にピリオド (「.」) を使用しないことをお勧めします。

Amazon S3 バケットの暗号化

暗号化を使用して Amazon S3 バケットにログを送信するには、バケット上で暗号化を有効にする必要があります。S3 バケットの暗号化の詳細については、「Amazon S3 バケット用の Amazon S3 デフォルト暗号化」を参照してください。

カスタマー管理のキー

ユーザー自身が管理する KMS キーを使用してバケットを暗号化する場合、インスタンスにアタッチされた IAM インスタンスプロファイルには、キーを読み取るための明示的なアクセス許可が必要です。AWS マネージドキーを使用している場合は、インスタンスにこの明示的なアクセス許可は必要ありません。インスタンスプロファイルに CMK 使用のためのアクセスを提供する方法の詳細については、AWS Key Management Service デベロッパーガイドキーユーザーにキーの使用を許可するを参照してください。

Amazon S3 バケットにセッションログを保存するように Session Manager を設定するには、次の手順に従います。

注記

AWS CLI を使用して、セッションデータ送信先の Amazon S3 バケットを指定したり変更したりすることもできます。詳細については、Session Manager 設定の更新 (コマンドライン) を参照してください。

Amazon S3 を使用してセッションデータをログに記録するには (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Session Manager] を選択します。

  3. [Preferences (設定)] タブを選択してから、[Edit (編集)] を選択します。

  4. [S3 ロギング] で [有効にする] チェックボックスをオンにします。

  5. (推奨) [Allow only encrypted S3 buckets (暗号化された S3 バケットのみを許可する)] の横にあるチェックボックスをオンにします。このオプションが有効になっている場合、ログデータはバケットに指定されたサーバー側の暗号化キーを使用して暗号化されます。Amazon S3 に送信されるログデータを暗号化しない場合は、このチェックボックスをオフにします。S3 バケットで暗号化が有効になっていない場合も、このチェックボックスをオフにする必要があります。

  6. [S3 bucket name (S3 バケット名)] には、次のいずれかを選択します。

    注記

    仮想ホスティング形式のバケットを使用するときは、バケット名にピリオド (「.」) を使用しないことをお勧めします。Amazon S3 バケット命名規則の詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットの制約と制限」を参照してください。

    • [Choose a bucket name from the list (リストからバケット名を選択)]: アカウントに既に作成された Amazon S3 バケットを選択してセッションログデータを保存します。

    • [Enter a bucket name in the text box (テキストボックスにバケット名を入力)]: セッションログデータを保存するためにアカウントに既に作成されている Amazon S3 バケットの名前を入力します。

  7. (オプション) [S3 key prefix (S3 キープレフィックス)] には、選択したバケットにログを保存する既存のフォルダまたは新しいフォルダの名前を入力します。

  8. [Save] を選択します。

Amazon S3 および Amazon S3 バケットの使用の詳細については、Amazon Simple Storage Service ユーザーガイドおよび Amazon Simple Storage Service ユーザーガイドを参照してください。

Amazon CloudWatch Logs を使用してセッションデータをログ記録する (コンソール)

Amazon CloudWatch Logs を使用すると、さまざまな AWS のサービス からのログファイルについて、モニタリング、保存、アクセスを行うことができます。デバッグおよびトラブルシューティングの目的で、セッションログデータを CloudWatch Logs ロググループに送信できます。デフォルトのオプションでは、KMS キーを使用してログデータを暗号化して送信するように設定されていますが、暗号化の有無にかかわらずデータをロググループに送信できます。

セッションの最後にセッションログデータを CloudWatch Logs ロググループに送信するように AWS Systems Manager Session Manager を設定するには、以下の手順を実行します。

注記

AWS CLI を使用して、セッションデータの送信先の CloudWatch Logs ロググループを指定したり変更したりすることもできます。詳細については、Session Manager 設定の更新 (コマンドライン) を参照してください。

Amazon CloudWatch Logs を使用してセッションデータをログ記録するには (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Session Manager] を選択します。

  3. [Preferences (設定)] タブを選択してから、[Edit (編集)] を選択します。

  4. CloudWatch のログ記録で [有効にする] の横にあるチェックボックスをオンにします。

  5. [セッションログをアップロード] オプションを選択します。

  6. (推奨) [Allow only encrypted CloudWatch log groups (暗号化された CloudWatch ロググループのみを許可する)] の横にあるチェックボックスをオンにします。このオプションが有効になっている場合、ログデータはロググループに指定されたサーバー側の暗号化キーを使用して暗号化されます。CloudWatch Logs に送信されるログデータを暗号化しない場合は、このチェックボックスをオフにします。ロググループで暗号化が有効になっていない場合も、このチェックボックスをオフにする必要があります。

  7. [CloudWatch Logs] の場合、セッションログのアップロード先である AWS アカウント の既存の CloudWatch Logs ロググループを指定するには、次のいずれかを選択します。

    • [Choose a log group from the list (リストからロググループを選択する)]: アカウントに既に作成されたロググループを選択してセッションログデータを保存します。

    • [Enter a log group name in the text box (テキストボックスにロググループ名を入力)]: セッションログデータを保存するためにアカウントにすでに作成されているロググループの名前を入力します。

  8. [Save] を選択します。

CloudWatch Logs の使用の詳細については、Amazon CloudWatch Logs ユーザーガイドを参照してください。

CloudWatch Logs と Amazon S3 での Session Manager ロギングの無効化

アカウントでセッションロギングを無効にするには、Systems Manager コンソールまたは AWS CLI を使用できます。

セッションロギングを無効にする (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Session Manager] を選択します。

  3. [設定] タブを選択してから、[編集] を選択します。

  4. CloudWatch ロギングを無効にするには、[CloudWatch ロギング] セクションで、[有効化] チェックボックスをオフにします。

  5. S3 ロギングを無効にするには、[S3 ロギング] セクションで、[有効化] チェックボックスをオフにします。

  6. [Save] を選択します。

セッションロギングを無効にする (AWS CLI)

AWS CLI を使用してセッションロギングを無効にするには、「Session Manager 設定の更新 (コマンドライン)」の手順を実行してください。

JSON ファイルで、s3BucketNamecloudWatchLogGroupName の入力には値が含まれないようにしてください。例:

"inputs": { "s3BucketName": "", ... "cloudWatchLogGroupName": "", ... }

代わりに、S3*cloudWatch* の入力をすべて削除してロギングを無効化することもできます。