Tanium 감사 로그 수집

다음에서 지원:

이 문서에서는 Tanium Connect의 기본 S3 내보내기 기능을 사용하여 Amazon S3를 통해 Tanium 감사 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 로그를 추출하여 처음에는 여러 기본 필드를 삭제합니다. 그런 다음 grok 및 json 필터를 사용하여 로그 메시지를 파싱하고 타임스탬프, 기기 IP, 감사 세부정보와 같은 필드를 추출합니다. 파서는 추출된 필드를 UDM에 매핑하여 다양한 데이터 유형과 조건부 로직을 처리하여 특정 Tanium 감사 로그 속성의 존재 여부와 값을 기반으로 적절한 UDM 필드를 채웁니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Tanium ConnectTanium Console에 대한 권한 있는 액세스
  • AWS (S3, IAM)에 대한 관리자 액세스

Amazon S3 버킷 만들기

  1. Amazon S3 콘솔을 엽니다.
  2. 필요한 경우 지역을 변경할 수 있습니다.
    • 탐색 메뉴에서 Tanium 감사 로그가 상주할 리전을 선택합니다.
  3. 버킷 만들기를 클릭합니다.
    • 버킷 이름: 버킷의 의미 있는 이름을 입력합니다 (예: tanium-audit-logs).
    • 리전: 원하는 리전을 선택합니다 (예: us-east-1).
    • 만들기를 클릭합니다.

Amazon S3에 대한 모든 권한이 있는 IAM 사용자 만들기

  1. IAM console(IAM 콘솔)을 엽니다.
  2. 사용자> 사용자 추가를 클릭합니다.
  3. 사용자 이름을 입력합니다 (예: tanium-connect-s3-user).
  4. 필요에 따라 프로그래매틱 액세스 및/또는 AWS 관리 콘솔 액세스를 선택합니다.
  5. 자동 생성 비밀번호 또는 맞춤 비밀번호를 선택합니다.
  6. 다음: 권한을 클릭합니다.
  7. 기존 정책 직접 연결을 선택합니다.
  8. 사용자에게 AmazonS3FullAccess 정책을 검색하여 선택합니다.
  9. 다음: 태그를 클릭합니다.
  10. 다음: 검토를 클릭합니다.
  11. 사용자 만들기를 클릭합니다.
  12. 나중에 참조할 수 있도록 액세스 키 ID보안 비밀 액세스 키복사하고 저장합니다.

Amazon S3 버킷에 대한 권한 구성

  1. Amazon S3 콘솔에서 이전에 만든 버킷을 선택합니다.
  2. 권한 > 버킷 정책을 클릭합니다.
  3. 버킷 정책 편집기에서 다음 정책을 추가합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user"
          },
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::tanium-audit-logs",
            "arn:aws:s3:::tanium-audit-logs/*"
          ]
        }
      ]
    }
    
  4. 다음 변수를 바꿉니다.

    • YOUR_ACCOUNT_ID를 AWS 계정 ID로 변경합니다.
    • tanium-audit-logs을 실제 버킷 이름으로 변경합니다(다른 경우).
    • tanium-connect-s3-user을 실제 IAM 사용자 이름으로 변경합니다(다른 경우).
  5. 저장을 클릭합니다.

S3 내보내기를 위한 Tanium Connect 구성

Tanium Connect에서 AWS S3 연결 만들기

  1. 관리자로 Tanium Console에 로그인합니다.
  2. Tanium Connect > Connections로 이동합니다.
  3. 연결 만들기를 클릭합니다.
  4. 일반 정보 섹션에서 다음 구성 세부정보를 제공합니다.
    • 이름: 설명이 포함된 이름을 입력합니다 (예: Tanium Audit to S3).
    • 설명: 의미 있는 설명을 입력합니다 (예: Export Tanium audit logs to S3 for Google SecOps ingestion).
    • 사용 설정: 연결을 사용 설정하려면 선택합니다.
    • 로그 수준: 정보 (기본값)를 선택하거나 필요에 따라 조정합니다.

