

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS소스 버전 1(OCSF 1.0.0-rc.2)에 대한 Security Lake 쿼리
<a name="subscriber-query-examples1"></a>

다음 섹션에서는 Security Lake에서 데이터를 쿼리하는 방법에 대한 지침을 제공하고AWS소스 버전 1에서 기본적으로 지원되는AWS소스에 대한 몇 가지 쿼리 예제를 포함합니다. 이러한 쿼리는 특정의 데이터를 검색하도록 설계되었습니다AWS 리전. 이 예시에서는 us-east-1 (미국 동부 (버지니아 북부))을 사용합니다. 또한 예제 쿼리는 최대 25개의 레코드를 반환하는 `LIMIT 25` 파라미터를 사용합니다. 이 파라미터를 생략하거나 원하는 대로 조정할 수 있습니다. 더 많은 예를 보려면 [Amazon Security Lake OCSF 쿼리 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(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\$1trail\$1mgmt\$11\$10* 테이블에 *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\$114일 전에 발생한 이벤트**  
`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
```

**예: 최근 30일 동안 소스 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 > 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
```