EC2 インスタンススタック | Log4j 情報を収集する - AMS アドバンスト変更タイプリファレンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EC2 インスタンススタック | Log4j 情報を収集する

指定された EC2 インスタンスでの Log4j2 の出現を識別するレポートを生成します。これはベストエフォートレポートであり、一部の出現はレポートから検出されない場合があります。

完全分類: 管理 | 高度なスタックコンポーネント | EC2 インスタンススタック | log4j 情報を収集する

変更タイプの詳細

変更タイプ ID

ct-19f40lfm5umy8

現在のバージョン

2.0

予想される実行期間

360 分

AWS の承認

必須

お客様の承認

不要

実行モード

自動

追加情報

他の CTsを更新する

AMS コンソールでこの変更タイプを以下に示します。

Information panel for Gather Log4j Information task, showing ID, execution mode, and description.

仕組み:

  1. RFC の作成ページに移動します。AMS コンソールの左側のナビゲーションペインでRFCs をクリックして RFCsリストページを開き、RFC の作成をクリックします。

  2. デフォルトの変更タイプ参照ビューで一般的な変更タイプ (CT) を選択するか、カテゴリ別選択ビューで CT を選択します。

    • 変更タイプ別に参照: クイック作成エリアで一般的な CT をクリックすると、すぐに RFC の実行ページを開くことができます。クイック作成で古い CT バージョンを選択することはできません。

      CTs をソートするには、カードビューまたはテーブルビューですべての変更タイプ領域を使用します。どちらのビューでも、CT を選択し、RFC の作成をクリックして RFC の実行ページを開きます。必要に応じて、RFC の作成ボタンの横に古いバージョンで作成オプションが表示されます。

    • カテゴリ別に選択: カテゴリ、サブカテゴリ、項目、オペレーションを選択すると、CT 詳細ボックスが開き、必要に応じて古いバージョンで作成するオプションが表示されます。RFC の作成をクリックして、RFC の実行ページを開きます。

  3. RFC の実行ページで、CT 名エリアを開き、CT の詳細ボックスを表示します。件名は必須です (変更タイプの参照ビューで CT を選択した場合は入力されます)。追加設定エリアを開き、RFC に関する情報を追加します。

    実行設定領域で、使用可能なドロップダウンリストを使用するか、必要なパラメータの値を入力します。オプションの実行パラメータを設定するには、追加設定エリアを開きます。

  4. 完了したら、実行 をクリックします。エラーがない場合、RFC が正常に作成されたページに、送信された RFC の詳細と最初の実行出力が表示されます。

  5. Run parameters エリアを開き、送信した設定を確認します。ページを更新して RFC 実行ステータスを更新します。必要に応じて、RFC をキャンセルするか、ページ上部のオプションを使用してコピーを作成します。

仕組み:

  1. インライン作成 (すべての RFC と実行パラメータを含むcreate-rfcコマンドを発行) またはテンプレート作成 (2 つの JSON ファイルを作成し、1 つは RFC パラメータ用、もう 1 つは実行パラメータ用) のいずれかを使用し、2 つのファイルを入力としてcreate-rfcコマンドを発行します。どちらの方法もここで説明します。

  2. 返された RFC ID を使用して RFC: aws amscm submit-rfc --rfc-id ID コマンドを送信します。

    RFC: aws amscm get-rfc --rfc-id ID コマンドをモニタリングします。

変更タイプのバージョンを確認するには、次のコマンドを使用します。

aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
注記

変更タイプのスキーマの一部であるかどうかにかかわらず、任意の RFC で任意のCreateRfcパラメータを使用できます。たとえば、RFC ステータスが変更されたときに通知を受け取るには、リクエストの RFC パラメータ部分 (実行パラメータではなく) --notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}"にこの行を追加します。すべての CreateRfc パラメータのリストについては、AMS 変更管理 API リファレンスを参照してください。

インライン作成

インラインで指定された実行パラメータ (インラインで実行パラメータを指定する場合は引用符をエスケープ) を指定して create RFC コマンドを発行し、返された RFC ID を送信します。たとえば、コンテンツを次のような内容に置き換えることができます。

バージョン 2.0

すべてのインスタンスをスキャンします。

