

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

# AWSソースバージョン 1 の Security Lake クエリ (OCSF 1.0.0-rc.2)
<a name="subscriber-query-examples1"></a>

次のセクションでは、Security Lake からのデータのクエリに関するガイダンスを提供し、AWSソースバージョン 1 でネイティブにサポートされているAWSソースのクエリ例をいくつか示します。これらのクエリは、特定の のデータを取得するように設計されていますAWS リージョン。これらの例では us-east-1 (米国東部 (バージニア北部)) を使用しています。さらに、サンプルクエリでは最大 25件のレコードを返す`LIMIT 25`パラメータを使用しています。このパラメーターは省略することも、好みに応じて調整することもできます。その他の例については、[Amazon Security Lake OCSF Queries GitHub ディレクトリ](https://github.com/awslabs/aws-security-analytics-bootstrap/tree/main/AWSSecurityAnalyticsBootstrap/amazon_security_lake_queries)を参照してください。

以下のクエリには、クエリが設定された保持設定内であることを確認する`eventDay`ために を使用する時間ベースのフィルターが含まれています。詳細については、「[Querying data with retention settings](subscriber-query-examples.md#security-lake-retention-setting-query-data)」を参照してください。

例えば、60 日以上経過したデータの有効期限が切れている場合、クエリには期限切れデータへのアクセスを防ぐための時間制約を含める必要があります。60 日間の保持期間については、クエリに次の句を含めます。

```
...
WHERE eventDay BETWEEN cast(date_format(current_date - INTERVAL '59' day, '%Y%m%d') AS varchar) 
                   AND cast(date_format(current_date, '%Y%m%d') AS varchar)
...
```

この句は、Amazon S3 と Apache Iceberg 間のデータや時間の重複を避けるために 59 日 (60 日ではなく) を使用します。

## ログソーステーブル
<a name="log-source-table"></a>

Security Lake データをクエリするときは、データが存在する Lake Formation テーブルの名前を含める必要があります。

```
SELECT *
   FROM amazon_security_lake_glue_db_{{DB_Region}}.amazon_security_lake_table_{{DB_Region}}_{{SECURITY_LAKE_TABLE}}
   WHERE eventDay BETWEEN cast(date_format(current_timestamp - INTERVAL '7' day, '%Y%m%d%H') as varchar) and cast(date_format(current_timestamp - INTERVAL '0' day, '%Y%m%d%H') as varchar)
   LIMIT {{25}}
```

ログソーステーブルの一般的な値には次のようなものがあります。
+ `cloud_trail_mgmt_1_0` –AWS CloudTrail管理イベント
+ `lambda_execution_1_0`— Lambda CloudTrail データイベント
+ `s3_data_1_0` - S3 CloudTrail データイベント
+ `route53_1_0` - Amazon Route 53 Resolver クエリログ
+ `sh_findings_1_0` –AWS Security Hub CSPM検出結果
+ `vpc_flow_1_0` - Amazon Virtual Private Cloud (Amazon VPC) フローログ

**例: us-east-1 リージョン`sh_findings_1_0`からのテーブル内のすべての Security Hub CSPM 検出結果**

```
SELECT *
   FROM amazon_security_lake_glue_db_{{us_east_1}}.amazon_security_lake_table_{{us_east_1}}_{{sh_findings_1_0}}
   WHERE eventDay BETWEEN cast(date_format(current_timestamp - INTERVAL '7' day, '%Y%m%d%H') as varchar) and cast(date_format(current_timestamp - INTERVAL '0' day, '%Y%m%d%H') as varchar)
   LIMIT {{25}}
```

## データベースリージョン
<a name="database-region"></a>

Security Lake データをクエリするときは、データのクエリ元のデータベースリージョンの名前を含める必要があります。Security Lakeが現在利用可能なデータベースリージョンの全リストについては、「[Amazon Security Lake エンドポイント](https://docs.aws.amazon.com/general/latest/gr/securitylake.html)」を参照してください。

**例: ソース IP からのAWS CloudTrailアクティビティを一覧表示する**

次の例では、 {{us-east-1}}`DB_Region`のテーブル {{cloud\_trail\_mgmt\_1\_0}} に、{{20230301 }}(2023 年 3 月 1 日) 以降に記録されたソース IP {{192.0.2.1}} からのすべての CloudTrail アクティビティをリストします。

```
SELECT *
    FROM amazon_security_lake_glue_db_{{us_east_1}}.amazon_security_lake_table_{{us_east_1}}_{{cloud_trail_mgmt_1_0}}
    WHERE eventDay > '20230301' AND src_endpoint.ip = '192.0.2.1'
    ORDER BY time desc
    LIMIT {{25}}
```

## パーティション日付
<a name="partition-date"></a>

データをパーティションすることで、各クエリによってスキャンされるデータの量を制限できるようになるため、パフォーマンスが向上し、コストが削減されます。Security Lake は`eventDay`、`region`、`accountid`パラメータを通じて、パーティショニングを実装します。 `eventDay`パーティションでは`YYYYMMDD`形式を使用します。

これは`eventDay`パーティションを使ったクエリの例です。

```
SELECT *
    FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_1_0
    WHERE eventDay > '{{20230301}}'
    AND src_endpoint.ip = '192.0.2.1'
    ORDER BY time desc
```

`eventDay`の一般的な値は次の通りです。

**過去 1 年間に発生したイベント**  
`> cast(date_format(current_timestamp - INTERVAL '1' year, '%Y%m%d%H') as varchar)`

**過去 1 か月に発生したイベント**  
`> cast(date_format(current_timestamp - INTERVAL '1' month, '%Y%m%d%H') as varchar)`

**過去 30 日間に発生したイベント**  
`> cast(date_format(current_timestamp - INTERVAL '30' day, '%Y%m%d%H') as varchar)`

**過去 12 時間に発生したイベント**  
`> cast(date_format(current_timestamp - INTERVAL '12' hour, '%Y%m%d%H') as varchar)`

**過去 5 分間に発生したイベント**  
`> cast(date_format(current_timestamp - INTERVAL '5' minute, '%Y%m%d%H') as varchar)`

**7 ～ 14 日前に発生したイベント**  
`BETWEEN cast(date_format(current_timestamp - INTERVAL '14' day, '%Y%m%d%H') as varchar) and cast(date_format(current_timestamp - INTERVAL '7' day, '%Y%m%d%H') as varchar)`

**特定の日付以降に発生するイベント**  
`>= '20230301'`

**例:2023 年 3 月 1 日以降のソース IP`192.0.2.1` からのすべての CloudTrail アクティビティのリスト (表) `cloud_trail_mgmt_1_0`**

```
SELECT *
    FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_1_0
    WHERE eventDay >= '{{20230301}}'
    AND src_endpoint.ip = '192.0.2.1'
    ORDER BY time desc
    LIMIT 25
```

**例: テーブル `cloud_trail_mgmt_1_0` 内の過去 30 日間のソース IP `192.0.2.1` からのすべての CloudTrail アクティビティのリスト**

```
SELECT *
    FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_1_0
    WHERE eventDay > cast(date_format(current_timestamp - INTERVAL '{{30}}' day, '%Y%m%d%H') as varchar) 
    AND src_endpoint.ip = '192.0.2.1'
    ORDER BY time desc
    LIMIT 25
```