Overview of GitHub Secret Scanning API
- GitHub Secret Scanning is designed to detect tokens and credentials that might have been accidentally committed into repositories.
- The API provides automated scans for repository content to identify known secret formats, alerting users so they can rotate keys and revoke any compromised credentials.
Prerequisites for Using the API
- Ensure that your GitHub account has the necessary permissions to access the repositories you desire to scan. Specifically, you must have `security events` permission for both organization and personal repositories.
- Generate a Personal Access Token (PAT) with the `repo` and `admin:repo_hook` scopes at minimum, as these are essential for using the Secret Scanning API.
Configure Your Environment for API Access
Make API Calls to Scan Repositories
- Use the GitHub REST API to access secret scanning alerts. To retrieve alerts for a specific repository, make a GET request to:
```shell
curl -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/:owner/:repo/secret-scanning/alerts
```
Replace :owner
and :repo
with appropriate values.
- To check all alerts across an organization, replace the repository path with the organization path:
```shell
curl -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/orgs/:org/secret-scanning/alerts
```
Here, :org
is the name of the organization.
Processing and Responding to Alerts
- Upon retrieving alerts, analyze the JSON response to identify sensitive information and determine which alerts require immediate action.
- Mark alerts as "resolved" or "dismissed" when appropriate by making PATCH requests to the alert's URL, including a JSON body specifying the state change:
```shell
curl -X PATCH \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"state":"resolved"}' \
https://api.github.com/repos/:owner/:repo/secret-scanning/alerts/:alert\_number
```
Adjust the :alert_number
to the specific alert you are handling.
Automate Secret Scanning
- Consider setting up a cron job or GitHub Actions workflow to periodically run secret scanning API calls, ensuring repositories are continually monitored for new leaks.
- Utilize GitHub webhooks to receive real-time notifications of new secret scanning alerts, allowing for quicker incident response times.
Security Best Practices
- Always rotate and revoke compromised secrets promptly, following detected incidents through the API.
- Limit the permissions of your GitHub PAT and use scoped tokens wherever possible to follow the principle of least privilege.