

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

# EC2 インスタンススタック \| Log4j 情報を収集する
<a name="management-advanced-ec2-instance-stack-gather-log4j-information"></a>

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

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

## 変更タイプの詳細
<a name="ct-19f40lfm5umy8-MAEg-table"></a>


****  

|  |  | 
| --- |--- |
| 変更タイプ ID | ct-19f40lfm5umy8 | 
| 現在のバージョン | 2.0 | 
| 予想される実行期間 | 360 分 | 
| AWS の承認 | 必須 | 
| お客様の承認 | 不要 | 
| 実行モード | 自動 | 

## 追加情報
<a name="management-advanced-ec2-instance-stack-gather-log4j-information-info"></a>

### 他の CTsを更新する
<a name="ex-ec2-gather-log4j-info-2-col"></a>

#### コンソールを使用して複数の EC2 インスタンスで Log4j 情報を収集する
<a name="ec2-gather-log4j-info-2-con"></a>

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

![](http://docs.aws.amazon.com/ja_jp/managedservices/latest/ctref/images/guiEc2GatherLog4jInfo-2CT.png)


仕組み:

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

1. デフォルトの変更タイプ参照ビューで一般的な**変更タイプ** (CT) を選択するか、**カテゴリ別選択ビューで CT **を選択します。
   + **変更タイプ別に参照**: **クイック作成**エリアで一般的な CT をクリックすると、すぐに **RFC の実行**ページを開くことができます。クイック作成で古い CT バージョンを選択することはできません。

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

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

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

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

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

#### CLI を使用して複数の EC2 インスタンスで Log4j 情報を収集する
<a name="ec2-gather-log4j-info-2-instance-cli"></a>

仕組み:

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

1. 返された 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 リファレンス](https://docs.aws.amazon.com/managedservices/latest/ApiReference-cm/API_CreateRfc.html)を参照してください。

*インライン作成*:

インラインで指定された実行パラメータ (インラインで実行パラメータを指定する場合は引用符をエスケープ) を指定して 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
   ```

1. 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%"
   }
   ```

1. RFC テンプレートを現在のフォルダ内のファイルに出力します。この例では GatherLog4jInfoRfc.json:

   ```
   aws amscm create-rfc --generate-cli-skeleton > GatherLog4jInfoRfc.json
   ```

1. GatherLog4jInfoRfc.json ファイルを変更して保存します。たとえば、コンテンツを次のような内容に置き換えることができます。

   ```
   {
   "ChangeTypeVersion":    "{{2.0}}",
   "ChangeTypeId":         "ct-19f40lfm5umy8",
   "Title":                "{{Log4j Investigation}}"
   }
   ```

1. RFC を作成し、GatherLog4jInfoRfc ファイルと GatherLog4jInfoParams ファイルを指定します。

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

#### ヒント
<a name="ex-other-other-update-tip"></a>

この変更タイプは、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 ](https://logging.apache.org/log4j/2.x/download.html)から直接ダウンロードできます。さらに、ウェブアプリケーションリソース (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 を出力して、レポートをダウンロードします。

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

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

シングルアカウントランディングゾーンで作業している場合、AWS CloudShell サービスは利用できません。ただし、AWS CLI を使用して必要なステップを実行できます。このドキュメント[「AD FS を使用して API または AWS CLI へのアクセスを Active Directory ユーザーに許可するにはどうすればよいですか?](https://aws.amazon.com/premiumsupport/knowledge-center/adfs-grant-ad-access-api-cli/)」に従って、IAM ロールを使用して Active Directory フェデレーションサービス (ADFS) 経由で CLI API アクセスを設定します。非 ADFS ID プロバイダー (IDP) の実装については、「How [ to Implement a General Solution for Federated API/CLI Access Using SAML 2.0](https://aws.amazon.com/blogs/security/how-to-implement-a-general-solution-for-federated-apicli-access-using-saml-2-0/)」を参照してください。上記のオプションを使用して、目的のロールの CLI 認証情報を取得します。デフォルトの推奨ロールは です`Customer_ReadOnly_Role`。次に、ステップ 1 のスクリプトを実行して、必要な CSV レポートを生成します。

**レポートの読み方**

レポートには、次の列が含まれます。
+ **scan\_time**: インスタンススキャンが実行された時刻
+ **instance\_id**: EC2 インスタンス ID
+ **scan\_type**: 実行されたスキャンのタイプ。たとえば、スキャンでメモリ情報を調べた場合、can\_type は MEMORY になります。ファイルシステムがチェックされている場合、can\_type は FILESYSTEM になります。
+ **location**: 一致へのパス

## 実行入力パラメータ
<a name="management-advanced-ec2-instance-stack-gather-log4j-information-input"></a>

実行入力パラメータの詳細については、「」を参照してください[変更タイプ ct-19f40lfm5umy8 のスキーマ](schemas.md#ct-19f40lfm5umy8-schema-section)。

## 例: 必須パラメータ
<a name="management-advanced-ec2-instance-stack-gather-log4j-information-ex-min"></a>

```
Example not available.
```

## 例: すべてのパラメータ
<a name="management-advanced-ec2-instance-stack-gather-log4j-information-ex-max"></a>

```
{
  "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%"
}
```