Chronicle에 Google Cloud 데이터 수집

이 페이지에서는 Google Cloud 데이터를 Chronicle에 수집하도록 사용 설정 및 사용 중지하는 방법을 보여줍니다. Chronicle을 사용하면 데이터 보관 기간에 따라 몇 달 혹은 그 이상에 해당하는 기간 동안 회사에서 집계된 보안 정보를 저장, 검색 및 검사할 수 있습니다.

개요

Google Cloud 데이터를 Chronicle로 전송하는 데에는 두 가지 옵션이 있습니다. 적절한 옵션 선택은 로그 유형에 따라 달라집니다.

옵션 1: 직접 수집

특정 로그 유형을 Chronicle에 실시간으로 전송하도록 Google Cloud에서 특별한 Cloud Logging 필터를 구성할 수 있습니다. 이러한 로그는 Google Cloud 서비스에서 생성됩니다.

Chronicle은 Google Cloud의 프로젝트 수준에서 제외된 경우에도 로그를 수신하지만 로그 내보내기 필터와 조직 수준의 Google Cloud 로깅에 모두에 포함됩니다. Chronicle에서 로그를 제외하려면 Google Cloud에서 Chronicle 로그 내보내기 필터를 업데이트해야 합니다.

사용 가능한 로그 유형은 다음과 같습니다.

Compute Engine 또는 Google Kubernetes Engine(GKE) 어플라이언스 로그(예: Apache, Nginx 또는 IIS)를 수집하려면 옵션 2를 사용합니다. 또한 옵션 1에서 이러한 로그를 로그 유형으로 포함하는 데 대한 피드백을 제공하려면 향후 기능 개선에 도움이 될 수 있도록 Chronicle에 지원 티켓을 제출하세요.

특정 로그 필터 및 추가 수집 세부정보에 대해서는 Chronicle에 Google Cloud 로그 내보내기를 참조하세요.

컨텍스트 보강 목적으로 추가적인 Google Cloud 메타데이터를 Chronicle로 전송할 수도 있습니다. 자세한 내용은 Chronicle에 Google Cloud 애셋 메타데이터 내보내기를 참조하세요.

옵션 2: Google Cloud Storage

Cloud Logging은 미리 정의된 일정에 따라 Chronicle에서 검색할 수 있도록 로그를 Cloud Storage로 라우팅할 수 있습니다.

Chronicle에 맞게 Cloud Storage를 구성하는 방법은 피드 관리: Cloud Storage를 참조하세요.

시작하기 전에

Google Cloud 데이터를 Chronicle 인스턴스로 수집하기 전에 다음 단계를 완료해야 합니다.

  1. Chronicle 담당자에게 문의하여 Google Cloud 데이터를 수집하는 데 필요한 일회성 액세스 코드를 받습니다.

  2. Chronicle 섹션에 액세스하려면 필요한 다음 IAM 역할을 부여합니다.

    • Chronicle 서비스 관리자(roles/chroniclesm.admin): 모든 활동을 수행하기 위한 IAM 역할입니다.
    • Chronicle 서비스 뷰어(roles/chroniclesm.viewer): 수집 상태만 보기 위한 IAM 역할입니다.
    • 보안 센터 관리자 편집자(roles/securitycenter.adminEditor): Cloud 애셋 메타데이터 수집을 사용 설정하기 위해 필요합니다.
  3. Cloud 애셋 메타데이터를 사용 설정하려면 Security Command Center 표준 등급 또는 Security Command Center 프리미엄 등급 Google Cloud 서비스도 사용 설정해야 합니다. 자세한 내용은 조직에 Security Command Center 활성화를 참조하세요.

IAM 역할 부여

Google Cloud 콘솔 또는 gcloud CLI를 사용하여 필요한 IAM 역할을 부여할 수 있습니다.

