Amazon Kinesis Firehose를 사용해 VPC 흐름 로그를 Splunk로 푸시하려면 어떻게 해야 하나요?

5분 분량
0

AWS 소스 데이터를 Splunk 클러스터로 푸시할 때 AWS 데이터와 Splunk의 통합을 개선하고 싶습니다.

해결 방법

참고: Kinesis Data Firehose에서는 Application Load Balancer 또는 Network Load Balancer를 지원하지 않습니다. 대신 Classic Load Balancer를 사용하세요. 쿠키 만료가 비활성화된 상태에서 기간 기반 스티키 세션을 허용하는지 확인하세요. Splunk 엔드포인트의 전송 스트림 문제를 해결하는 방법에 관한 자세한 내용은 Splunk로 전송되지 않는 데이터를 참고하세요.

사전 요구 사항

Kinesis Data Firehose 전송 스트림 생성

1.    전송 스트림을 생성합니다. 소스에서 Direct PUT을 선택합니다.

2.    대상에서 Splunk를 선택합니다.

3.    전송 스트림 이름을 입력합니다.

AWS Lambda로 레코드 변환 구성

1.    레코드 변환을 구성합니다.참고: AWS Lambda로 소스 레코드 변환에서 레코드 변환 활성화를 선택합니다. CloudWatch는 로그를 압축된 .gzip 파일로 전송하며, Amazon Kinesis에서 이 파일을 추출해야만 사용할 수 있습니다.

2.    Lambda 함수에서 새로 생성을 선택합니다.

3.    Lambda 청사진 선택 창에 있는 Lambda 청사진에서 Kinesis Firehose CloudWatch 로그 프로세서를 선택합니다.

4.    브라우저에 열리는 새 탭을 선택하여 새 Lambda 함수를 생성합니다.
이름에 Lambda 함수 이름을 입력합니다.
역할에서 사용자 지정 역할 생성을 선택합니다.

5.    브라우저에서 열리는 새 탭을 선택하여 새 AWS Identity and Access Management(IAM) 역할을 생성합니다. 역할 이름에서 이름이 lambda_basic_execution인지 확인합니다.

6.    허용을 선택하여 역할을 생성한 다음 Lambda 함수 구성 페이지로 돌아갑니다.

7.    함수 생성을 선택합니다.

8.    함수의 시간 초과를 방지하려면 시간 제한을 기본값인 3초에서 1분으로 늘립니다.

9.    저장을 선택합니다.

Kinesis Data Firehose 전송 스트림 완료

1.    Amazon Kinesis 콘솔을 엽니다.

2.    탐색 창에서 Data Firehose를 선택합니다.

3.    전송 스트림의 경우 Lambda 함수를 선택한 다음 드롭다운에서 새 AWS Lambda 함수의 이름을 선택합니다.

4.    대상 설정에는 생성한 Splunk HEC 엔드포인트를 포함하여 Splunk HEC 세부 정보를 입력합니다.
참고: 유효한 SSL 인증서를 사용하여 Splunk HEC 엔드포인트를 종료해야 합니다. 일치하는 DNS 호스트 이름을 사용하여 HEC 엔드포인트에 연결합니다. 클러스터 엔드포인트의 형식은 https://YOUR-ENDPOINT.splunk.com:8088입니다.

5.    Splunk 엔드포인트 유형의 경우 원시 엔드포인트를 선택한 다음 인증 토큰을 입력합니다.

6.    다음을 선택합니다.

7.    (선택 사항) 기존 Amazon Simple Storage Service(Amazon S3) 버킷을 선택하거나 새 버킷을 생성하여 실패한 이벤트 또는 모든 이벤트를 백업합니다. 전송 스트림 마법사에서 버퍼 조건, 압축 및 암호화 설정, 오류 로깅 옵션과 같은 Amazon S3 관련 설정을 구성해야 합니다.

8.    IAM 역할에서 새로 생성을 선택합니다.

9.    열린 탭에서 역할 이름을 입력한 다음 허용을 선택합니다.

10.    다음을 선택합니다.

11.    전송 스트림 생성을 선택합니다.

Amazon VPC 흐름 로그 구성

참고: Amazon VPC 흐름 로그가 있는 경우 다음 섹션인 Amazon CloudWatch Log 구독 생성으로 진행하세요. VPC 흐름 로그가 없는 경우 다음 단계를 완료하세요.

1.    CloudWatch 콘솔을 엽니다.

2.    탐색 창에서 로그를 선택합니다.

3.    동작에서 로그 그룹 생성을 선택합니다.

4.    로그 그룹 이름을 입력합니다.

5.    로그 그룹 생성을 선택합니다.

6.    Amazon VPC 콘솔을 엽니다.

7.    탐색 창의 Virtual Private Cloud에서 VPC를 선택합니다.

8.    콘텐츠 창에서 VPC를 선택합니다.

9.    흐름 로그 보기를 선택합니다.

10.    흐름 로그 생성을 선택합니다.

  • 필터에서 모두를 선택합니다.
  • 대상 로그 그룹에서 방금 생성한 로그 그룹을 선택합니다.
  • IAM 역할의 경우 Amazon VPC가 CloudWatch에 로그를 게시할 수 있도록 허용하는 IAM 역할을 선택합니다. 적절한 IAM 역할이 없는 경우 IAM 역할에서 권한 설정을 선택한 다음 새 IAM 역할 생성을 선택합니다. 기본 설정을 유지합니다.
  • 허용을 선택하여 VPCFlowLogs 역할을 생성하고 대상 로그 그룹에 연결합니다.

11.    생성을 선택합니다.

12.    로그 그룹에서 전송 스트림으로 실시간 피드를 설정합니다.

**참고:**AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 실행하고 있는지 확인합니다.

Amazon CloudWatch Logs 구독 생성

1.    CloudWatch에 액세스 권한을 부여해 올바른 역할 권한으로 Kinesis Data Firehose 스트림을 게시하세요.

2.    AWS CLI를 엽니다.

3.    다음 JSON 파일을 사용하여 트러스트 정책(예: TrustPolicyforCWLToFireHose.json)을 생성할 수 있습니다. YOUR-RESOURCE-REGION을 리소스의 AWS 리전으로 변경합니다.

{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "logs.YOUR-RESOURCE-REGION.amazonaws.com" },
    "Action": "sts:AssumeRole"
  }
}

4.    다음 명령을 실행하여 신뢰 정책의 권한이 있는 역할을 생성합니다.

$ aws iam create-role --role-name CWLtoKinesisFirehoseRole --assume-role-policy-document file://TrustPolicyForCWLToFireHose.json

5.    다음 JSON 파일을 사용하여 IAM 정책(예: PermissionPolicyForCWLToFireHose.json)을 생성합니다. YOUR-AWS-ACCT-NUM을 AWS 계정 번호로, YOUR-RESOURCE-REGION을 리소스의 리전으로, FirehoseSplunkDeliveryStream을 스트림 이름으로 변경합니다.

{
    "Statement":[
      {
        "Effect":"Allow",
        "Action":["firehose:PutRecord"],
        "Resource":["arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream"]
      },
      {
        "Effect":"Allow",
        "Action":["iam:PassRole"],
        "Resource":["arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"]
      }
    ]
}
  1. 다음 명령을 실행하여 역할에 IAM 정책을 연결합니다.
$ aws iam put-role-policy
    --role-name CWLtoKinesisFirehoseRole
    --policy-name Permissions-Policy-For-CWL
    --policy-document file://PermissionPolicyForCWLToFireHose.json

7.    다음 명령을 실행하여 구독 필터를 생성합니다. YOUR-AWS-ACCT-NUM을 AWS 계정 번호로, YOUR-RESOURCE-REGION을 리소스의 리전으로, FirehoseSplunkDeliveryStream을 스트림 이름으로 변경합니다.

$ aws logs put-subscription-filter
   --log-group-name " /vpc/flowlog/FirehoseSplunk"
   --filter-name "Destination"
   --filter-pattern ""
   --destination-arn "arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream"
   --role-arn "arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"

구독 필터에 대한 자세한 내용은 예제 3: Amazon Kinesis Data Firehose를 사용한 구독 필터를 참고하세요.

관련 정보

Amazon Kinesis Data Firehose를 사용해 Splunk로 데이터 모으기 기능 강화

대상 설정

Amazon Kinesis Data Firehose를 통한 액세스 제어

AWS 공식
AWS 공식업데이트됨 일 년 전