Github Audit Logs

GitHub Audit Logs provide a detailed record of actions and events within a GitHub organization or repository. These logs capture information such as user logins, repository changes (e.g., pushes, merges, deletions), permission modifications, and security settings updates. They help administrators track user activity, ensure security compliance, and audit changes for troubleshooting and incident investigation.

Ingest Methods

Github audit logs can be ingested using two separate methods, streaming audit logs where Github will push your logs to a cloud storage account to be ingested by RunReveal, and API polling where RunReveal will use an access token to poll your Github organization for new audit logs every 60 seconds.

Log Streaming

Resource Setup

If you plan to use audit log streaming you will need to setup the necessary resources and permissions for RunReveal to get access.

If using an AWS S3 bucket use the following SNS topic ARN to send your bucket notifications.

arn:aws:sns:<REGION>:253602268883:runreveal_github

Github Setup

Once the resources and permissions are set for RunReveal you will need to setup Github to send logs to your bucket.

Follow the steps provided in the GitHub documentation to setup streaming for the cloud provider that you are using.

API Polling

When setting up API polling RunReveal will only need two items, the name of the organization that we should be polling audit logs for, and an API token to access your account.

API Token

To generate an API token navigate to the Personal access tokens (classic) page in your GitHub account and click on Generate new token, or follow this link https://github.com/settings/tokens/new

Make sure you are under your personal account settings and are logged in with a user that has access to your organizations audit logs. When creating a new token make sure its a classic type. The required permissions are not available for fine grained tokens yet.

Give the token a description and select an expiration for it. When selecting the scopes the only required scope is the read:audit_log.

RunReveal Source Setup

Once all of the other setup steps have been completed you can now log into RunReveal and create the Github source.

Select the ingest method that you are using and fill in the details for your setup.

Schema

The following columns are exposed for this source. RunReveal applies schema normalization across all sources, ensuring uniform field names and data types for cross-source queries and reusable detection logic.

Table: github_logs (75 columns)

ColumnType
timestampUnknown
document_idUnknown
actionUnknown
created_atUnknown
operation_typeUnknown
actor_idUnknown
actor_is_botUnknown
actor_country_codeUnknown
orgUnknown
org_idUnknown
businessUnknown
business_idUnknown
repoUnknown
repo_idUnknown
repositoryUnknown
repository_idUnknown
repository_publicUnknown
public_repoUnknown
visibilityUnknown
userUnknown
user_idUnknown
user_agentUnknown
hashed_tokenUnknown
token_idUnknown
token_scopesUnknown
programmatic_access_typeUnknown
external_identity_nameidUnknown
external_identity_usernameUnknown
issuerUnknown
pull_request_idUnknown
pull_request_titleUnknown
pull_request_urlUnknown
review_idUnknown
workflow_idUnknown
workflow_run_idUnknown
eventUnknown
trigger_idUnknown
run_numberUnknown
ColumnType
run_attemptUnknown
nameUnknown
started_atUnknown
completed_atUnknown
conclusionUnknown
head_branchUnknown
head_shaUnknown
topicUnknown
is_hosted_runnerUnknown
runner_idUnknown
runner_nameUnknown
runner_group_idUnknown
runner_group_nameUnknown
runner_owner_typeUnknown
job_nameUnknown
job_workflow_refUnknown
runner_labelsUnknown
secrets_passedUnknown
environment_nameUnknown
before_shaUnknown
after_shaUnknown
branchUnknown
overridden_codesUnknown
reasonsUnknown
application_nameUnknown
integrationUnknown
oauth_application_idUnknown
request_methodUnknown
routeUnknown
url_pathUnknown
query_stringUnknown
request_bodyUnknown
status_codeUnknown
rate_limit_remainingUnknown
request_access_security_headerUnknown
transport_protocolUnknown
transport_protocol_nameUnknown