ghaudit

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 21, 2022 License: Apache-2.0 Imports: 2 Imported by: 0

README

ghaudit

CLI audit tool for GitHub organization with OPA/Rego.

Features

  • Crawls GitHub repository meta data of your organization
  • Evaluates the meta data with policy written by Rego or inquiry to OPA server
  • Exit with non-zero when detecting violation and notify the violation to Slack

Setup

1) Create a new GitHub App
  1. Go to https://github.com/organizations/{your_org_name}/settings/apps and click New GitHub App
  2. Input required fields and grant following permissions. Then click Create GitHub App
    • Repository permissions
      • Administration: Read-only
      • Content: Read-only
      • Webhooks: Read-only
  3. Create key by clicking Generate a private key and save it.
  4. Move Install App page from left side bar and click Install button of the organization you want to install

Please note the following items

2) Creating policy by Rego
Policy rules
Policy example
package github.repo

fail[res] {
    user := input.collaborators[_]
    true == [
        user.permissions.maintain,
        user.permissions.admin,
    ][_]

    res = {
        "category": "Collaborator must not have permissions of maintain and admin",
        "message": sprintf("%s has maintain:%v admin:%v", [user.login, user.permissions.maintain, user.permissions.admin]),
    }
}
3) [Optional] Retrieve webhook URL of Slack

ghaudit can notify a detected violation via Slack by incoming webhook. Setup incoming webhook according to https://api.slack.com/messaging/webhooks if you want.

Run ghaudit

$ export GHAUDIT_APP_ID=000000
$ export GHAUDIT_INSTALL_ID=0000000
$ export GHAUDIT_PRIVATE_KEY_FILE=xxxxxx.2022-02-18.private-key.pem
$ export GHAUDIT_SLACK_WEBHOOK=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
$ ghaudit -o [your_org_name] -p ./policy
Options
Required
  • --app-id (GHAUDIT_APP_ID): GitHub App ID
  • --install-id (GHAUDIT_INSTALL_ID): GitHub App install ID
  • GitHub App private key: Choose either one of following:
    • --private-key-file (GHAUDIT_PRIVATE_KEY_FILE): Key file path
    • --private-key-data (GHAUDIT_PRIVATE_KEY_DATA): Key data
  • Audit policy: Choose either one of following:
    • Use local Rego file(s)
      • --policy, -p: Rego policy directory. Scan .rego file recursively
      • --package: Package name of policy. Default is github.repo
    • Use OPA server
      • --server, -s: OPA server URL
      • --header, -H: HTTP header of inquiry request to OPA server
  • --dump: Specify directory to dump retrieved data from GitHub
  • --load: Specify directory to load retrieved data from GitHub
Optional
  • --format, -f: Choose text or json.
  • --output, -o: Output file. - means stdout.
  • --slack-webhook (GHAUDIT_SLACK_WEBHOOK): Slack incoming webhook URL.
  • --fail: Exit with non-zero when detecting violation
  • --thread: Specify number of thread to retrieve repository meta data
  • --limit: Specify limit number of auditing repository

License

Apache License 2.0

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL