Fluentd를 통한 GCP 감사 로그 to S3
사용을 고려하세요 Fluent Bit Panther로 로그를 전달할 때 Fluentd 대신 사용하세요. Fluent Bit은 Fluentd보다 설정이 더 쉽고 리소스 사용량이 적습니다.
목표
이 레시피의 목표는 Google Cloud Project Audit Logs를 Panther로 스트리밍하는 것입니다. 많은 기업이 여러 클라우드 제공업체를 사용하며, 이 단계들을 통해 GCP 계정에서 발생하는 API 호출을 Panther로 수집할 수 있습니다.
우리는 GCP와 AWS 전반의 기본 구성 요소를 조합하여 이를 구현할 것입니다.
솔루션 개요
대략적으로, 다음 흐름을 구현할 것입니다:
감사 로그는 GCP에서 생성되어 PubSub로 라우팅됩니다
Fluentd가 PubSub를 폴링하여 S3 버킷으로 전달합니다
S3 버킷은 정규화, 디택션, 장기 저장을 위해 Panther에 온보딩됩니다
단계
1단계: 새 Pub/Sub 생성

GCP에서 Pub/Sub 콘솔을 엽니다
새 Topic을 생성하고 Panther-Audit라고 이름을 지정합니다
‘Add a default subscription’의 선택을 해제합니다
CREATE TOPIC을 선택합니다
Subscriptions > Create subscription을 클릭합니다
Subscription ID로 Panther-Audit를 입력합니다
Panther-Audit topic을 선택합니다
다른 모든 옵션은 그대로 두거나, 필요한 경우 만료/보존 설정을 조정합니다(예상 지출/예산에 따라)
CREATE를 클릭합니다
Topic 이름(projects/<project-name>/topics/Panther-Audit)과 Topic subscription(Panther-Audit)을 적어 둡니다. 나중에 사용할 것입니다.
2단계: Logs Router 생성

참고: 프로젝트 sink 대신 집계된 조직 로그 sink를 선택적으로 생성할 수 있습니다. 집계된 sink 생성에 대해 자세히 알아보려면 다음을 참조하세요. Google의 문서.
Logging 콘솔을 엽니다
Logs Router를 클릭합니다
CREATE SINK를 클릭합니다
이름을 Panther-Audit로 설정합니다
Sink Destination을 설정합니다
Cloud Pub/Sub topic
Panther-Audit Topic을 선택합니다
CREATE SINK를 클릭합니다
Pub/Sub로 이동해 Panther-Audit의 Topic ID를 클릭한 다음 ACTIVITY를 확인하여 Audit 이벤트를 볼 수 있으면 이 파이프라인이 작동 중인지 검증할 수 있습니다.

3단계: 서비스 계정 생성
IAM & Admin을 엽니다
Service Accounts를 클릭합니다
CREATE SERVICE ACCOUNT를 클릭합니다
서비스 계정 이름을 Panther-Audit로 설정합니다. 원하시면 설명을 추가할 수 있습니다.
Create and Continue를 클릭합니다
아래에서 이 서비스 계정에 프로젝트 액세스 권한 부여를 선택하고 서비스 계정 액세스 역할을 Pub/Sub Viewer 및 Pub/Sub Subscriber
Continue를 클릭합니다
Done을 클릭합니다
Service accounts -> Actions에서 Manage keys, ADD KEY, Create new key를 클릭하고 JSON을 선택한 다음 CREATE를 눌러 자격 증명을 다운로드합니다.
이 자격 증명 파일은 안전하게 보관하세요! 곧 사용할 것입니다.

4단계: AWS 인프라 구성
를 클릭할 수 있습니다. Fluentd 온보딩 가이드및 배포를 검토합니다 Firehose & S3 스택.
5단계: AWS에서 인스턴스 시작
AWS EC2 Console을 엽니다(위에서 스택을 시작한 것과 같은 리전) 그리고 Ubuntu 인스턴스를 시작합니다.
Launch Instance를 클릭합니다
선택 Ubuntu Server 20.04 LTS
선택 t2.medium (원하시면 더 강력한 인스턴스 유형을 사용해도 됩니다)
IAM Role 섹션에서 InstanceProfileName 의 값을 선택합니다. 4단계에서 복사한 값이며, 형식은 “<stack-name>-FirehoseInstanceProfile-<random-string>”입니다.
Add Storage를 클릭하고 64GiB 용량 드라이브를 추가합니다
원하는 대로 Security Group, Key Pair 및 기타 설정을 구성합니다
Launch를 클릭합니다
6단계: Fluentd 설치 및 구성
키 페어를 ssh agent에 추가합니다
ssh-add <path-to-keypair>
3단계에서 다운로드한 GCP 자격 증명을 인스턴스로 SCP로 복사합니다
scp <path-to-gcp-cred-file> ubuntu@<public-ip>:/home/ubuntu/
새로 시작한 EC2 인스턴스에 SSH로 접속합니다
ssh ubuntu@<public-ip>
Ubuntu Focal에 대한 지침을 따릅니다
설치합니다 공식 AWS Kinesis 플러그인
sudo td-agent-gem install fluent-plugin-kinesis
GCP 플러그인을 설치합니다
sudo td-agent-gem install fluent-plugin-gcloud-pubsub-custom
기본 fluentd 설정을 다음 위치에서 덮어씁니다
/etc/td-agent/td-agent.conf:재시작
td-agentsudo systemctl restart td-agent
7단계: Panther에 데이터 온보딩
다음 이유로 GCP audit logs 는 기본적으로 지원되므로, S3 버킷을 데이터 전송 수단으로 구성 하여 Panther를 통해 로그 수집을 시작할 수 있습니다.
문제 해결
참고: CloudFormation 템플릿 내의
IntervalInSeconds및SizeInMBs매개변수 때문에 로그가 S3 버킷에 표시되기까지 약 5분이 걸릴 수 있습니다.오류가 있는지 td-agent 로그를 모니터링합니다
sudo tail -f /var/log/td-agent/td-agent.log
더 자세한 로깅이 필요하면 다음을 실행합니다:
td-agent -vv
마지막 업데이트
도움이 되었나요?

