GitHub 감사 로그 수집

다음에서 지원:

이 문서에서는 Amazon S3를 사용하여 GitHub 감사 로그를 Google Security Operations로 수집하는 방법을 설명합니다. 파서는 다양한 grok 패턴을 사용하여 'message' 필드에서 데이터를 추출하려고 시도하며 JSON 형식과 비 JSON 형식을 모두 처리합니다. 추출된 'process_type'을 기반으로 grok, kv, 기타 필터를 사용하여 원시 로그 데이터를 통합 데이터 모델 (UDM) 스키마에 매핑하는 특정 파싱 로직을 적용합니다.

시작하기 전에

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

  • Google SecOps 인스턴스
  • 엔터프라이즈 소유자 권한이 있는 GitHub Enterprise Cloud 테넌트에 대한 권한 액세스
  • AWS (S3, IAM)에 대한 액세스 권한

GitHub Enterprise Cloud 필수사항 (엔터프라이즈 액세스) 수집

  1. GitHub Enterprise Cloud 관리 콘솔에 로그인합니다.
  2. 엔터프라이즈 설정 > 설정 > 감사 로그 > 로그 스트리밍으로 이동합니다.
  3. 감사 로그 스트리밍을 구성하려면 엔터프라이즈 소유자 권한이 있어야 합니다.
  4. 다음 세부정보를 복사하여 안전한 위치에 저장합니다.
    • GitHub Enterprise 이름
    • 엔터프라이즈의 조직 이름

Google SecOps용 AWS S3 버킷 및 ID 및 액세스 관리 구성

  1. 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
  2. 나중에 참조할 수 있도록 버킷 이름리전을 저장합니다(예: github-audit-logs).
  3. 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
  4. 생성된 사용자를 선택합니다.
  5. 보안용 사용자 인증 정보 탭을 선택합니다.
  6. 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
  7. 사용 사례서드 파티 서비스를 선택합니다.
  8. 다음을 클릭합니다.
  9. 선택사항: 설명 태그를 추가합니다.
  10. 액세스 키 만들기를 클릭합니다.
  11. .CSV 파일 다운로드를 클릭하여 나중에 사용할 수 있도록 액세스 키보안 비밀 액세스 키를 저장합니다.
  12. 완료를 클릭합니다.