aws amscm create-rfc --change-type-id "ct-19f40lfm5umy8" --change-type-version "2.0" --title "Log4j Investigation" --execution-parameters "{\"DocumentName\":\"AWSManagedServices-GatherLog4jInformation\",\"Region\":\"us-east-1\",\"Parameters\":{\"S3Bucket\":[\"s3://BUCKET_NAME\"]},\"TargetParameterName\": \"InstanceId\",\"Targets\": [{\"Key\": \"AWS::EC2::Instance\",\"Values\": [\"*\"]}],\"MaxConcurrency\": \"10\",\"MaxErrors\": \"100%\"}"

インスタンスのリストをスキャンします。

aws amscm create-rfc --change-type-id "ct-19f40lfm5umy8" --change-type-version "2.0" --title "Log4j Investigation" --execution-parameters "{\"DocumentName\":\"AWSManagedServices-GatherLog4jInformation\",\"Region\":\"us-east-1\",\"Parameters\":{\"S3Bucket\":[\"s3://BUCKET_NAME\"]},\"TargetParameterName\": \"InstanceId\",\"Targets\": [{\"Key\": \"ParameterValues\",\"Values\": [\"INSTANCE_ID_1\",\"INSTANCE_ID_2\",\"INSTANCE_ID_3\",\"INSTANCE_ID_4\",\"INSTANCE_ID_5\"]}],\"MaxConcurrency\": \"10\",\"MaxErrors\": \"100%\"}"

テンプレートの作成

  1. この変更タイプの実行パラメータを JSON ファイルに出力します。この例では GatherLog4jInfoParams.json:

    aws amscm get-change-type-version --change-type-id "ct-19f40lfm5umy8" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > GatherLog4jInfoParams.json
  2. GatherLog4jInfoParams ファイルを変更して保存し、変更するパラメータのみを保持します。たとえば、コンテンツを次のような内容に置き換えることができます。

    バージョン 2.0

    すべてのインスタンスをスキャンします。

    { "DocumentName": "AWSManagedServices-GatherLog4jInformation", "Region": "us-east-1", "Parameters": { "S3Bucket": [ "s3://BUCKET_NAME" ] }, "TargetParameterName": "InstanceId", "Targets": [ { "Key": "AWS::EC2::Instance", "Values": [ "*" ] } ], "MaxConcurrency": "10", "MaxErrors": "100%" }

    インスタンスのリストをスキャンします。

    { "DocumentName": "AWSManagedServices-GatherLog4jInformation", "Region": "us-east-1", "Parameters": { "S3Bucket": [ "s3://BUCKET_NAME" ] }, "TargetParameterName": "InstanceId", "Targets": [ { "Key": "ParameterValues", "Values": [ "INSTANCE_ID_1", "INSTANCE_ID_2", "INSTANCE_ID_3", "INSTANCE_ID_4", "INSTANCE_ID_5" ] } ], "MaxConcurrency": "10", "MaxErrors": "100%" }
  3. RFC テンプレートを現在のフォルダ内のファイルに出力します。この例では GatherLog4jInfoRfc.json:

    aws amscm create-rfc --generate-cli-skeleton > GatherLog4jInfoRfc.json
  4. GatherLog4jInfoRfc.json ファイルを変更して保存します。たとえば、コンテンツを次のような内容に置き換えることができます。

    { "ChangeTypeVersion": "2.0", "ChangeTypeId": "ct-19f40lfm5umy8", "Title": "Log4j Investigation" }
  5. RFC を作成し、GatherLog4jInfoRfc ファイルと GatherLog4jInfoParams ファイルを指定します。

    aws amscm create-rfc --cli-input-json file://GatherLog4jInfoRfc.json --execution-parameters file://GatherLog4jInfoParams.json

この変更タイプは、Apache Log4j Java クラスの影響を受けるバージョンを含むパッケージについて、指定された EC2 インスタンスをスキャンします。この機能はベストエフォートレポートを生成し、一部の出現は検出されないか、誤って識別される可能性があります。

AWS CloudShell はブラウザベースのシェルで、AWS リソースを安全に管理、探索、操作できます。AWS CloudShell は、ログイン時にコンソール認証情報で事前認証されます。一般的な開発および運用ツールがプリインストールされているため、ローカルでのインストールや設定は必要ありません。AWS CloudShell を使用すると、AWS コマンドラインインターフェイス (AWS CLI) を使用してスクリプトをすばやく実行したり、AWS SDKs を使用して AWS サービス APIs を試したり、さまざまなツールを使用して生産性を高めることができます。ブラウザから直接 AWS CloudShell を追加料金なしで使用できます。

注記

