기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
시큐리티 레이크 쿼리 AWS 소스 버전 1 (OCSF1.0.0-rc.2)
다음 섹션에서는 Security Lake에서 데이터를 쿼리하는 방법에 대한 지침을 제공하고 기본적으로 지원되는 몇 가지 쿼리 예제를 제공합니다. AWS 소스. 이러한 쿼리는 특정 데이터를 검색하도록 설계되었습니다. AWS 리전. 이 예에서는 us-east-1 (미국 동부 (버지니아 북부)) 을 사용합니다. 또한 예제 쿼리는 최대 25개의 레코드를 반환하는 LIMIT 25
파라미터를 사용합니다. 이 파라미터를 생략하거나 원하는 대로 조정할 수 있습니다. 더 많은 예를 보려면 Amazon Security Lake OCSF 쿼리 GitHub 디렉터리를
로그 소스 테이블
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) LIMIT25
로그 소스 테이블의 일반적인 값은 다음과 같습니다.
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 결과vpc_flow_1_0
— 아마존 가상 사설 클라우드 (아마존VPC) 플로우 로그
예: 미국 동부 1 리전의 표 sh_findings_1_0
에 있는 모든 Security Hub 조사 결과
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) LIMIT25
데이터베이스 리전
Security Lake 데이터를 쿼리할 때는 데이터를 쿼리하려는 데이터베이스 리전의 이름을 포함해야 합니다. 현재 Security Lake를 사용할 수 있는 데이터베이스 리전의 전체 목록은 Amazon Security Lake 엔드포인트를 참조하십시오.
예: 목록 AWS CloudTrail 소스 IP에서의 활동
다음 예는 소스 IP의 모든 CloudTrail 활동을 나열합니다.192.0.2.1
이후에 기록된 내용입니다.20230301
(2023년 3월 1일), 표 내용 cloud_trail_mgmt_1_0
에서 us-east-1
DB_Region
.
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 LIMIT25
파티션 날짜
데이터를 분할하면 각 쿼리가 스캔하는 데이터의 양을 제한하여 성능을 향상시키고 비용을 절감할 수 있습니다. 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월 192.0.2.1
1일 또는 이후 소스 IP의 모든 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일간 소스 192.0.2.1
IP의 모든 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
CloudTrail 데이터 쿼리 예시
AWS CloudTrail 사용자 활동 및 API 사용을 추적합니다. AWS 서비스. 구독자는 CloudTrail 데이터를 쿼리하여 다음 유형의 정보를 학습할 수 있습니다.
다음은 CloudTrail 데이터 쿼리의 몇 가지 예시입니다.
에 대한 무단 시도 AWS 서비스 지난 7일 동안
SELECT time, api.service.name, api.operation, api.response.error, api.response.message, unmapped['responseElements'], cloud.region, actor.user.uuid, src_endpoint.ip, http_request.user_agent FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_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) AND api.response.error in ( 'Client.UnauthorizedOperation', 'Client.InvalidPermission.NotFound', 'Client.OperationNotPermitted', 'AccessDenied') ORDER BY time desc LIMIT 25
지난 7일간 소스 192.0.2.1
IP의 모든 CloudTrail 활동 목록
SELECT api.request.uid, time, api.service.name, api.operation, cloud.region, actor.user.uuid, src_endpoint.ip, http_request.user_agent FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_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) AND src_endpoint.ip = '127.0.0.1.' ORDER BY time desc LIMIT 25
지난 7일간의 모든 IAM 활동 목록
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_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) AND api.service.name = 'iam.amazonaws.com' ORDER BY time desc LIMIT 25
지난 7일 동안 자격 증명 AIDACKCEVSQ6C2EXAMPLE
이 사용된 인스턴스
SELECT actor.user.uid, actor.user.uuid, actor.user.account_uid, cloud.region FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_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) AND actor.user.credential_uid = 'AIDACKCEVSQ6C2EXAMPLE' LIMIT 25
지난 7일간 실패한 CloudTrail 레코드 목록
SELECT actor.user.uid, actor.user.uuid, actor.user.account_uid, cloud.region FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_cloud_trail_mgmt_1_0 WHERE status='failed' and 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) ORDER BY time DESC LIMIT 25
Route 53 Resolver 쿼리 로그의 쿼리 예제
Amazon Route 53 리졸버 쿼리 로그는 아마존 내 리소스에서 수행한 DNS 쿼리를 추적합니다. VPC 구독자는 Route 53 Resolver 쿼리 로그를 쿼리하여 다음 유형의 정보를 학습할 수 있습니다.
Route 53 Resolver 쿼리 로그의 쿼리 예제는 다음과 같습니다.
지난 CloudTrail 7일간의 DNS 쿼리 목록
SELECT time, src_endpoint.instance_uid, src_endpoint.ip, src_endpoint.port, query.hostname, rcode FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_route53_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) ORDER BY time DESC LIMIT 25
s3.amazonaws.com
지난 7일 동안 일치하는 DNS 쿼리 목록
SELECT time, src_endpoint.instance_uid, src_endpoint.ip, src_endpoint.port, query.hostname, rcode, answers FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_route53_1_0 WHERE query.hostname LIKE 's3.amazonaws.com.' and 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) ORDER BY time DESC LIMIT 25
지난 7일 동안 해결되지 않은 DNS 쿼리 목록
SELECT time, src_endpoint.instance_uid, src_endpoint.ip, src_endpoint.port, query.hostname, rcode, answers FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_route53_1_0 WHERE cardinality(answers) = 0 and 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
지난 7일 동안 192.0.2.1
해결된 DNS 쿼리 목록
SELECT time, src_endpoint.instance_uid, src_endpoint.ip, src_endpoint.port, query.hostname, rcode, answer.rdata FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_route53_1_0 CROSS JOIN UNNEST(answers) as st(answer) WHERE answer.rdata='192.0.2.1' and 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
Security Hub 조사 결과 쿼리 예제
Security Hub는 다음과 같은 보안 상태를 포괄적으로 보여줍니다. AWS 또한 보안 업계 표준 및 모범 사례와 비교하여 환경을 점검하는 데 도움이 됩니다. Security Hub는 보안 검사 조사 결과를 생성하고 타사 서비스로부터 조사 결과를 수신합니다.
Security Hub 조사 결과에 대한 몇 가지 예제 쿼리는 다음과 같습니다.
지난 7일간의 심각도가 MEDIUM
이상인 새로운 조사 결과
SELECT time, finding, severity FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0_findings 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) AND severity_id >= 3 AND state_id = 1 ORDER BY time DESC LIMIT 25
지난 7일간의 중복된 조사 결과
SELECT finding.uid, MAX(time) AS time, ARBITRARY(region) AS region, ARBITRARY(accountid) AS accountid, ARBITRARY(finding) AS finding, ARBITRARY(vulnerabilities) AS vulnerabilities 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) GROUP BY finding.uid LIMIT 25
지난 7일간의 모든 정보 외 조사 결과
SELECT time, finding.title, finding, severity FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0 WHERE severity != 'Informational' and 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
리소스가 Amazon S3 버킷인 경우 조사 결과 (시간 제한 없음)
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0 WHERE any_match(resources, element -> element.type = 'amzn-s3-demo-bucket') LIMIT 25
일반적인 취약성 점수 시스템 (CVSS) 점수가 (시간 제한 없음) 보다 1
높은 결과
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0 WHERE any_match(vulnerabilities, element -> element.cve.cvss.base_score > 1.0) LIMIT 25
일반적인 취약성 및 노출과 일치하는 결과 (CVE) CVE-0000-0000
(시간 제한 없음)
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0 WHERE any_match(vulnerabilities, element -> element.cve.uid = 'CVE-0000-0000') LIMIT 25
지난 7일 동안 Security Hub에서 조사 결과를 전송한 제품 수
SELECT metadata.product.feature.name, count(*) 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) GROUP BY metadata.product.feature.name ORDER BY metadata.product.feature.name DESC LIMIT 25
지난 7일간의 조사 결과에 포함된 리소스 유형 수
SELECT count(*), resource.type FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0 CROSS JOIN UNNEST(resources) as st(resource) 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) GROUP BY resource.type LIMIT 25
지난 7일간의 조사 결과에서 나온 취약한 패키지
SELECT vulnerability FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_sh_findings_1_0, UNNEST(vulnerabilities) as t(vulnerability) WHERE vulnerabilities is not null LIMIT 25
지난 7일 동안 변경된 조사 결과
SELECT finding.uid, finding.created_time, finding.first_seen_time, finding.last_seen_time, finding.modified_time, finding.title, state 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
Amazon VPC 플로우 로그에 대한 예제 쿼리
Amazon Virtual Private Cloud (AmazonVPC) 는 사용자의 네트워크 인터페이스에서 송수신되는 IP 트래픽에 대한 세부 정보를 제공합니다VPC.
Amazon VPC 플로우 로그의 몇 가지 예제 쿼리는 다음과 같습니다.
특정 트래픽은 다음과 같습니다. AWS 리전 지난 7일 동안
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND region in ('us-east-1','us-east-2','us-west-2') LIMIT 25
최근 7일간 소스 IP 192.0.2.1
및 소스 포트 22
의 활동 목록
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND src_endpoint.ip = '192.0.2.1' AND src_endpoint.port = 22 LIMIT 25
지난 7일간의 고유 대상 IP 주소 수
SELECT COUNT(DISTINCT dst_endpoint.ip) FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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
지난 7일 동안의 198.51.100.0/24에서 발생한 트래픽
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND split_part(src_endpoint.ip,'.', 1)='198'AND split_part(src_endpoint.ip,'.', 2)='51' LIMIT 25
지난 7일간의 모든 HTTPS 트래픽
SELECT dst_endpoint.ip as dst, src_endpoint.ip as src, traffic.packets FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND dst_endpoint.port = 443 GROUP BY dst_endpoint.ip, traffic.packets, src_endpoint.ip ORDER BY traffic.packets DESC LIMIT 25
지난 7일 동안 포트 443
로 향하는 연결의 패킷 수를 기준으로 정렬합니다.
SELECT traffic.packets, dst_endpoint.ip FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND dst_endpoint.port = 443 GROUP BY traffic.packets, dst_endpoint.ip ORDER BY traffic.packets DESC LIMIT 25
지난 7일간의 IP 192.0.2.1
및 192.0.2.2
간 모든 트래픽
SELECT start_time, end_time, src_endpoint.interface_uid, connection_info.direction, src_endpoint.ip, dst_endpoint.ip, src_endpoint.port, dst_endpoint.port, traffic.packets, traffic.bytes FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND( src_endpoint.ip = '192.0.2.1' AND dst_endpoint.ip = '192.0.2.2') OR ( src_endpoint.ip = '192.0.2.2' AND dst_endpoint.ip = '192.0.2.1') ORDER BY start_time ASC LIMIT 25
지난 7일간의 모든 인바운드 트래픽
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND connection_info.direction = 'ingress' LIMIT 25
지난 7일간의 모든 아웃바운드 트래픽
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND connection_info.direction = 'egress' LIMIT 25
지난 7일간 거부된 모든 트래픽
SELECT * FROM amazon_security_lake_glue_db_us_east_1.amazon_security_lake_table_us_east_1_vpc_flow_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) AND type_uid = 400105 LIMIT 25