aboutsummaryrefslogtreecommitdiff
path: root/applications/gitlab/provisioning.py
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2025-04-07 22:52:59 -0500
committerGitHub <noreply@github.com>2025-04-07 22:52:59 -0500
commit8b78620c2c39c996007212616a586a8644ae7e33 (patch)
tree309e2dd196f9ce99893bf5f945dfcd8a8c0c3615 /applications/gitlab/provisioning.py
parentbee22b97b652cd04fa470d7f31c3b917e44f3ab9 (diff)
downloadaudit-tools-8b78620c2c39c996007212616a586a8644ae7e33.tar.gz
audit-tools-8b78620c2c39c996007212616a586a8644ae7e33.tar.bz2
audit-tools-8b78620c2c39c996007212616a586a8644ae7e33.zip
Gitlab enhancements (#2)
* add various in-progress scripts for gitlab * Commit from GitHub Actions (Ruff) * add gitlab results for free-tier tools * Commit from GitHub Actions (Ruff) * add gitlab results for ultimate-tier tools * Commit from GitHub Actions (Ruff) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Diffstat (limited to 'applications/gitlab/provisioning.py')
-rw-r--r--applications/gitlab/provisioning.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/applications/gitlab/provisioning.py b/applications/gitlab/provisioning.py
new file mode 100644
index 0000000..bd0e695
--- /dev/null
+++ b/applications/gitlab/provisioning.py
@@ -0,0 +1,32 @@
+"""
+Track user creation and deletion events in GitLab with timestamps.
+"""
+
+import requests
+
+BASE_URL = "https://gitlab.com/api/v4"
+PRIVATE_TOKEN = "your_access_token"
+GROUP_ID = "your_group_id"
+TIMEOUT = 30
+
+URL = f"{BASE_URL}/groups/{GROUP_ID}/audit_events"
+HEADERS = {"PRIVATE-TOKEN": PRIVATE_TOKEN}
+
+if __name__ == "__main__":
+ # Get audit events
+ response = requests.get(URL, headers=HEADERS, timeout=TIMEOUT)
+ if response.status_code == 200:
+ audit_events = response.json()
+ for event in audit_events:
+ if event["entity_type"] == "User" or event["entity_type"] == "Group":
+ action = event["event_name"]
+ member_id = event["details"].get("member_id")
+ created_at = event["created_at"]
+ author = event["author_id"]
+ if action in ["member_created", "member_destroyed", "member_updated"]:
+ print(
+ f"Group: {GROUP_ID}\n",
+ f" {created_at} : Action: {action}, Member: {member_id}, Author: {author}",
+ )
+ else:
+ print(f"Failed to fetch audit events: {response.status_code}, {response.text}")