GCP 감사 로그를 Fluentd로 S3에 전송하기

circle-exclamation

목표

이 레시피의 목적은 Google Cloud 프로젝트 감사 로그를 Panther로 스트리밍하는 것입니다. 많은 기업이 여러 클라우드 공급자를 사용하며, 이 단계들은 GCP 계정에서 발생하는 API 호출을 Panther로 수집할 수 있게 해줍니다.

우리는 GCP와 AWS 전반의 여러 기본 구성 요소를 조합하여 이를 구현할 것입니다.

솔루션 개요

높은 수준에서 우리는 다음 흐름을 구현할 것입니다:

  1. 감사 로그가 GCP에서 생성되어 Pub/Sub로 라우팅됩니다

  2. Fluentd가 Pub/Sub를 폴링하여 S3 버킷으로 전달합니다

  3. S3 버킷이 정규화, 디텍션 및 장기 저장을 위해 Panther에 온보딩됩니다

단계

1단계: 새 Pub/Sub 생성

The image shows the Pub/Sub console from Google Cloud Platform
  1. GCP에서 Pub/Sub 콘솔을 엽니다

  2. 새 토픽을 생성하고 이름을 Panther-Audit으로 지정합니다

    • ‘기본 구독 추가’의 선택을 해제합니다

    • CREATE TOPIC을 선택합니다

  3. Subscriptions > Create subscription을 클릭합니다

    • Subscription ID로 Panther-Audit을 입력합니다

    • Panther-Audit 토픽을 선택합니다

    • 나머지 옵션은 그대로 두거나(원하는 지출/예산에 따라) 만료/보존을 조정합니다

    • CREATE를 클릭합니다

토픽 이름(projects/<project-name>/topics/Panther-Audit)과 토픽 구독(Panther-Audit)을 적어두세요—나중에 사용합니다.

2단계: 로그 라우터 생성

The image shows the Logs Explorer page from Google Cloud Platform

참고: 프로젝트 싱크 대신 조직 전체의 집계된 로그 싱크를 선택적으로 생성할 수 있습니다. 집계된 싱크 생성에 대해 자세히 알아보려면 Google 문서arrow-up-right.

  1. 로깅 콘솔을 엽니다

  2. Logs Router를 클릭합니다

  3. CREATE SINK를 클릭합니다

  4. 이름을 Panther-Audit으로 설정합니다

  5. Sink 대상(Sink Destination)을 설정합니다

    • Cloud Pub/Sub 토픽

    • Panther-Audit 토픽을 선택합니다

  6. CREATE SINK를 클릭합니다

이 파이프라인이 작동하는지 확인하려면 Pub/Sub로 이동해 Panther-Audit의 토픽 ID를 클릭하고 ACTIVITY에서 감사 이벤트를 확인하면 됩니다.

The image shows Google Cloud Platform's Pub/Sub console. In the left sidebar, "Topics" is highlighted. The "Panther-audit" topic is selected.

3단계: 서비스 계정 생성

  1. IAM 및 관리(IAM & Admin)를 엽니다

  2. 서비스 계정(Service Accounts)을 클릭합니다

  3. CREATE SERVICE ACCOUNT를 클릭합니다

    • 서비스 계정 이름을 Panther-Audit으로 설정합니다. 원하면 설명을 추가하세요.

    • Create and Continue를 클릭합니다

    • 에서 이 서비스 계정에 프로젝트 접근 권한을 부여합니다 , 서비스 계정 접근 역할을 다음으로 설정합니다 Pub/Sub ViewerPub/Sub Subscriber

    • Continue를 클릭합니다

    • Done을 클릭합니다

  4. Service accounts -> Actions에서 Manage keys를 클릭하고, ADD KEY > Create new key를 선택하고 JSON을 선택한 후 CREATE를 눌러 자격 증명 파일을 다운로드합니다.

  5. 이 자격 증명 파일을 안전하게 보관하세요! 곧 사용합니다.

The image shows the IAM & Admin console in Google Cloud Platform. In the left sidebar, "Service Accounts" is highlighted. The center of the page says "Service accounts for project 'My First Project'". In the list, the panther-audit project is selected. A 3-dots icon on the right is expanded to an open dropdown menu, and the option "Manage keys" is highlighted.

4단계: AWS 인프라 구성

페이지에서 Fluentd 온보딩 가이드 , 검토하고 배포하세요 Firehose & S3 스택.

5단계: AWS에서 인스턴스 시작

  1. AWS EC2 콘솔을 열고(위에서 스택을 실행한 동일한 리전에서) Ubuntu 인스턴스를 시작합니다.

  2. Launch Instance를 클릭합니다

    • 선택하세요 Ubuntu Server 20.04 LTS

    • 선택하세요 t2.medium (또는 원하면 더 강력한 인스턴스 유형)

    • IAM 역할 섹션에서 Step 4에서 복사한 InstanceProfileName 값을 선택합니다. 형식은 “<stack-name>-FirehoseInstanceProfile-<random-string>”입니다

    • Add Storage를 클릭하고 64GiB 용량 드라이브를 추가합니다

    • 보안 그룹, 키 페어 및 기타 선호 설정을 원하는 대로 설정합니다

  3. Launch를 클릭합니다

6단계: Fluentd 설치 및 구성

  1. 키페어를 ssh 에이전트에 추가합니다

    • ssh-add <path-to-keypair>

  2. 3단계에서 다운로드한 GCP 자격 증명 파일을 인스턴스로 SCP합니다

    • scp <path-to-gcp-cred-file> ubuntu@<public-ip>:/home/ubuntu/

  3. 새로 시작한 EC2 인스턴스에 SSH로 접속합니다

    • ssh ubuntu@<public-ip>

  4. Ubuntu용 Fluentd를 설치합니다arrow-up-right

    • Ubuntu Focal에 대한 지침을 따르세요

  5. 다음을 설치합니다 공식arrow-up-right AWS Kinesis 플러그인

    • sudo td-agent-gem install fluent-plugin-kinesis

  6. GCP 플러그인을 설치합니다

    • sudo td-agent-gem install fluent-plugin-gcloud-pubsub-custom

  7. 기본 fluentd 구성을 다음에 덮어씁니다 /etc/td-agent/td-agent.conf:

  8. 재시작 td-agent

    • sudo systemctl restart td-agent

7단계: Panther로 데이터 온보딩

다음과 같이 GCP 감사 로그 이 기본 제공을 지원하므로, S3 버킷을 데이터 전송 수단으로 구성하여 Panther를 통해 로그 수집을 시작할 수 있습니다.

문제 해결

  • 참고: 로그는 CloudFormation 템플릿 내의 IntervalInSecondsSizeInMBs 매개변수 때문에 S3 버킷에 표시되기까지 약 5분 정도 걸릴 수 있습니다.

  • td-agent 로그에서 오류를 모니터링하세요

    • sudo tail -f /var/log/td-agent/td-agent.log

  • 보다 자세한 로깅이 필요하면 다음을 실행하세요:

    • td-agent -vv

마지막 업데이트

도움이 되었나요?