연결 소스 구성

  1. 구성 섹션의 소스에서 Tanium 감사를 선택합니다.
  2. 감사 소스 설정을 구성합니다.
    • 검색된 기록 일수: 검색할 이전 감사 데이터의 일수를 입력합니다 (예: 7는 1주일).
    • 감사 유형: 내보낼 감사 유형을 선택합니다. 다음 중에서 선택하세요.
      • 작업 기록: 콘솔 운영자가 실행한 작업입니다.
      • 인증: 사용자 인증 이벤트입니다.
      • 콘텐츠: 콘텐츠 변경 및 수정
      • 그룹: 컴퓨터 그룹 변경사항입니다.
      • 패키지: 패키지 관련 활동입니다.
      • 센서: 센서 수정
      • 시스템 설정: 시스템 구성이 변경됩니다.
      • 사용자: 사용자 관리 활동입니다.

AWS S3 대상 구성

  1. 대상에서 AWS S3를 선택합니다.
  2. 다음 구성 세부정보를 제공합니다.
    • 대상 이름: 이름을 입력합니다 (예: Google SecOps S3 Bucket).
    • AWS 액세스 키: 이전에 만든 IAM 사용자의 액세스 키 ID를 입력합니다.
    • AWS 보안 비밀 키: 이전에 만든 IAM 사용자의 보안 비밀 액세스 키를 입력합니다.
    • 버킷 이름: S3 버킷 이름 (예: tanium-audit-logs)을 입력합니다.
    • 버킷 경로: 선택사항입니다. 경로 접두사 (예: tanium/audit/)를 입력합니다.
    • 리전: 버킷이 있는 AWS 리전을 선택합니다 (예: us-east-1).

형식 및 일정 구성

  1. 형식 섹션에서 출력 형식을 구성합니다.
    • 형식 유형: JSON을 선택합니다.
    • 열 헤더 포함: 열 헤더를 포함할지 선택합니다.
    • 문서 생성: 원시 JSON 데이터를 전송하려면 이 옵션을 선택 해제합니다.
  2. 일정 섹션에서 연결이 실행되는 시기를 구성합니다.
    • Schedule Type(일정 유형): Cron을 선택합니다.
    • 크론 표현식: 정기 내보내기를 위한 크론 표현식을 입력합니다 (예: 시간별 내보내기의 경우 0 */1 * * *).
    • 시작일: 일정의 시작일을 설정합니다.
  3. 변경사항 저장을 클릭합니다.

연결 테스트 및 실행

  1. Connect 개요 페이지에서 연결로 이동합니다.
  2. 만든 연결 (Tanium Audit to S3)을 클릭합니다.
  3. 지금 실행을 클릭하여 연결을 테스트합니다.
  4. 연결을 실행할 것인지 확인합니다.
  5. 연결 상태를 모니터링하고 감사 로그가 S3 버킷으로 내보내지는지 확인합니다.

선택사항: Google SecOps용 읽기 전용 IAM 사용자 및 키 만들기

  1. AWS 콘솔 > IAM > 사용자 > 사용자 추가로 이동합니다.
  2. Add users를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 사용자: secops-reader를 입력합니다.
    • 액세스 유형: 액세스 키 – 프로그래매틱 액세스를 선택합니다.
  4. 사용자 만들기를 클릭합니다.
  5. 최소 읽기 정책 (맞춤) 연결: 사용자 > secops-reader > 권한 > 권한 추가 > 정책 직접 연결 > 정책 만들기
  6. JSON 편집기에서 다음 정책을 입력합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::tanium-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::tanium-audit-logs"
        }
      ]
    }
    
  7. 이름을 secops-reader-policy로 설정합니다.

  8. 정책 만들기 > 검색/선택 > 다음 > 권한 추가로 이동합니다.

  9. 보안 사용자 인증 정보> 액세스 키> 액세스 키 만들기로 이동합니다.

  10. CSV를 다운로드합니다 (이러한 값은 피드에 입력됨).