Google Cloud Console을 사용하여 IAM 역할을 부여하려면 다음 단계를 완료하세요.

  1. 연결하려는 Google Cloud 조직에 로그온하고 제품 > IAM 및 관리자 > IAM을 사용해서 IAM 화면으로 이동합니다.
  2. IAM 화면에서 사용자를 선택하고 구성원 수정을 클릭합니다.

  3. 권한 수정 화면에서 다른 역할 추가를 클릭하고 Chronicle을 검색하여 IAM 역할을 찾습니다.

  4. 역할을 할당한 후 저장을 클릭합니다.

Google Cloud CLI를 사용하여 IAM 역할을 부여하려면 다음 단계를 완료하세요.

  1. 올바른 조직에 로그인되어 있는지 확인합니다. gcloud init 명령어를 실행하여 이를 확인할 수 있습니다.

  2. gcloud를 사용해서 Chronicle 서비스 관리자 IAM 역할을 부여하려면 다음 명령어를 실행합니다.

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member "user:USER_EMAIL" \
    --role roles/chroniclesm.admin
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 숫자로 된 조직 ID입니다.
    • USER_EMAIL: 관리자의 이메일 주소입니다.
  3. gcloud를 사용해서 Chronicle 서비스 뷰어 IAM 역할을 부여하려면 다음 명령어를 실행합니다.

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member "user:USER_EMAIL" \
    --role roles/chroniclesm.viewer
    
  4. gcloud를 사용해서 보안 센터 관리자 편집자 역할을 부여하려면 다음 명령어를 실행합니다.

     gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
     --member "user:USER_EMAIL" \
     --role roles/securitycenter.adminEditor`
    

Google Cloud 데이터 수집 사용 설정

Google Cloud 데이터는 Security Command Center와 Chronicle 사이의 비공개 내부 API를 사용해서 수집됩니다. 수집은 외부 네트워크에 연결되지 않으며 IP 주소를 사용하지 않습니다. Google은 Security Command Center에 대해 Chronicle에서 제공된 일회용 코드를 사용하여 수행된 인증에 따라 직접 Google Cloud 로그에 액세스합니다.

Google Cloud 조직에서 Chronicle 인스턴스로 데이터를 수집하려면 다음 단계를 완료하세요.

  1. Google Cloud 콘솔의 Chronicle 페이지로 이동합니다.
    Chronicle 페이지로 이동

  2. 일회성 Chronicle 액세스 코드 입력란에 일회성 액세스 코드를 입력합니다.

  3. Chronicle 사용에 동의하려면 Google Cloud 데이터의 Chronicle 사용 이용약관에 동의합니다 박스를 체크하세요.

  4. Chronicle 연결을 클릭합니다.

이제 Google Cloud 데이터가 Chronicle로 전송됩니다. Chronicle의 분석 기능을 사용하여 보안 관련 문제를 조사할 수 있습니다. 다음 섹션에서는 Chronicle로 전송될 Google Cloud 데이터 유형을 조정하는 방법을 설명합니다.

Google Cloud 로그를 Chronicle로 내보내기

다음 유형의 Google Cloud 데이터를 Chronicle 인스턴스로 내보낼 수 있습니다.

  • GCP_CLOUDAUDIT:
    • log_id("cloudaudit.googleapis.com/activity")(기본 필터로 내보냄)
    • log_id("cloudaudit.googleapis.com/system_event")(기본 필터로 내보냄)
    • log_id("cloudaudit.googleapis.com/policy")
    • log_id("cloudaudit.googleapis.com/access_transparency")
  • GCP_CLOUD_NAT:
    • log_id("compute.googleapis.com/nat_flows")
  • GCP_DNS:
    • log_id("dns.googleapis.com/dns_queries")(기본 필터로 내보냄)
  • GCP_FIREWALL:
    • log_id("compute.googleapis.com/firewall")
  • GCP_IDS:
    • log_id("ids.googleapis.com/threat")
    • log_id("ids.googleapis.com/traffic")
  • GCP_LOADBALANCING:
    • log_id("requests")
    • log_id("loadbalancing.googleapis.com/external_regional_requests")
    • log_id("networksecurity.googleapis.com/network_dos_attack_mitigations")
    • log_id("networksecurity.googleapis.com/dos_attack")
    • 여기에는 Google Cloud Armor 및 Cloud Load Balancing의 로그가 포함됩니다.
  • GCP_CLOUDSQL:
    • log_id("cloudsql.googleapis.com/mysql-general.log")
    • log_id("cloudsql.googleapis.com/mysql.err")
    • log_id("cloudsql.googleapis.com/postgres.log")
    • log_id("cloudsql.googleapis.com/sqlagent.out")
    • log_id("cloudsql.googleapis.com/sqlserver.err")
  • NIX_SYSTEM:
    • log_id("syslog")
    • log_id("authlog")
    • log_id("securelog")
  • LINUX_SYSMON:
    • log_id("sysmon.raw")
  • WINEVTLOG:
    • log_id("winevt.raw")
    • log_id("windows_event_log")
  • BRO_JSON:
    • log_id("zeek_json_streaming_conn")
    • log_id("zeek_json_streaming_dhcp")
    • log_id("zeek_json_streaming_dns")
    • log_id("zeek_json_streaming_http")
    • log_id("zeek_json_streaming_ssh")
    • log_id("zeek_json_streaming_ssl")
  • KUBERNETES_NODE:
    • log_id("events")
    • log_id("stdout")
    • log_id("stderr")
  • AUDITD:
    • log_id("audit_log")
  • GCP_APIGEE_X:
    • log_id("apigee-logs")
    • logName =~ "^projects/[\w\-]+/logs/apigee\.googleapis\.com[\w\-]*$"
    • 필요에 따라 로그 필터의 정규 표현식 조정
  • GCP_RECAPTCHA_ENTERPRISE:
    • log_id("recaptchaenterprise.googleapis.com/assessment")
    • log_id("recaptchaenterprise.googleapis.com/annotation")
  • GCP_RUN:
    • log_id("run.googleapis.com/stderr")
    • log_id("run.googleapis.com/stdout")
    • log_id("run.googleapis.com/requests")
    • log_id("run.googleapis.com/varlog/system")
  • GCP_NGFW_ENTERPRISE:
    • log_id("networksecurity.googleapis.com/firewall_threat")

Google Cloud 로그를 Chronicle로 내보내려면 Google Cloud 로그 전환을 사용 설정합니다. 위에 나열된 모든 Google Cloud 로그 유형을 Chronicle 인스턴스로 내보냅니다.

Google Cloud 로그

사용할 로그 필터에 대한 권장사항은 Google Cloud의 보안 로그 분석을 참조하세요.

필터 설정 내보내기

기본적으로 Cloud 감사 로그(관리자 활동 및 시스템 이벤트)와 Cloud DNS 로그는 Chronicle 계정으로 전송됩니다. 하지만 특정 유형의 로그를 포함하거나 제외하도록 내보내기 필터를 맞춤설정할 수 있습니다. 내보내기 필터는 Google 로깅 쿼리 언어를 기반으로 합니다.

로그의 커스텀 필터를 정의하려면 다음 단계를 완료하세요.

  1. 로깅 쿼리 언어를 사용하는 커스텀 필터를 만들어 필터를 정의합니다. 다음 문서에서는 이 유형의 필터를 정의하는 방법을 설명합니다. /logging/docs/view/logging-query-language

  2. 내보내기 필터 설정 탭에 제공된 링크를 사용하여 로그 탐색기로 이동하여 새 쿼리를 쿼리 필드에 복사하고 쿼리 실행을 클릭하여 테스트합니다.

    로그 탐색기에 표시된 일치하는 로그가 Chronicle로 내보내려는 로그와 정확히 일치하는지 확인합니다.

내보내기 필터 설정 탭에서 다음 단계를 완료합니다.

  1. 필터가 준비되면 수정 아이콘을 클릭하고 필터 내보내기 필드에 필터를 붙여넣습니다.

  2. 커스텀 필터 저장을 클릭합니다. 새 커스텀 필터는 Chronicle 계정으로 내보낸 모든 로그에 적용됩니다.

  3. 기본값으로 재설정을 클릭하여 내보내기 필터를 기본 버전으로 재설정할 수 있습니다. 먼저 커스텀 필터의 사본을 저장해야 합니다.

Cloud 감사 로그 필터 조정

Cloud 감사 데이터 액세스 로그는 많은 큰 위협 감지 값 없이 대량의 로그를 생성할 수 있습니다. Chronicle에 이러한 로그를 전송하도록 선택할 경우 루팅 활동으로 생성된 로그를 필터링해야 합니다.

다음 내보내기 필터는 데이터 액세스 로그를 캡처하고 Cloud Storage 및 Cloud SQL의 읽기 및 나열 작업과 같은 대량 이벤트를 제외합니다.

  ( `log_id("cloudaudit.googleapis.com/data_access")`
  AND NOT protoPayload.methodName =~ "^storage\.(buckets|objects)\.(get|list)$"
  AND NOT protoPayload.request.cmd = "select" )

Cloud 감사 데이터 액세스 로그 조정에 대한 자세한 내용은 여기를 참조하세요.

내보내기 필터 예시

다음 내보내기 필터 예시는 특정 유형의 로그를 Chronicle 계정으로 내보내지 못하도록 포함하거나 제외하는 방법을 보여줍니다.

내보내기 필터 예시 1: 추가 로그 유형 포함

다음 내보내기 필터는 기본 로그 외에도 액세스 투명성 로그를 내보냅니다.

log_id("dns.googleapis.com/dns_queries") OR
log_id("cloudaudit.googleapis.com/activity") OR
log_id("cloudaudit.googleapis.com/system_event") OR
log_id("cloudaudit.googleapis.com/access_transparency")

내보내기 필터 예시 2: 특정 프로젝트의 추가 로그 포함

다음 내보내기 필터는 기본 로그 외에도 특정 프로젝트의 액세스 투명성 로그를 내보냅니다.

log_id("dns.googleapis.com/dns_queries") OR
log_id("cloudaudit.googleapis.com/activity") OR
log_id("cloudaudit.googleapis.com/system_event") OR
logName = "projects/my-project-id/logs/cloudaudit.googleapis.com%2Faccess_transparency"

내보내기 필터 예시 3: 특정 폴더의 추가 로그 포함

다음 내보내기 필터는 기본 로그 외에도 특정 폴더의 액세스 투명성 로그를 내보냅니다.

log_id("dns.googleapis.com/dns_queries") OR
log_id("cloudaudit.googleapis.com/activity") OR
log_id("cloudaudit.googleapis.com/system_event") OR
logName = "folders/my-folder-id/logs/cloudaudit.googleapis.com%2Faccess_transparency"

내보내기 필터 예시 4: 특정 프로젝트에서 로그 제외

다음 내보내기 필터는 특정 프로젝트를 제외하고 전체 Google Cloud 조직에서 기본 로그를 내보냅니다.

(log_id("dns.googleapis.com/dns_queries") OR
log_id("cloudaudit.googleapis.com/activity") OR
log_id("cloudaudit.googleapis.com/system_event")) AND
(NOT logName =~ "^projects/my-project-id/logs/.*$")

Google Cloud 애셋 메타데이터를 Chronicle로 내보내기

Google Cloud 애셋 메타데이터를 Chronicle로 내보낼 수 있습니다. 이 애셋 메타데이터는 Google Cloud 애셋 인벤토리에서 가져온 것이며 다음을 포함하여 애셋, 리소스, ID에 대한 정보로 구성됩니다.

  • 환경
  • 위치
  • 영역
  • 하드웨어 모델
  • 리소스와 ID 간의 액세스 제어 관계

다음은 Chronicle 계정으로 내보낼 Google Cloud 애셋 메타데이터의 구체적인 유형입니다.

  • GCP_BIGQUERY_CONTEXT
  • GCP_CLOUD_FUNCTIONS_CONTEXT
  • GCP_COMPUTE_CONTEXT
  • GCP_IAM_CONTEXT
  • GCP_IAM_ANALYSIS
  • GCP_KUBERNETES_CONTEXT
  • GCP_NETWORK_CONNECTIVITY_CONTEXT
  • GCP_RESOURCE_MANAGER_CONTEXT
  • GCP_SQL_CONTEXT
  • GCP_STORAGE_CONTEXT

다음은 Google Cloud 애셋 메타데이터의 몇 가지 예시입니다.

  • 애플리케이션 이름—Google-iamSample/0.1
  • 프로젝트 이름—projects/my-project

Resource Manager 컨텍스트 로그 필드의 예시로는 assetType, resource.data.name, resource.version이 있습니다.

리소스 유형에 대한 자세한 내용은 Cloud 애셋 인벤토리 지원 리소스 유형을 참조하세요.

Google Cloud 애셋 메타데이터를 Chronicle로 내보내려면 Cloud 애셋 메타데이터 전환을 사용 설정합니다.

Cloud 애셋 메타데이터 사용 설정

필드 매핑 참조 및 지원되는 리소스 유형

다음 표에는 Chronicle에서 지원하는 컨텍스트 파서, 해당 수집 라벨, 지원되는 리소스 유형이 나와 있습니다.

컨텍스트 파서의 매핑 참조 문서를 보려면 표에서 해당 컨텍스트 파서 이름을 클릭하세요.

서비스 이름 수집 라벨 지원되는 리소스 유형
BigQuery GCP_BIGQUERY_CONTEXT
Resource Manager GCP_RESOURCE_MANAGER_CONTEXT
Cloud SQL GCP_SQL_CONTEXT
Cloud Functions GCP_CLOUD_FUNCTIONS_CONTEXT
Identity and Access Management GCP_IAM_CONTEXT
Network Connectivity Center GCP_NETWORK_CONNECTIVITY_CONTEXT
Google Kubernetes Engine GCP_KUBERNETES_CONTEXT
Compute Engine GCP_COMPUTE_CONTEXT

Security Command Center 발견 항목을 Chronicle로 내보내기

Security Command Center 프리미엄 Event Threat Detection(ETD) 발견 항목 및 기타 모든 발견 항목을 Chronicle로 내보낼 수 있습니다.

Event Threat Detection 발견 항목에 대한 자세한 내용은 Security Command Center 개요를 참조하세요.

Security Command Center 프리미엄 발견 항목을 Chronicle로 내보내려면 Security Command Center 프리미엄 등급 발견 항목 전환을 사용 설정합니다.

Security Command Center 프리미엄 등급 발견 항목 사용 설정

Sensitive Data Protection 데이터를 Chronicle로 내보내기

Sensitive Data Protection 애셋 메타데이터(DLP_CONTEXT)를 수집하려면 다음을 수행합니다.

  1. 이 문서의 이전 섹션을 완료하여 Google Cloud 데이터 수집을 사용 설정합니다.
  2. 데이터 프로파일링을 위해 Sensitive Data Protection을 구성합니다.
  3. Chronicle에 데이터 프로필을 게시하도록 스캔 설정을 구성합니다.

BigQuery 데이터의 데이터 프로필을 만드는 방법에 대한 자세한 내용은 Sensitive Data Protection 문서를 참조하세요.

Google Cloud 데이터 수집 사용 중지

  1. Chronicle 연결을 해제하고 Google Cloud 로그를 Chronicle로 보내는 것을 중지합니다라고 표시된 박스를 체크하세요.

  2. Chronicle 연결 해제를 클릭합니다.

    Chronicle의 연결을 해제합니다.

문제 해결

  • Chronicle 시스템에서 리소스와 ID 간의 관계가 누락된 경우 Cloud 로그를 Chronicle로 내보내기를 사용 중지로 전환한 다음 다시 사용 설정으로 전환합니다.
  • 애셋 메타데이터는 주기적으로 Chronicle에 수집됩니다. 변경사항이 Chronicle UI 및 API에 몇 시간 정도 표시되도록 허용합니다.

다음 단계

  • Chronicle 담당자가 제공한 고객별 URL을 사용하여 Chronicle 계정 열기
  • Chronicle에 대해 자세히 알아보기