applications/gitlab
| name | last commit | updated |
|---|---|---|
| collectors/ | Resolve SonarCloud maintainability findings | 2 months ago |
| reporters/ | Merge pull request #14 from audit-labs/feat/interactive-tui-audit-app | 2 months ago |
| README.md | Merge pull request #14 from audit-labs/feat/interactive-tui-audit-app | 2 months ago |
| __init__.py | Merge pull request #14 from audit-labs/feat/interactive-tui-audit-app | 2 months ago |
| audit.py | Merge pull request #14 from audit-labs/feat/interactive-tui-audit-app | 2 months ago |
| config.py | Merge pull request #14 from audit-labs/feat/interactive-tui-audit-app | 2 months ago |
NOTE: The token used across all collectors needs at least the
read_apiscope. Some checks need more:
- Approval rules and audit events require a GitLab Premium or Ultimate subscription.
- Password policy reads instance application settings, which require an admin token on a self-hosted instance (not available on GitLab.com).
Checks that are unavailable are skipped with a warning; the rest still run.
audit.py — Unified GitLab Audit Tool
Runs all collectors against a GitLab group (including its subgroups) and writes a timestamped audit package to disk.
Setup
export GITLAB_TOKEN=your_token
export GITLAB_GROUP=your_group_id_or_path
# Self-hosted only:
export GITLAB_URL=https://gitlab.example.com/api/v4
Usage
# Basic run — uses GITLAB_TOKEN and GITLAB_GROUP from environment
python audit.py
# Override group, set output directory
python audit.py --group my-group --out ./output
# Point at a self-hosted instance
python audit.py --url https://gitlab.example.com/api/v4
The group may be a numeric ID (1234567) or a URL path (my-group/sub-group).
Output
Creates a directory: <out>/gitlab_audit_<group>_<YYYY-MM-DD>/
| File | Contents |
|---|---|
group_members.csv |
Group members with access level and role |
projects.csv |
All projects in the group and subgroups |
project_members.csv |
Members and access levels for every project |
branch_protections.csv |
Protected-branch settings across all projects |
pipelines.csv |
CI/CD pipeline history across all projects |
approval_rules.csv |
Merge-request approval rules (Premium/Ultimate) |
audit_events.csv |
Group membership audit events (Premium/Ultimate) |
password_policy.csv |
Instance password policy (self-hosted, admin token) |
summary.txt |
Row counts per section |
The per-project checks reuse a single enumeration of the group's projects, so the group is listed only once per run.