AWS API Gateway 액세스 로그 수집
이 문서에서는 AWS CloudWatch Logs 및 Kinesis Data Firehose를 사용하여 Amazon API Gateway 액세스 로그를 Google Security Operations에 수집하는 방법을 설명합니다. Amazon API Gateway는 대규모로 API를 빌드하고 관리할 수 있는 REST 및 HTTP API를 제공합니다. 액세스 로그는 API 사용을 모니터링하고 문제를 해결하는 데 도움이 됩니다. 이 통합은 분석 및 모니터링을 위해 이러한 로그를 Google SecOps로 스트리밍합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- AWS에 대한 액세스 권한
Amazon API Gateway 액세스 로깅 (CloudWatch Logs) 사용 설정
- AWS 콘솔 > API 게이트웨이로 이동합니다.
REST API의 경우:
- 단계 > 로그/추적 > 액세스 로깅 사용 설정을 엽니다.
로그 형식: JSON을 선택합니다.
{ "requestId":"$context.requestId", "ip":"$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod", "routeKey":"$context.routeKey", "status":"$context.status", "protocol":"$context.protocol", "responseLength":"$context.responseLength", "integrationLatency":"$context.integrationLatency", "error":"$context.error.message" }
CloudWatch Logs 로그 그룹: 로그 그룹 (예:
/aws/apigateway/access
)을 선택하거나 만듭니다.
HTTP API의 경우:
- API > 모니터 > 로깅을 선택합니다.
- 스테이지 > 수정을 선택합니다.
- 액세스 로깅을 사용 설정합니다.
- 위와 동일한 JSON 로그 형식을 사용합니다.
- CloudWatch Logs 로그 그룹: 로그 그룹 (예:
/aws/apigateway/access
)을 선택하거나 만듭니다.
저장을 클릭합니다.
Amazon API Gateway 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정> 피드로 이동합니다.
- + 새 피드 추가를 클릭합니다.
- 피드 이름 필드에
Amazon API Gateway - CloudWatch via Firehose
를 입력합니다. - 소스 유형으로 Amazon Data Firehose를 선택합니다.
- 로그 유형으로 Amazon API Gateway를 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분자: 선택사항
n
- 애셋 네임스페이스:
aws.api_gateway
- 수집 라벨:
source=apigw_access
,aws_region=<your-region>
를 예로 들 수 있습니다.
- 분할 구분자: 선택사항
- 다음을 클릭합니다.
- 피드 구성을 검토하고 제출을 클릭합니다.
- 피드 세부정보에서 보안 비밀 키 생성을 클릭하고 보안 비밀 키를 복사합니다.
- 엔드포인트 정보에서 피드 HTTPS 엔드포인트 URL을 복사합니다.
- API 및 서비스 > 사용자 인증 정보 > 사용자 인증 정보 만들기 > API 키에서 Google Cloud API 키를 만들고 Google SecOps API로 제한합니다.
- API 키를 복사하여 안전한 위치에 저장합니다.
Amazon Kinesis Data Firehose 구성 (Google SecOps로 직접 전송)
- AWS 콘솔에서 Kinesis > Data Firehose > 전송 스트림 만들기로 이동합니다.
- 다음 구성 세부정보를 제공합니다.
- 소스: 직접 PUT 또는 기타 소스를 선택합니다.
- 대상: HTTP 엔드포인트를 선택합니다.
- HTTP 엔드포인트 URL:
ENDPOINT_URL?key=API_KEY
를 입력합니다 (이전 단계의 피드 HTTPS 엔드포인트 URL 및 API 키 사용). - HTTP 메서드: POST를 선택합니다.
- 액세스 키: 피드에서 생성된 보안 비밀 키를 붙여넣습니다.
- 버퍼링 힌트: 버퍼 크기 = 1MiB, 버퍼 간격 = 60초로 설정합니다.
- 압축: 사용 중지를 선택합니다.
- S3 백업: 사용 중지됨을 선택합니다.
- 재시도 및 로깅 설정은 기본값으로 둡니다.
- 전송 스트림 만들기를 클릭합니다. (예:
cwlogs-to-secops
)
IAM 권한 구성 및 로그 그룹 구독
- AWS 콘솔에서 IAM > 정책 > 정책 만들기 > JSON으로 이동합니다.
- JSON 편집기에서 다음 정책을 입력합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops" } ] }
<region>
및<account-id>
을 AWS 리전 및 계정 ID로 바꿉니다.
정책 이름을
CWLtoFirehoseWrite
로 지정하고 정책 만들기를 클릭합니다.IAM > 역할 > 역할 만들기로 이동합니다.
커스텀 트러스트 정책을 선택하고 다음을 입력합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<your-region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
역할에
CWLtoFirehoseWrite
정책을 연결합니다.역할 이름을
CWLtoFirehoseRole
로 지정하고 역할 만들기를 클릭합니다.CloudWatch > 로그 > 로그 그룹으로 이동합니다.
이전에 만든 API Gateway 로그 그룹을 선택합니다.
구독 필터 탭을 열고 만들기를 클릭합니다.
Amazon Kinesis Data Firehose 구독 필터 만들기를 선택합니다.
다음과 같이 구성합니다.
- 대상: 전송 스트림
cwlogs-to-secops
- 권한 부여: 역할
CWLtoFirehoseRole
- 필터 이름:
all-events
를 입력합니다. - 필터 패턴: 모든 이벤트를 전송하려면 비워 둡니다.
- 대상: 전송 스트림
스트리밍 시작을 클릭합니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.