Tanium 감사 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정> 피드로 이동합니다.
  2. + 새 피드 추가를 클릭합니다.
  3. 피드 이름 필드에 피드 이름을 입력합니다 (예: Tanium Audit logs).
  4. 소스 유형으로 Amazon S3 V2를 선택합니다.
  5. 로그 유형으로 Tanium 감사를 선택합니다.
  6. 다음을 클릭합니다.
  7. 다음 입력 파라미터의 값을 지정합니다.
    • S3 URI: s3://tanium-audit-logs/tanium/audit/ (다른 버킷 이름이나 경로를 사용한 경우 경로 조정).
    • 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
    • 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다. 기본값은 180일입니다.
    • 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키 (위에서 생성한 읽기 전용 사용자에서 가져옴)
    • 보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키 (위에서 생성한 읽기 전용 사용자에서 가져옴)
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
  8. 다음을 클릭합니다.
  9. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
ActionId metadata.product_log_id ActionId 필드에서 직접 매핑됩니다.
ActionName security_result.action_details ActionName 필드에서 직접 매핑됩니다.
Approver additional.fields[Approver].value.string_value Approver 필드에서 직접 매핑됩니다.
Approver principal.user.userid Issuer이 없는 경우 Approver 필드에서 매핑됩니다.
audit_name metadata.description audit_name 필드에서 직접 매핑됩니다.
audit_row_id additional.fields[audit_row_id].value.string_value audit_row_id 필드에서 직접 매핑됩니다.
audit_type additional.fields[audit_type].value.string_value audit_type 필드에서 직접 매핑됩니다.
authentication_type principal.user.attribute.labels[authentication_type].value details 필드에서 추출한 authentication_type 필드에서 직접 매핑됩니다.
Command principal.process.command_line URL 디코딩 후 Command 필드에서 직접 매핑됩니다.
creation_time target.resource.attribute.creation_time creation_time 필드에서 직접 매핑됩니다.
details network.session_id 키-값 파싱을 사용하여 details 필드에서 추출됩니다.
details principal.user.attribute.labels[authentication_type].value 키-값 파싱을 사용하여 details 필드에서 추출됩니다.
details principal.asset.ip, principal.ip IP 주소는 키-값 파싱을 사용하여 details 필드에서 추출되고 principal.asset.ipprincipal.ip에 모두 매핑됩니다.
DistributeOver additional.fields[DistributeOver].value.string_value DistributeOver 필드에서 직접 매핑됩니다.
dvc_ip intermediary.hostname syslog 메시지에서 추출된 dvc_ip 필드에서 직접 매핑됩니다.
dvc_ip observer.ip logstash.collect.host이 없는 경우 dvc_ip 필드에서 직접 매핑됩니다.
Expiration additional.fields[Expiration].value.string_value Expiration 필드에서 직접 매핑됩니다.
host.architecture target.asset.hardware.cpu_platform host.architecture 필드에서 직접 매핑됩니다.
host.id target.asset.asset_id host.id 필드에서 직접 매핑되며 '호스트 ID:'가 앞에 붙습니다.
host.ip target.ip host.ip 필드에서 직접 매핑됩니다.
host.mac target.mac host.mac 필드에서 직접 매핑됩니다.
host.name target.hostname host.hostname이 없는 경우 host.name 필드에서 직접 매핑됩니다.
host.os.kernel target.platform_patch_level host.os.kernel 필드에서 직접 매핑됩니다.
host.os.name additional.fields[os_name].value.string_value host.os.name 필드에서 직접 매핑됩니다.
host.os.version target.platform_version host.os.version 필드에서 직접 매핑됩니다.
InsertTime additional.fields[InsertTime].value.string_value InsertTime 필드에서 직접 매핑됩니다.
Issuer additional.fields[Issuer].value.string_value Issuer 필드에서 직접 매핑됩니다.
Issuer principal.user.userid 있는 경우 Issuer 필드에서 직접 매핑됩니다.
last_modified_by principal.resource.attribute.labels[last_modified_by].value last_modified_by 필드에서 직접 매핑됩니다.
log.source.address principal.ip IP 주소는 log.source.address 필드에서 추출되어 principal.ip에 매핑됩니다.
log.source.address principal.port 포트는 log.source.address 필드에서 추출됩니다.
logstash.collect.host observer.ip 있는 경우 logstash.collect.host 필드에서 직접 매핑됩니다.
logstash.collect.timestamp metadata.collected_timestamp logstash.collect.timestamp 필드에서 직접 매핑됩니다.
logstash.ingest.timestamp metadata.ingested_timestamp logstash.ingest.timestamp 필드에서 직접 매핑됩니다.
logstash.irm_environment additional.fields[irm_environment].value.string_value logstash.irm_environment 필드에서 직접 매핑됩니다.
logstash.irm_region additional.fields[irm_region].value.string_value logstash.irm_region 필드에서 직접 매핑됩니다.
logstash.irm_site additional.fields[irm_site].value.string_value logstash.irm_site 필드에서 직접 매핑됩니다.
logstash.process.host intermediary.hostname logstash.process.host 필드에서 직접 매핑됩니다.
message dvc_ip, json_data, timestamp grok을 사용하여 dvc_ip, json_data, timestamp를 추출했습니다.
modification_time target.resource.attribute.last_update_time modification_time 필드에서 직접 매핑됩니다.
modifier_user_id principal.resource.attribute.labels[modifier_user_id].value modifier_user_id 필드에서 직접 매핑됩니다.
object_id target.resource.product_object_id object_id 필드에서 직접 매핑됩니다.
object_name target.resource.name object_name 필드에서 직접 매핑됩니다.
object_type_name target.resource.attribute.labels[object_type_name].value object_type_name 필드에서 직접 매핑됩니다.
PackageName additional.fields[PackageName].value.string_value PackageName 필드에서 직접 매핑됩니다.
SourceId additional.fields[SourceId].value.string_value SourceId 필드에서 직접 매핑됩니다.
StartTime additional.fields[StartTime].value.string_value StartTime 필드에서 직접 매핑됩니다.
Status security_result.action Status이 'Closed'인 경우 'BLOCK'에, Status이 'Open'인 경우 'ALLOW'에 매핑됩니다.
Status security_result.summary Status 필드에서 직접 매핑됩니다.
tanium_audit_type metadata.product_event_type tanium_audit_type 필드에서 직접 매핑됩니다.
timestamp metadata.event_timestamp syslog 메시지 또는 message 필드에서 추출된 timestamp 필드에서 직접 매핑됩니다.
type additional.fields[type].value.string_value type 필드에서 직접 매핑됩니다.
type_name metadata.product_event_type type_name 필드에서 직접 매핑됩니다.
User principal.user.userid User 필드에서 직접 매핑됩니다. src_ip, has_target, has_user의 존재를 기반으로 한 파서 로직에 의해 결정됩니다. 'NETWORK_CONNECTION', 'USER_RESOURCE_ACCESS', 'STATUS_UPDATE' 또는 'GENERIC_EVENT'일 수 있습니다. 'TANIUM_AUDIT'으로 하드코딩됩니다. '사이버 보안'으로 하드코딩됩니다. 'TANIUM_AUDIT'으로 하드코딩됩니다.
@version metadata.product_version @version 필드에서 직접 매핑됩니다.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value agent.ephemeral_id 필드에서 직접 매핑됩니다.
agent.id observer.asset_id agent.id 필드에서 직접 매핑되며 'filebeat:'이 접두사로 붙습니다.
agent.type observer.application agent.type 필드에서 직접 매핑됩니다.
agent.version observer.platform_version agent.version 필드에서 직접 매핑됩니다.
Comment security_result.description Comment 필드에서 직접 매핑됩니다.
host.hostname target.hostname 있는 경우 host.hostname 필드에서 직접 매핑됩니다.
input.type network.ip_protocol input.type이 'tcp' 또는 'TCP'인 경우 'TCP'에 매핑됩니다.
syslog_severity security_result.severity syslog_severity가 'error' 또는 'warning'인 경우 'HIGH'에 매핑되고, 'notice'인 경우 'MEDIUM'에 매핑되고, 'information' 또는 'info'인 경우 'LOW'에 매핑됩니다.
syslog_severity security_result.severity_details syslog_severity 필드에서 직접 매핑됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.