CloudShell AWS コンソールは、他の または利用可能な最も近い AWS リージョンから、集約を実行できます。例えば、バージニアリージョンに保存されているデータの集約を実行するには、AWS コンソールの「米国東部 (バージニア) us-east-1」AWS リージョンで CloudShell を開き、次の手順に従ってください。

レポートデータには、脆弱な JndiLookup クラスを含む指定された環境内で見つかった Java アーカイブ (JAR ファイル) に関する情報が含まれます。AMS では、影響を受けるライブラリを利用可能な最新バージョンにアップグレードすることをお勧めします。最新バージョンは、Apache Log4j 2 のダウンロードで Apache から直接ダウンロードできます。さらに、ウェブアプリケーションリソース (WAR)、エンタープライズアーカイブ (EAR)、木星暗号化 XML (JPI)、Hemera Technologies (HPI)、ZIP ファイルをスキャンします。

生成されたすべての CSV ファイルを集約し、AWS CloudShell で単一のレポートを構築するには:

  1. AWS マネジメントコンソールの任意のページまたは AWS リージョンから、AWS CloudShell を開いて次に示すスクリプトを実行します。AWSManagedServicesReadOnlyRole ロールを使用して AWS マネジメントコンソールにログインしていることを確認します。

    # Specify the S3 bucket and AWS region that contains the individual CSV files: BUCKET_NAME="YOUR BUCKET HERE" BUCKET_REGION="THE BUCKET REGION HERE" # Aggregate the CSV files: mkdir -p log4j-report aws s3 cp s3://$BUCKET_NAME/ams/log4j-scan/ ./log4j-report --recursive --include "*.csv" echo "aws_account_id,region,scan_time,instance_id,scan_type,location" > log4j-report/report.csv for i in `find log4j-report -type f \( -iname "*.csv" ! -iname "report.csv" \)`; do awk 'FNR > 1' $i >> log4j-report/report.csv; done # Upload the report to the same S3 bucket: file_name="report_$(date -d "today" +"%Y%m%d%H%M").csv" aws s3 cp log4j-report/report.csv s3://$BUCKET_NAME/ams/log4j-reports/$file_name # Open the following URL and select \"Download\" to download the report: echo "Report uploaded to: https://s3.console.aws.amazon.com/s3/object/$BUCKET_NAME?region=$BUCKET_REGION&prefix=ams/log4j-reports/$file_name"

    スクリプトは S3 URL を出力してレポートをダウンロードします。

  2. URL をコピーして開き、ダウンロードを選択します。

単一アカウントランディングゾーン: レポートの使用

シングルアカウントランディングゾーンで作業している場合、AWS CloudShell サービスは利用できません。ただし、AWS CLI を使用して必要なステップを実行できます。このドキュメント「AD FS を使用して API または AWS CLI へのアクセスを Active Directory ユーザーに許可するにはどうすればよいですか?」に従って、IAM ロールを使用して Active Directory フェデレーションサービス (ADFS) を介した CLI API アクセスを設定します。ADFS 以外の ID プロバイダー (IDP) の実装については、「SAML 2.0 を使用したフェデレーティッド API/CLI アクセスの一般的なソリューションを実装する方法」を参照してください。上記のオプションを使用して、目的のロールの CLI 認証情報を取得します。デフォルトの推奨ロールは ですCustomer_ReadOnly_Role。次に、ステップ 1 のスクリプトを実行して、必要な CSV レポートを生成します。

レポートの読み方

レポートには、次の列が含まれます。

  • scan_time: インスタンススキャンが実行された時刻

  • instance_id: EC2 インスタンス ID

  • scan_type: 実行されたスキャンのタイプ。たとえば、スキャンでメモリ情報を調べた場合、can_type は MEMORY になります。ファイルシステムがチェックされている場合、can_type は FILESYSTEM になります。

  • location: 一致へのパス

実行入力パラメータ

実行入力パラメータの詳細については、「」を参照してください変更タイプ ct-19f40lfm5umy8 のスキーマ

例: 必須パラメータ

Example not available.

例: すべてのパラメータ

{ "DocumentName": "AWSManagedServices-GatherLog4jInformation", "Region": "us-east-1", "Parameters": { "S3Bucket": [ "s3://test" ] }, "TargetParameterName": "InstanceId", "Targets": [ { "Key": "ParameterValues", "Values": [ "i-1234567890abcdef0", "i-1234567890abcdef1", "i-1234567890abcdef2", "i-1234567890abcdef3", "i-1234567890abcdef4" ] } ], "MaxConcurrency": "10", "MaxErrors": "100%" }