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을 클릭합니다

    • 구독 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. Logging 콘솔을 엽니다

  2. Logs Router를 클릭합니다

  3. CREATE SINK를 클릭합니다

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

  5. Sink 대상지를 설정합니다

    • 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 역할 섹션에서, 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

Last updated

Was this helpful?