GitHub S3 스트리밍의 IAM 정책 구성

  1. AWS 콘솔에서 IAM > 정책 > 정책 만들기 > JSON 탭으로 이동합니다.
  2. 다음 정책을 복사하여 붙여넣습니다.
  3. 정책 JSON (다른 버킷 이름을 입력한 경우 github-audit-logs 대체):

    {
    "Version": "2012-10-17",
    "Statement": [
        {
        "Sid": "AllowPutObjects",
        "Effect": "Allow",
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::github-audit-logs/*"
        }
    ]
    }
    
  4. 다음 > 정책 만들기를 클릭합니다.

  5. 정책 이름을 GitHubAuditStreamingPolicy로 지정하고 정책 만들기를 클릭합니다.

  6. 이전에 만든 IAM 사용자로 돌아갑니다.

  7. 권한 탭을 선택합니다.

  8. 권한 추가 > 정책 직접 연결을 클릭합니다.

  9. GitHubAuditStreamingPolicy을 검색하여 선택합니다.

  10. 다음 > 권한 추가를 클릭합니다.

GitHub Enterprise Cloud 감사 로그 스트리밍 구성

  1. 엔터프라이즈 소유자로 GitHub Enterprise Cloud에 로그인합니다.
  2. 프로필 사진을 클릭한 다음 엔터프라이즈 설정을 클릭합니다.
  3. 엔터프라이즈 계정 사이드바에서 설정 > 감사 로그 > 로그 스트리밍을 클릭합니다.
  4. 스트림 구성을 선택하고 Amazon S3를 클릭합니다.
  5. 인증에서 액세스 키를 클릭합니다.
  6. 다음 구성 세부정보를 제공합니다.
    • 리전: 버킷의 리전을 선택합니다 (예: us-east-1).
    • 버킷: 스트리밍할 버킷의 이름을 입력합니다 (예: github-audit-logs).
    • 액세스 키 ID: IAM 사용자의 액세스 키 ID를 입력합니다.
    • 보안 비밀 키: IAM 사용자의 보안 비밀 키를 입력합니다.
  7. 엔드포인트 확인을 클릭하여 GitHub가 Amazon S3 엔드포인트에 연결하고 쓸 수 있는지 확인합니다.
  8. 엔드포인트 인증이 완료되면 저장을 클릭합니다.

Google SecOps용 읽기 전용 IAM 사용자 및 키 만들기

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

    {
    "Version": "2012-10-17",
    "Statement": [
        {
        "Effect": "Allow",
        "Action": ["s3:GetObject"],
        "Resource": "arn:aws:s3:::github-audit-logs/*"
        },
        {
        "Effect": "Allow",
        "Action": ["s3:ListBucket"],
        "Resource": "arn:aws:s3:::github-audit-logs"
        }
    ]
    }
    
  7. 이름 = secops-reader-policy

  8. 정책 만들기 > 검색/선택 > 다음 > 권한 추가를 클릭합니다.

  9. secops-reader의 액세스 키를 만듭니다. 보안용 사용자 인증 정보 > 액세스 키 > 액세스 키 만들기 > .CSV 다운로드 (이 값을 피드에 붙여넣음)

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

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

이벤트 유형

다음 표에는 이벤트 유형과 이벤트 유형의 조건이 나와 있습니다.

event_type 조건
NETWORK_CONNECTION [has_target] == "true" && [has_principal] == "true"
PROCESS_LAUNCH [has_principal] == "true" && [has_target_process] == "true"
STATUS_UPDATE [has_principal] == "true"
USER_LOGIN [raw][message] =~ "Authentication success" or [message] =~ "Authentication success" && ([has_target]== "true" || [has_target_user] == "true")
USER_RESOURCE_CREATION [has_target_resource] == "true" && [has_principal_userid] == "true" && [action] in ["personal_access_token.create" ,"repository_vulnerability_alert.create"]
USER_RESOURCE_DELETION [has_target_resource] == "true" && [has_principal_user] == "true" && [action] in ["hook.destroy" ,"protected_branch.destroy" ,"public_key.delete"]
USER_RESOURCE_DELETION [has_target_resource] == "true" && [has_principal_userid] == "true" && [action] in [ "hook.destroy" ,"protected_branch.destroy" ,"public_key.delete"]
USER_RESOURCE_UPDATE_CONTENT [has_target_resource] == "true" && [has_principal_userid] == "true" && [action] in [ "pull_request.merge" , "hook.events_changed"]
USER_RESOURCE_UPDATE_PERMISSIONS [has_target_resource] == "true" && [has_principal_userid] == "true" && [action] in ["repo.update_actions_secret","protected_branch.update_pull_request_reviews_enforcement_level", "org.update_member" ,"protected_branch.update_admin_enforced" ,"protected_branch.update_required_status_checks_enforcement_level","org.integration_manager_removed" ,"repo.update_member", "repo.add_member"]
USER_UNCATEGORIZED [has_principal_userid] == "true"

UDM 매핑 테이블

로그 필드 UDM 매핑 비고
above_lock_quota additional.fields
above_warn_quota additional.fields
ac_ms additional.fields
accept additional.fields
action metadata.product_event_type JSON 로그의 경우
action security_result.summary syslog 로그의 경우
active target.resource.attribute.labels
active_job_id additional.fields
actor principal.user.userid
actor_id principal.user.attribute.labels.value
actor_ip principal.ip
actor_is_agent additional.fields
actor_is_bot principal.user.attribute.labels
actor_location.country_code principal.location.country_or_region
actor_session additional.fields
additional_list additional.fields
additional_string additional.fields
after additional.fields
alert_id security_result.detection_fields
alert_number security_result.detection_fields
alert_numbers additional.fields
allow_deletions_enforcement_level additional.fields
allow_force_pushes_enforcement_level additional.fields
allow_private_repository_forking additional.fields
application_name target.application
aqueduct_job_id additional.fields
auth_tries additional.fields
babeld additional.fields
banner additional.fields
before additional.fields
best_cipher additional.fields
best_kex additional.fields
best_mac additional.fields
best_sigtype additional.fields
Body security_result.description
branch target.resource.attribute.labels
branches target.resource.attribute.labels
business additional.fields
business_id additional.fields
cactive additional.fields
calling_workflow_refs target.resource.attribute.labels
calling_workflow_shas target.resource.attribute.labels
changes.body.from additional.fields
charset additional.fields
check_run.app additional.fields
check_run.app.events additional.fields
check_run.app.owner additional.fields
check_run.check_suite.app.client_id additional.fields
check_run.check_suite.app.created_at additional.fields
check_run.check_suite.app.description additional.fields
check_run.check_suite.app.events additional.fields
check_run.check_suite.app.external_url additional.fields
check_run.check_suite.app.html_url additional.fields
check_run.check_suite.app.id additional.fields
check_run.check_suite.app.name additional.fields
check_run.check_suite.app.node_id additional.fields
check_run.check_suite.app.slug additional.fields
check_run.check_suite.app.updated_at additional.fields
check_run.check_suite.conclusion additional.fields
check_run.check_suite.id additional.fields
check_run.check_suite.url additional.fields
check_run.completed_at additional.fields
check_run.conclusion additional.fields
check_run.output additional.fields
check_run.started_at additional.fields
check_suite (모든 하위 필드) additional.fields
check_suite.app (모든 하위 필드) additional.fields
check_suite.app.events additional.fields
check_suite.app.owner (모든 하위 필드) additional.fields
check_suite.head_commit (모든 하위 필드) additional.fields
cid additional.fields
cipher network.tls.cipher
client_id principal.user.attribute.labels
cloning additional.fields
code additional.fields
CodeNamespace additional.fields
comment (모든 하위 필드) additional.fields
comment.performed_via_github_app (모든 하위 필드) additional.fields
comment.performed_via_github_app.events additional.fields
comment.reactions (모든 하위 필드) additional.fields
commit.author principal.resource.attribute.labels
commit.commit.author.date additional.fields
commit.commit.author.email additional.fields
commit.commit.author.name additional.fields
commit.commit.tree.url additional.fields
commit.commit.verification additional.fields
commit.committer additional.fields
commit.parents additional.fields
commit.sha additional.fields
commit.url additional.fields
commit_oid additional.fields
committer_date additional.fields
completed_at vulns.vulnerabilities.scan_end_time
config.content_typt target.resource.attribute.labels
config.insecure_ssl target.resource.attribute.labels
config.secret target.resource.attribute.labels
config.url target.url
considers.site.admin additional.fields
content_type target.file.mime_type
cr additional.fields
create_protected additional.fields
created_at metadata.event_timestamp 값은 UNIX 밀리초에서 타임스탬프로 변환됩니다.
credential detection_fields
ctotal additional.fields
data._document_id metadata.product_log_id
data.active_job_id additional.fields
data.aqueduct_job_id additional.fields
data.business target.administrative_domain
data.business_id additional.fields
data.cancelled_at extensions.vulns.vulnerabilities.scan_end_time 값은 ISO8601 형식에서 타임스탬프로 변환됩니다.
data.category_type security_result.category_details
data.dn additional.fields
data.email target.user.email_addresses
data.entry_found additional.fields
data.event target.resource.attribute.labels
data.events security_result.about.labels.value
data.head_branch target.resource.attribute.labels
data.head_sha target.file.sha256
data.hook_id target.resource.product_object_id
data.job target.application
data.operation_type additional.fields
data.started_at extensions.vulns.vulnerabilities.scan_start_time 값은 ISO8601 형식에서 타임스탬프로 변환됩니다.
data.team target.group.group_display_name
data.trigger_id target.resource.attribute.labels
data.uid additional.fields
data.workflow_id target.resource.attribute.labels
data.workflow_run_id target.resource.attribute.labels
default_new_repo_branch additional.fields
default_repo_visibility additional.fields
default_repository_permission additional.fields
degraded additional.fields
dependency_scope additional.fields
deployment.environment additional.fields
disable_members_can_create_repositories additional.fields
disable_members_can_delete_repositories additional.fields
disable_user_org_creation additional.fields
disk_info additional.fields
disk_py_file additional.fields
dismiss_stale_reviews_on_push additional.fields
dotcom_contributions additional.fields
dotcom_user_license_usage_upload additional.fields
duration_ms additional.fields
ecosystem additional.fields
enforcement_level additional.fields
enterprise principal.resource.attribute.labels
enterprise.name additional.fields.value.string_value
environment_name target.resource.attribute.labels
error additional.fields
external_id additional.fields
external_identity_nameid target.user.email_addresses 값이 이메일 주소인 경우 target.user.email_addresses 배열에 추가됩니다.
external_identity_nameid target.user.userid
external_identity_username additional.fields target.user.user_display_name에 채워지지 않은 경우 additional.fields에 매핑됩니다.
external_identity_username target.user.user_display_name target.user.user_display_name에 채워지면 매핑됩니다.
features additional.fields
filtered additional.fields
filtered_request_body.query additional.fields
fluentbit_pod_name additional.fields
fp_sha256 additional.fields
frontend additional.fields
frontend_pid intermediary.process.pid
frontend_ppid intermediary.process.parent_process.pid
fs_host target.hostname
fsc_ms additional.fields
fully_qualified_domain_name additional.fields
gh.sdk.name additional.fields
gh.sdk.version additional.fields
gh.timerd.timer.name additional.fields
ghsa_id additional.fields
git.maxobjectsize additional.fields
git_dir_safe target.resource.attribute.labels
github_event_after target.resource.attribute.labels
github_event_before target.resource.attribute.labels
github_event_compare target.resource.attribute.labels
github_event_created target.resource.attribute.labels
github_event_deleted target.resource.attribute.labels
github_event_forced target.resource.attribute.labels
github_event_head_commit_author_email target.resource.attribute.labels
github_event_head_commit_author_name target.resource.attribute.labels
github_event_head_commit_author_username target.resource.attribute.labels
github_event_head_commit_committer_email target.resource.attribute.labels
github_event_head_commit_committer_name target.resource.attribute.labels
github_event_head_commit_committer_username target.resource.attribute.labels
github_event_head_commit_distinct target.resource.attribute.labels
github_event_head_commit_msg1 target.resource.attribute.labels
github_event_head_commit_timestamp target.resource.attribute.labels
github_event_pusher_email target.resource.attribute.labels
github_event_pusher_name target.resource.attribute.labels
github_event_ref target.resource.attribute.labels
github_event_repository_has_projects target.resource.attributes.labels
github_event_repository_master_branch target.resource.attribute.labels
github_event_repository_organization target.resource.attribute.labels
github_event_repository_owner_name target.resource.attribute.labels
github_event_repository_stargazers target.resource.attribute.labels
github_event_workflow_job_completed_at target.resource.attributes.labels
gpv additional.fields
handler_code additional.fields
hashed_token network.session_id
head_branch target.resource.attribute.labels
head_sha target.file.sha256
healthy additional.fields
hmac additional.fields
hook_id target.resource.attribute.labels
host.name principal.user.attribute.labels
http_version network.application_protocol_version
id metadata.product_log_id
ignore_approvals_from_contributors additional.fields
imode additional.fields
imperfect additional.fields
InstrumentationScope additional.fields
integration_id additional.fields
intel.flat additional.fields
is_hosted_runner target.resource.attribute.labels
issue (모든 하위 필드) additional.fields
issue.pull_request (모든 하위 필드) additional.fields
job_name target.resource.attribute.labels.value
job_workflow_ref target.resource.attribute.labels.value
job_workflow_sha target.resource.attribute.labels.value
kafka_cluster additional.fields
kex additional.fields
keytype additional.fields
kubernetes.container_image principal.resource.attribute.labels
kubernetes.container_name principal.resource.attribute.labels
kubernetes.host principal.resource.attribute.labels
kubernetes.labels.app principal.resource.attribute.labels
kubernetes.labels.chart principal.resource.attribute.labels
kubernetes.labels.component principal.resource.attribute.labels
kubernetes.labels.heritage principal.resource.attribute.labels
kubernetes.labels.pod-template-hash principal.resource.attribute.labels
kubernetes.labels.release principal.resource.attribute.labels
kubernetes.labels.system principal.resource.attribute.labels
kubernetes.namespace_name principal.resource.attribute.labels
kubernetes.pod_ip principal.ip,
principal.asset.ip
kubernetes.pod_name principal.resource.attribute.labels
last_state_change_at additional.fields
last_state_change_reason additional.fields
lat principal.location.region_coordinates.latitude
ldap.debug_logging_enabled additional.fields
level security_result.severity
lfs_auth_scope additional.fields
lfs_deploy_key_header additional.fields
lfs_verify_reason additional.fields
linear_history_requirement_enforcement_level additional.fields
lock_allows_fetch_and_merge additional.fields
lock_branch_enforcement_level additional.fields
log_level security_result.severity
log_source additional.fields
log_source_file target.file.full_path
logData.Count additional.fields
logData.Metrics.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
logType additional.fields
lon principal.location.region_coordinates.longitude
loop additional.fields
matched_policies security_result.detection_fields
member target.user.attribute.labels
merge_queue_enforcement_level additional.fields
method additional.fields
multi_repo security_result.detection_fields
mysql_component additional.fields
mysql_warning_code additional.fields
name target.resource.attribute.labels
non_integer_id additional.fields
ns additional.fields
number additional.fields
oauth_application principal.application
oauth_application_id principal.resource.attribute.labels
oauth_party additional.fields
offset additional.fields
old_permissions additional.fields
old_repo_permissions additional.fields
org target.administrative_domain
org_id additional.fields.value.string_value
organization.url additional.fields
original_user_agent additional.fields
overridden_codes additional.fields
owner principal.user.user_display_name
owner_id principal.user.userid
package additional.fields
package_name target.application
parent additional.fields
parent_installation_id additional.fields
partition additional.fields
path_info additional.fields 경로가 이미 target.file.full_path에 매핑된 경우의 매핑입니다.
path_info target.file.full_path 경로가 아직 target.file.full_path에 매핑되지 않은 경우의 매핑입니다.
pgroup additional.fields
pk_ms additional.fields
prin_ip principal.ip,
principal.asset.ip
prin_port principal.port
prin_usr principal.user.userid
pro_pid target.process.pid
probe_fail additional.fields
probe_ok additional.fields
programmatic_access_type additional.fields.value.string_value
pubkey_creator_id additional.fields
pubkey_creator_login additional.fields
pubkey_fingerprint additional.fields
pubkey_id additional.fields
pubkey_verifier_id additional.fields
pubkey_verifier_login additional.fields
public_repo additional.fields.value.string_value
public_repo target.location.name
publicly_leaked security_result.detection_fields
pull_request.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request._links.comments.href additional.fields
pull_request._links.commits.href additional.fields
pull_request._links.html.href additional.fields
pull_request._links.issue.href additional.fields
pull_request._links.review_comment.href additional.fields
pull_request._links.review_comments.href additional.fields
pull_request._links.self.href additional.fields
pull_request._links.statuses.href additional.fields
pull_request.base.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.base.repo.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.base.repo.owner.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.head.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.head.owner.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.head.repo.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.head.user.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.requested_reviewers.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.requested_teams.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
pull_request.user. (login을 제외한 모든 하위 필드) principal.user.attribute.labels
pull_request.user.login principal.user.user_display_name
pull_request_id target.resource.attribute.labels
pull_request_title target.resource.attribute.labels
query_string additional.fields.value.string_value
queue_duration additional.fields
quotas_enabled additional.fields
rate_limit additional.fields
rate_limit_family additional.fields
rate_limit_key additional.fields
rate_limit_remaining additional.fields.value.string_value
rate_limit_reset additional.fields
rate_limit_used additional.fields
raw.at additional.fields
raw.hashed_token network.session_id
raw.token_type additional.fields
raw.url target.url
raw.user_agent network.http.user_agent,
network.http.parsed_user_agent
raw_login additional.fields
read_only additional.fields
readonly additional.fields
reasons additional.fields
ref target.resource.attribute.labels
replicas additional.fields
repo target.resource.name
repo_id additional.fields.value.string_value
repo_owner_login target.resource.attribute.labels
repo_owner_type target.resource.attribute.labels
repo_public additional.fields
repository target.resource.attribute.labels
repository.archive_url target.resource.attribute.labels
repository.assignees_url target.resource.attribute.labels
repository.blobs_url target.resource.attribute.labels
repository.branches_url target.resource.attribute.labels
repository.clone_url target.resource.attribute.labels
repository.collaborators_url target.resource.attribute.labels
repository.comments_url target.resource.attribute.labels
repository.commits_url target.resource.attribute.labels
repository.compare_url target.resource.attribute.labels
repository.contents_url target.resource.attribute.labels
repository.contributors_url target.resource.attribute.labels
repository.created_at target.resource.attribute.labels
repository.custom_properties. (및 모든 하위 필드) target.resource.attribute.labels
repository.deployments_url target.resource.attribute.labels
repository.downloads_url target.resource.attribute.labels
repository.events_url target.resource.attribute.labels
repository.fork target.resource.attribute.labels
repository.forks_url target.resource.attribute.labels
repository.full_name target.resource.attribute.labels
repository.git_commits_url target.resource.attribute.labels
repository.git_refs_url target.resource.attribute.labels
repository.git_tags_url target.resource.attribute.labels
repository.git_url target.resource.attribute.labels
repository.homepage target.resource.attributes.labels
repository.hooks_url target.resource.attribute.labels
repository.html_url target.resource.attribute.labels
repository.id target.resource.attribute.labels
repository.issue_comment_url target.resource.attribute.labels
repository.issue_events_url target.resource.attribute.labels
repository.issues_url target.resource.attribute.labels
repository.keys_url target.resource.attribute.labels
repository.labels_url target.resource.attribute.labels
repository.languages_url target.resource.attribute.labels
repository.license target.resource.attributes.labels
repository.merges_url target.resource.attribute.labels
repository.milestones_url target.resource.attribute.labels
repository.mirror_url target.resource.attributes.labels
repository.name target.resource.attribute.labels
repository.node_id target.resource.attribute.labels
repository.notifications_url target.resource.attribute.labels
repository.open_issues_count target.resource.attribute.labels
repository.owner.avatar_url target.resource.attribute.labels
repository.owner.events_url target.resource.attribute.labels
repository.owner.followers_url target.resource.attribute.labels
repository.owner.following_url target.resource.attribute.labels
repository.owner.gists_url target.resource.attribute.labels
repository.owner.gravatar_id target.resource.attribute.labels
repository.owner.html_url target.resource.attribute.labels
repository.owner.id target.resource.attribute.labels
repository.owner.node_id target.resource.attribute.labels
repository.owner.organizations_url target.resource.attribute.labels
repository.owner.received_events_url target.resource.attribute.labels
repository.owner.repos_url target.resource.attribute.labels
repository.owner.site_admin target.resource.attribute.labels
repository.owner.starred_url target.resource.attribute.labels
repository.owner.subscriptions_url target.resource.attribute.labels
repository.owner.type target.resource.attribute.labels
repository.owner.url target.resource.attribute.labels
repository.owner.user_view_type target.resource.attribute.labels
repository.private target.resource.attribute.labels
repository.pulls_url target.resource.attribute.labels
repository.pushed_at target.resource.attribute.labels
repository.releases_url target.resource.attribute.labels
repository.size target.resource.attribute.labels
repository.ssh_url target.resource.attribute.labels
repository.stargazers_url target.resource.attribute.labels
repository.statuses_url target.resource.attribute.labels
repository.subscribers_url target.resource.attribute.labels
repository.subscription_url target.resource.attribute.labels
repository.svn_url target.resource.attribute.labels
repository.tags_url target.resource.attribute.labels
repository.teams_url target.resource.attribute.labels
repository.topics target.resource.attributes.labels
repository.trees_url target.resource.attribute.labels
repository.updated_at target.resource.attribute.labels
repository.url target.resource.attribute.labels
repository.visibility target.resource.attribute.labels
repository_public target.resource.attribute.labels
req_content_type target.file.mime_type
request_access_security_header security_result.detection_fields
request_auth additional.fields
request_body additional.fields.value.string_value
request_duration additional.fields
request_host principal.ip,
principal.asset.ip
IP 주소가 있는 경우 매핑은 principal.ip로 이루어집니다 (principal.hostname의 기존 매핑 유지).
request_method network.http.method 값이 대문자로 변환됩니다.
requested_reviewers.* additional.fields 별표 (*)는 모든 하위 필드가 포함됨을 나타냅니다.
require_code_owner_review additional.fields
require_last_push_approval additional.fields
required_approving_review_count additional.fields
required_deployments_enforcement_level additional.fields
required_review_thread_resolution_enforcement_level additional.fields
rerun_type additional.fields
res_type target.resource.resource_subtype
response_time additional.fields
review_id target.resource.attributes.labels
route additional.fields.value.string_value
rpc.jsonrpc.error_code network.http.response_code
rpc.jsonrpc.error_message security_result.summary
rule_suite_id security_result.rule_id
run_attempt additional.fields
run_number additional.fields
runner_labels target.resource.attribute.labels
runner_owner_type target.resource.attribute.labels
runner_tenant_id target.resource.attribute.labels
s3_tag additional.fields
secret_type security_result.detection_fields
secret_types security_result.detection_fields
secrets_passed security_result.detection_fields
sender.id src.user.product_object_id
sender.login src.user.user_display_name
sender.node_id src.asset_id
sender.type src.user.title
sender.url src.url
service target.resource.name
service.version additional.fields
serviceName target.resource.name
severity (높은 경우) security_result.severity
SeverityText security_result.severity
shallow additional.fields
sign_in_verification_method security_result.detection_fields
signature_requirement_enforcement_level additional.fields
sigtype additional.fields
source src.resource.name
spec additional.fields
sr additional.fields
ss additional.fields
started_at vulns.vulnerabilities.scan_start_time
stateless additional.fields
status_code network.http.response_code
strict_required_status_checks_policy additional.fields
subject.business.id target.resource.attribute.labels
subject.owner.id additional.fields
subject.owning_organization.id principal.group.product_object_id
subject.repository.id target.resource.product_object_id
subject.repository.internal target.resource.attribute.labels
subject.repository.owner.id additional.fields
subject.repository.public target.resource.attribute.labels
subject.repository.writable target.resource.attribute.labels
subject.type target.resource.attribute.labels
synthetic_status additional.fields
tar_application target.application
telemetry.sdk.name additional.fields
tenant_id target.resource.attribute.labels
tid additional.fields
time metadata.event_timestamp
time_duration_ms additional.fields
time_zone additional.fields
timestamp metadata.event_timestamp
tls_version network.tls.version
token_id additional.fields.value.string_value
token_scopes additional.fields.value.string_value
topic additional.fields
total additional.fields
transport_protocol additional.fields
transport_protocol_name network.application_protocol 값이 대문자로 변환됩니다.
ts metadata.event_timestamp process_typegithub_production인 경우:
TTY additional.fields
twirp_method additional.fields
twirp_package additional.fields
twirp_service additional.fields
twirp_status network.http.response_code
two_factor_type security_result.detection_fields
type additional.fields
unavailable additional.fields
updated_at metadata.collected_timestamp
url_path target.url
usage_metrics additional.fields
user target.user.userid
user.id target.user.attr.labels actor.id이 있는 경우
user.id target.user.userid actor.id가 없는 경우
user_agent network.http.parsed_user_agent 값이 파싱됩니다.
user_agent network.http.user_agent
user_id target.user.userid
user_operator_mode additional.fields
user_programmatic_access_id additional.fields
user_renaming_enabled additional.fields
user_spammy additional.fields
version metadata.product_version 이 매핑에는 JSON 로그가 포함됩니다.
visibility additional.fields
vk_ms additional.fields
vulnerability_id additional.fields
vulnerable_version_range_id additional.fields
workflow target.resource.attributes.labels
workflow.name target.resource.attribute.labels
workflow_id target.resource.attribute.labels
workflow_job.head_branch security_result.detection_fields
workflow_job.name target.resource.attributes.labels
workflow_job.workflow_name security_result.detection_fields
workflow_run.actor. (모든 하위 필드에 포함된 login 필드를 제외한 모든 하위 필드) principal.user.attribute.labels
workflow_run.actor.login principal.user.userid
workflow_run.artifacts_url target.resource.attributes.labels
workflow_run.cancel_url target.resource.attributes.labels
workflow_run.check_suite_id additional.fields
workflow_run.check_suite_node_id additional.fields
workflow_run.check_suite_url target.resource.attributes.labels
workflow_run.conclusion target.resource.attribute.labels
workflow_run.created_at metadata.event_timestamp
workflow_run.display_title target.resource.attribute.labels
workflow_run.event additional.fields.value.string_value
workflow_run.event target.resource.attribute.labels
workflow_run.head_branch target.resource.attribute.labels
workflow_run.head_commit target.resource.attributes.labels
workflow_run.head_repository additional.fields
workflow_run.head_sha target.file.sha256
workflow_run.html_url target.resource.attribute.labels
workflow_run.id target.resource.attribute.labels.value
workflow_run.jobs_url target.resource.attributes.labels
workflow_run.logs_url target.resource.attributes.labels
workflow_run.name target.resource.name
workflow_run.node_id target.resource.product_object_id
workflow_run.path target.resource.attribute.labels
workflow_run.previous_attempt_url target.resource.attributes.labels
workflow_run.pull_requests about.resource.attribute.labels
workflow_run.repository additional.fields
workflow_run.rerun_url target.resource.attributes.labels
workflow_run.run_attempt target.resource.attribute.labels
workflow_run.run_number target.resource.attribute.labels
workflow_run.run_started_at target.resource.attribute.labels
workflow_run.status security_result.description
workflow_run.triggering_actor additional.fields
workflow_run.updated_at metadata.collected_timestamp
workflow_run.url target.url
workflow_run.workflow_id security_result.about.labels.value
workflow_run.workflow_id target.resource.attribute.labels
workflow_run.workflow_url target.resource.attributes.labels

출시 델타 참조

2026년 1월 8일 Google SecOps에서 중요한 변경사항이 포함된 새로운 버전의 GitHub 파서를 출시했습니다.

로그 필드 매핑 델타

다음 표에는 2026년 1월 8일 이전에 노출된 GitHub 로그-UDM 필드와 그 이후의 매핑 델타가 나와 있습니다 (각각 이전 매핑현재 매핑 열에 나열됨).

로그 필드 이전 매핑 현재 매핑
action (JSON 로그용) metadata.product_event_type, security_result.summary,security_result.detection_fields metadata.product_event_type
action (syslog 로그용) additional.fields, security_result.summary security_result.summary
business additional.fields, target.user.company_name additional.fields
business_id target.resource.attribute.labels additional.fields
data.email target.email target.user.email_addresses
data.event security_result.about.labels target.resource.attribute.labels
data.head_branch security_result.about.labels target.resource.attribute.labels
data.hook_id target.resource.attribute.labels target.resource.product_object_id
data.team target.user.group_identifiers target.group.group_display_name
data.trigger_id security_result.about.labels target.resource.attribute.labels
data.workflow_id security_result.about.labels target.resource.attribute.labels
data.workflow_run_id security_result.about.labels target.resource.attribute.labels
hashed_token additional.fields network.session_id
hook_id (JSON 로그용) additional.fields target.resource.attribute.labels
name additional.fields target.resource.attribute.labels
oauth_application_id additional.fields principal.resource.attribute.labels
pull_request_id additional.fields target.resource.attribute.labels
pull_request_title additional.fields target.resource.attribute.labels
repository.archive_url additional.fields target.resource.attribute.labels
repository.assignees_url additional.fields target.resource.attribute.labels
repository.blobs_url additional.fields target.resource.attribute.labels
repository.branches_url additional.fields target.resource.attribute.labels
repository.clone_url additional.fields target.resource.attribute.labels
repository.collaborators_url additional.fields target.resource.attribute.labels
repository.comments_url additional.fields target.resource.attribute.labels
repository.commits_url additional.fields target.resource.attribute.labels
repository.compare_url additional.fields target.resource.attribute.labels
repository.contents_url additional.fields target.resource.attribute.labels
repository.contributors_url additional.fields target.resource.attribute.labels
repository.created_at additional.fields target.resource.attribute.labels
repository.deployments_url additional.fields target.resource.attribute.labels
repository.downloads_url additional.fields target.resource.attribute.labels
repository.events_url additional.fields target.resource.attribute.labels
repository.fork additional.fields target.resource.attribute.labels
repository.forks_url additional.fields target.resource.attribute.labels
repository.full_name additional.fields target.resource.attribute.labels
repository.git_commits_url additional.fields target.resource.attribute.labels
repository.git_refs_url additional.fields target.resource.attribute.labels
repository.git_tags_url additional.fields target.resource.attribute.labels
repository.git_url additional.fields target.resource.attribute.labels
repository.hooks_url additional.fields target.resource.attribute.labels
repository.html_url additional.fields target.resource.attribute.labels
repository.id additional target.resource.attribute.labels
repository.issue_comment_url additional.fields target.resource.attribute.labels
repository.issue_events_url additional.fields target.resource.attribute.labels
repository.issues_url additional.fields target.resource.attribute.labels
repository.keys_url additional.fields target.resource.attribute.labels
repository.labels_url additional.fields target.resource.attribute.labels
repository.languages_url additional.fields target.resource.attribute.labels
repository.merges_url additional.fields target.resource.attribute.labels
repository.milestones_url additional.fields target.resource.attribute.labels
repository.name additional.fields target.resource.attribute.labels
repository.node_id additional.fields target.resource.attribute.labels
repository.notifications_url additional.fields target.resource.attribute.labels
repository.owner.avatar_url additional.fields target.resource.attribute.labels
repository.owner.events_url additional.fields target.resource.attribute.labels
repository.owner.followers_url additional.fields target.resource.attribute.labels
repository.owner.following_url additional.fields target.resource.attribute.labels
repository.owner.gists_url additional.fields target.resource.attribute.labels
repository.owner.gravatar_id additional.fields target.resource.attribute.labels
repository.owner.html_url additional.fields target.resource.attribute.labels
repository.owner.id additional.fields target.resource.attribute.labels
repository.owner.node_id additional.fields target.resource.attribute.labels
repository.owner.organizations_url additional.fields target.resource.attribute.labels
repository.owner.received_events_url additional.fields target.resource.attribute.labels
repository.owner.repos_url additional.fields target.resource.attribute.labels
repository.owner.site_admin additional.fields target.resource.attribute.labels
repository.owner.starred_url additional.fields target.resource.attribute.labels
repository.owner.subscriptions_url additional.fields target.resource.attribute.labels
repository.owner.type additional.fields target.resource.attribute.labels
repository.owner.url additional.fields target.resource.attribute.labels
repository.owner.user_view_type additional.fields target.resource.attribute.labels
repository.private additional.fields target.resource.attribute.labels
repository.pulls_url additional.fields target.resource.attribute.labels
repository.pushed_at additional.fields target.resource.attribute.labels
repository.releases_url additional.fields target.resource.attribute.labels
repository.size additional.fields target.resource.attribute.labels
repository.ssh_url additional.fields target.resource.attribute.labels
repository.stargazers_url additional.fields target.resource.attribute.labels
repository.statuses_url additional.fields target.resource.attribute.labels
repository.subscribers_url additional.fields target.resource.attribute.labels
repository.subscription_url additional.fields target.resource.attribute.labels
repository.svn_url additional.fields target.resource.attribute.labels
repository.tags_url additional.fields target.resource.attribute.labels
repository.teams_url additional.fields target.resource.attribute.labels
repository.trees_url additional.fields target.resource.attribute.labels
repository.updated_at additional.fields target.resource.attribute.labels
repository.url additional.fields target.resource.attribute.labels
repository.visibility additional.fields target.resource.attribute.labels
repository_public additional.fields target.resource.attribute.labels
res_type target.resource.type target.resource.resource_subtype
sender.id src.user.product_object_id, additional.fields src.user.product_object_id
sender.login additional.fields, src.user.user_display_name src.user.user_display_name
sender.node_id src.asset_id, additional.fields src.asset_id
sender.type src.user.title, additional.fields src.user.title
sender.url src.url, additional.fields src.url
workflow.name security_result.about.labels target.resource.attribute.labels
workflow_job.head_branch security_result.about.labels security_result.detection_fields
workflow_job.workflow_name security_result.about.labels security_result.detection_fields
workflow_run.event additional.fields target.resource.attribute.labels
workflow_run.head_branch security_result.about.labels target.resource.attribute.labels
workflow_run.workflow_id security_result.about.labels target.resource.attribute.labels

이벤트 유형 조건 델타

2026년 1월 8일 출시에서 Google SecOps 이벤트 유형을 결정하는 조건이 변경되었습니다.

다음 표에는 이벤트 유형과 현재 조건이 나와 있습니다 (2026년 1월 8일 출시 전에는 조건이 달랐음).

event_type 조건
NETWORK_CONNECTION [has_target] == "true" && [has_principal] == "true"
STATUS_UPDATE [has_principal] == "true"
USER_RESOURCE_DELETION [has_target_resource] == "true" && [has_principal_user] == "true" && [action] in ["hook.destroy" ,"protected_branch.destroy" ,"public_key.delete"]
USER_RESOURCE_UPDATE_CONTENT [has_target_resource] == "true" && [has_principal_userid] == "true" && [action] in [ "pull_request.merge" , "hook.events_changed"]
USER_RESOURCE_UPDATE_PERMISSIONS [has_target_resource] == "true" && [has_principal_userid] == "true" && [action] in ["repo.update_actions_secret","protected_branch.update_pull_request_reviews_enforcement_level", "org.update_member" ,"protected_branch.update_admin_enforced" ,"protected_branch.update_required_status_checks_enforcement_level","org.integration_manager_removed" ,"repo.update_member", "repo.add_member"]

키 매핑 델타

다음 표에는 2026년 1월 8일 이전에 노출된 원시 로그 필드의 키와 그 이후에 노출된 UDM 필드의 키 간의 매핑 델타가 나와 있습니다 (각각 이전 키현재 키 열에 나열됨).

원시 로그의 키 기존 키 현재 키
alert.secret_type_display_name secret_type_display_name alert_secret_type_display_name
enterprise.name Enterprise Name enterprise_name
hook_id Hook Id Hook_Id
invitation.failed_at failed_at invitation_failed_at
invitation.failed_reason failed_reason invitation_failed_reason
invitation.invitation_source invitation_source invitation_invitation_source
raw.failure_reason failure_reason raw_failure_reason
raw.failure_type failure_type raw_failure_type
raw.from from raw_from
workflow_run.event event workflow_run_event
workflow_run.head_branch Head Branch Head_Branch
workflow_run.id workflow_run_id workflow_Run_id
workflow_run.workflow_id Workflow Id Workflow_Id

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