AWS API Gateway 액세스 로그 수집

다음에서 지원:

이 문서에서는 AWS CloudWatch Logs 및 Kinesis Data Firehose를 사용하여 Amazon API Gateway 액세스 로그를 Google Security Operations로 수집하는 방법을 설명합니다. Amazon API Gateway는 REST 및 HTTP API를 제공하여 대규모로 API를 빌드하고 관리할 수 있도록 지원합니다. 액세스 로그는 API 사용량을 모니터링하고 문제를 해결하는 데 도움이 됩니다. 이 통합은 분석 및 모니터링을 위해 이러한 로그를 Google SecOps로 스트리밍합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • AWS에 대한 액세스 권한

Amazon API Gateway 액세스 로깅 (CloudWatch Logs) 사용 설정

  1. AWS 콘솔 > API 게이트웨이로 이동합니다.
  2. REST API의 경우:

    • Stage > Logs/Tracing > enable Access logging을 엽니다.
    • 로그 형식: 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)을 선택하거나 만듭니다.

  3. HTTP API의 경우:

    • API > 모니터 > 로깅을 선택합니다.
    • 스테이지 > 수정을 선택합니다.
    • 액세스 로깅을 사용 설정합니다.
    • 위와 동일한 JSON 로그 형식을 사용합니다.
    • CloudWatch Logs 로그 그룹: 로그 그룹 (예: /aws/apigateway/access)을 선택하거나 만듭니다.
  4. 저장을 클릭합니다.

Amazon API Gateway 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정> 피드로 이동합니다.
  2. + 새 피드 추가를 클릭합니다.
  3. 피드 이름 필드에 Amazon API Gateway - CloudWatch via Firehose를 입력합니다.
  4. 소스 유형으로 Amazon Data Firehose를 선택합니다.
  5. 로그 유형으로 Amazon API Gateway를 선택합니다.
  6. 다음을 클릭합니다.
  7. 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분자: 선택사항 n
    • 애셋 네임스페이스: aws.api_gateway
    • 수집 라벨: source=apigw_access, aws_region=<your-region>를 예로 들 수 있습니다.
  8. 다음을 클릭합니다.
  9. 피드 구성을 검토하고 제출을 클릭합니다.
  10. 피드 세부정보에서 보안 비밀 키 생성을 클릭하고 보안 비밀 키를 복사합니다.
  11. 엔드포인트 정보에서 피드 HTTPS 엔드포인트 URL을 복사합니다.
  12. API 및 서비스 > 사용자 인증 정보 > 사용자 인증 정보 만들기 > API 키에서 Google Cloud API 키를 만들고 Chronicle API로 제한합니다.
  13. API 키를 복사하여 안전한 위치에 저장합니다.

Amazon Kinesis Data Firehose 구성 (Google SecOps로 직접 전송)

  1. AWS 콘솔에서 Kinesis > Data Firehose > 전송 스트림 만들기로 이동합니다.
  2. 다음 구성 세부정보를 제공합니다.
    • 소스: 직접 PUT 또는 기타 소스를 선택합니다.
    • 대상: HTTP 엔드포인트를 선택합니다.
    • HTTP 엔드포인트 URL: ENDPOINT_URL?key=API_KEY를 입력합니다 (이전 단계의 피드 HTTPS 엔드포인트 URL 및 API 키 사용).
    • HTTP 메서드: POST를 선택합니다.
    • 액세스 키: 피드에서 생성된 보안 비밀 키를 붙여넣습니다.
    • 버퍼링 힌트: 버퍼 크기 = 1MiB, 버퍼 간격 = 60초
    • 압축: 사용 안함을 선택합니다.
    • S3 백업: 사용 중지됨을 선택합니다.
    • 재시도로깅 설정은 기본값으로 둡니다.
  3. 전송 스트림 만들기를 클릭합니다. (예: cwlogs-to-secops)

IAM 권한 구성 및 로그 그룹 구독

  1. AWS 콘솔에서 IAM > 정책 > 정책 생성 > JSON으로 이동합니다.
    1. 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로 바꿉니다.
  2. 정책 이름을 CWLtoFirehoseWrite로 지정하고 정책 만들기를 클릭합니다.

  3. IAM > 역할 > 역할 만들기로 이동합니다.

  4. 커스텀 트러스트 정책을 선택하고 다음을 입력합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "logs.<your-region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  5. 역할에 CWLtoFirehoseWrite 정책을 연결합니다.

  6. 역할 이름을 CWLtoFirehoseRole로 지정하고 역할 만들기를 클릭합니다.

  7. CloudWatch > 로그 > 로그 그룹으로 이동합니다.

  8. 이전에 만든 API Gateway 로그 그룹을 선택합니다.

  9. 구독 필터 탭을 열고 만들기를 클릭합니다.

  10. Amazon Kinesis Data Firehose 구독 필터 만들기를 선택합니다.

  11. 다음과 같이 구성합니다.

    • 대상: 전송 스트림 cwlogs-to-secops
    • 권한 부여: 역할 CWLtoFirehoseRole
    • 필터 이름: all-events를 입력합니다.
    • 필터 패턴: 모든 이벤트를 전송하려면 비워 둡니다.
  12. 스트리밍 시작을 클릭합니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.