- Overview
- Prerequisites
- Adding the Action to Your Workflow
- Action Configuration
- Action Outputs
- Developer & Contribution Guide
- License & Support
- Acknowledgements
This GitHub Action automates the integration of AquaSec security scan results into your repository's Security tab. It retrieves scan findings via the AquaSec API, converts them to SARIF format, and makes them available for upload to GitHub's Code Scanning feature. This provides developers with immediate visibility into security vulnerabilities within their familiar GitHub workflow, eliminating the need to log in into AquaSec platform.
To run this action successfully, make sure your environment meets the following requirements:
- Python 3.14
- AquaSec API credentials (Key and Secret)
- AquaSec Group ID for authentication
- AquaSec Repository ID (UUID format) for the target scan results
Create a workflow file (e.g., .github/workflows/aquasec-night-scan.yml) to run daily:
name: AquaSec Night Scan
on:
schedule:
- cron: '23 2 * * *' # Runs at 02:23 UTC daily (modify as needed)
workflow_dispatch:
concurrency:
group: aquasec-security-night-scan-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
security-events: write
jobs:
aquasec-night-scan:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v8e8c483db84b4bee98b60c0593521ed34d9990e8
with:
persist-credentials: false
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548
with:
python-version: '3.14'
- name: Fetch AquaSec Scan Results
id: aquasec
uses: AbsaOSS/aquasec-scan-results@v0.1.0
with:
aqua-key: ${{ secrets.AQUA_KEY }}
aqua-secret: ${{ secrets.AQUA_SECRET }}
group-id: ${{ secrets.AQUA_GROUP_ID }}
repository-id: ${{ secrets.AQUA_REPOSITORY_ID }}
verbose-logging: 'false'
- name: Upload Scan Results to GitHub Security
uses: github/codeql-action/upload-sarif@v4e94bd11f71e507f7f87df81788dff88d1dacbfb
with:
sarif_file: ${{ steps.aquasec.outputs.aquasec-sarif-file }}
category: aquasecFor AbsaOSS / absa-group Organization:
AQUA_KEYandAQUA_SECRETare stored as organization secrets and automatically available to all repositories.- You only need to configure
AQUA_GROUP_IDandAQUA_REPOSITORY_IDas repository secrets.
For Other Organizations:
- Store all four credentials (
AQUA_KEY,AQUA_SECRET,AQUA_GROUP_ID,AQUA_REPOSITORY_ID) as GitHub repository secrets. - Contact your AquaSec administrator if you don't have API credentials (
AQUA_KEY,AQUA_SECRET).
The action requires the following inputs:
| Name | Description | Required | Default |
|---|---|---|---|
aqua-key |
AquaSec API Key credential | Yes | - |
aqua-secret |
AquaSec API Secret credential | Yes | - |
group-id |
AquaSec Group ID for authentication | Yes | - |
repository-id |
AquaSec Repository ID (UUID format) | Yes | - |
verbose-logging |
Enable detailed logging | No | false |
Option 1: Via User Management (requires User Management access)
- Navigate to User Management → Groups in the AquaSec platform.
- Search for and select your specific group.
- Click on the group to view its details.
- The Group ID is displayed at the end of the URL after
/groups/.
Option 2: Via JWT Token Inspection
- Open your browser's Developer Tools and navigate to the Network tab.
- Reload the AquaSec platform and locate any API request in the Request Headers section.
- Copy your Authorization Bearer token from the headers.
- Decode the token using for example jwt.io.
- In the decoded payload, look for the user_groups_user field containing your accessible Group IDs.
- Navigate to Code Repositories in the AquaSec platform.
- Use the search bar to filter and locate your repository.
- Click on the repository name to open its overview page.
- The Repository ID (UUID format) is displayed in the URL after
/repositories/.
Example: https://aquasec.com/repositories/9d93jajb-6c6e-438d-8bef-afb5a12396e5/overview
→ Repository ID: 9d93jajb-6c6e-438d-8bef-afb5a12396e5
The action provides the following output for use in subsequent workflow steps:
| Output Name | Description | Example Value |
|---|---|---|
aquasec-sarif-file |
Full unique path to the generated SARIF file with findings | /home/runner/work/repo/aquasec_scan_2026-02-05_09-38.sarif |
Usage Example:
- name: Fetch AquaSec Scan Results
id: aquasec
uses: AbsaOSS/aquasec-scan-results@v0.1.0
with:
aqua-key: ${{ secrets.AQUA_KEY }}
aqua-secret: ${{ secrets.AQUA_SECRET }}
group-id: ${{ secrets.AQUA_GROUP_ID }}
repository-id: ${{ secrets.AQUA_REPOSITORY_ID }}
- name: Use SARIF output
run: |
echo "SARIF file generated: ${{ steps.aquasec.outputs.aquasec-sarif-file }}"We love community contributions!
Typical contributions include:
- Fixing bugs or edge cases
- Improving documentation or examples
- Adding new configuration options
This project is licensed under the Apache License 2.0. See the LICENSE file for full terms.
Thanks to all contributors and teams who helped evolve this Action. Your feedback drives continuous improvement and automation quality.