Mit wachsender Nutzung von GPT‑Modellen entstehen in Unternehmen zwei Probleme: Übersicht behalten und Kosten im Griff halten – ohne Sicherheitsrisiken. Genau hier setzt die OpenAI Admin CLI von ADMIN INTELLIGENCE an: eine schlanke Kommandozeilen‑Lösung, mit der Sie Organisation, Projekte, Nutzer, Service‑Accounts, API‑Schlüssel, Rate Limits sowie Nutzungs‑ und Kostendaten zentral verwalten und automatisieren. Dieser Beitrag ist Teil 2 unserer OpenAI‑API‑Security‑Serie. Teil 1: OpenAI Key Rotation: Praxisleitfaden für sichere API‑Schlüssel ohne Downtime widmet sich der sicheren Schlüsselrotation in produktiven Umgebungen.
Hinweis zur Einordnung: OpenAI hat im Oktober 2025 eine Admin API für organisationsweite Verwaltung vorgestellt. Die hier gezeigte CLI nutzt genau diese Schnittstellen, damit Admins administrative Aufgaben reproduzierbar, skriptbar und sicher erledigen – bis hin zur vollständigen Automatisierung.
Was die OpenAI Admin CLI leistet
Die OpenAI Admin CLI strukturiert typische Admin‑Aufgaben entlang klarer Unterbefehle. Sie erhalten damit:
- Sicht auf alle Nutzer und Projekte einer Organisation
- Service‑Accounts mit automatisch erzeugtem API‑Key für CI/CD und Automatisierung
- Verwaltung von API‑Schlüsseln (inkl. Detailabfragen und Löschung von Benutzer‑Schlüsseln)
- Rate‑Limit‑Steuerung pro Modell/Projekt zur Kostenkontrolle
- Nutzungsanalysen (Completions, Embeddings, Images, Audio TTS/Transkription)
- Kostentracking mit Grouping nach Projekten und Line‑Items
- Ausgabe als Tabelle oder JSON – perfekt für Pipes, Scripting und Dashboards
Das Ziel: Governance, Sicherheit und Kostenkontrolle werden konfigurierbar und automatisierbar – anstatt händisch und fehleranfällig.
Das CLI Repository finden sie hier.

Sicherheitsmodell und organisatorische Leitplanken
Die Admin API von OpenAI arbeitet mit Admin‑Schlüsseln (Organisationsebene). Daraus folgen einige Grundsätze:
- Least Privilege: Der Admin‑Key gehört ausschließlich in abgesicherte Admin‑Kontexte. Niemals in App‑Code, CI‑Jobs normaler Repositories oder Endnutzer‑Skripte.
- Besitz und Rollen: Admin‑Keys können nur von Organisationseigentümern erzeugt werden. Verwalten Sie deren Lebenszyklus und Dokumentation klar.
- Secrets‑Speicherung: Nutzen Sie einen dedizierten Secrets‑Manager oder eine sichere Passwortverwaltung. Für Teams, die sich professionell aufstellen wollen, lohnt ein Blick auf unseren Vergleich von Team‑Passwortmanagern in „Vaultwarden vs Passbolt – der große Passwortmanager‑Vergleich für Admins und Teams“.
- Service‑Accounts statt Personen‑Keys in Produktion: So vermeiden Sie Zugriffsabbrüche, wenn Mitarbeitende wechseln.
Identity‑Governance und SSO helfen zusätzlich, Nutzerzugriff sauber zu steuern. Eine fundierte Einordnung zu modernen IdP‑Lösungen finden Sie in unserem „Identity Provider Vergleich – Authentik vs Keycloak“.
Installation und Grundkonfiguration
Voraussetzungen: Python 3 und Pip.
# Repository lokal beziehen (per Clone oder Download)
# Abhängigkeiten installieren
python3 -m pip install -r requirements.txt
# Admin‑Key als Umgebungsvariable setzen
export OPENAI_ADMIN_KEY="sk-admin-..."
Sie können den Key alternativ pro Aufruf übergeben:
python openai_admin.py --admin-key sk-admin-... users list
Optional machen Sie das Skript ausführbar:
chmod +x openai_admin.py
Standardausgabe ist eine gut lesbare Tabelle. Für Automationszwecke lohnt JSON plus jq:
python openai_admin.py users list --format json \
| jq '.data[] | {name, email, role}'
Audits: Nutzer und Projekte im Blick
Transparenz ist der erste Schritt zu Sicherheit und Kostenkontrolle.
- Nutzer auf Orgaebene listen:
python openai_admin.py users list
# JSON für nachgelagerte Auswertung
python openai_admin.py users list --format json
- Projekte überblicken (inkl. Archiv):
python openai_admin.py projects list
python openai_admin.py projects list --include-archived
Praxisnutzen:
- Rollen‑Audit: Wer ist Owner, wer Member?
- Projekt‑Hygiene: Archivierte Projekte erkennen und aufräumen
- Vorbereitung für Schlüssel‑ und Budget‑Governance
Service‑Accounts: Stabilität für Produktion und CI/CD
Service‑Accounts sind Bot‑Identitäten ohne Personenbezug – ideal für produktive Anwendungen, Pipelines und Automatisierung. Vorteil: Offboardings einzelner Mitarbeitender unterbrechen die Produktion nicht.
Service‑Accounts eines Projekts auflisten:
python openai_admin.py service-accounts list proj_abc123
python openai_admin.py service-accounts list proj_abc123 --format json
Anlegen mit automatisch erzeugtem API‑Key:
python openai_admin.py service-accounts create proj_abc123 "Production Bot"
Wichtig: Der generierte Key wird nur einmal angezeigt. Sichern Sie ihn sofort in Ihrem Secrets‑Manager. Geht er verloren, müssen Sie den Service‑Account löschen und neu erstellen.
Details abrufen und löschen:
python openai_admin.py service-accounts get proj_abc123 svc_acct_xyz
python openai_admin.py service-accounts delete proj_abc123 svc_acct_xyz --force
Bewährtes Muster für Rotation in Produktion:
- Neuen Service‑Account mit neuem Key erzeugen
- Deployment/Secrets umstellen und verifizieren
- Alten Service‑Account entfernen (inkl. Key‑Invalidation)
Für die Integration in CI/CD empfehlen wir unseren praxisnahen Leitfaden „GitLab CI/CD für Administratoren – ein Praxis‑Guide für automatisierte Deployments“. Er zeigt, wie Secrets in Pipelines sicher gehandhabt werden.
API‑Schlüssel verwalten – differenziert nach Benutzern und Service‑Accounts
Die Admin CLI unterscheidet bewusst:
- Benutzer‑Schlüssel: Können gezielt gelöscht werden
- Service‑Account‑Schlüssel: Nicht einzeln löschbar; löschen Sie dafür den gesamten Service‑Account
Admin‑Keys listen:
python openai_admin.py keys list-admin
Projekt‑Schlüssel (Benutzer und Service‑Accounts) anzeigen:
python openai_admin.py keys list-project proj_abc123
Details zu einem Schlüssel:
python openai_admin.py keys get proj_abc123 key_xyz789
# JSON für Skripting
python openai_admin.py keys get proj_abc123 key_xyz789 --format json
Benutzer‑Schlüssel löschen:
python openai_admin.py keys delete proj_abc123 key_xyz789
# ohne Nachfrage
python openai_admin.py keys delete proj_abc123 key_xyz789 --force
Praxisrat – Schlüsselrotation ohne Downtime: Organisieren Sie Deployments so, dass neue Schlüssel eingeführt und alte erst nach verifizierter Inbetriebnahme entzogen werden. Ausführliche Muster, Fallstricke und Rollback‑Optionen haben wir in Teil 1 unserer Serie beschrieben (Titel siehe oben).
Rate Limits als Guardrails für Kosten und Missbrauchsschutz
Mit Rate Limits setzen Sie pro Projekt und Modell klare Obergrenzen – für Anfragen, Tokens, Images und Audio. So vermeiden Sie Ausreißer und schützen Budgets.
Konfiguration eines Projekts einsehen:
python openai_admin.py rate-limits list proj_abc123
# JSON zur Weiterverarbeitung
python openai_admin.py rate-limits list proj_abc123 --format json
Wichtige Felder in der Ausgabe:
- Modellname (z. B. gpt‑4, gpt‑4o, dall‑e‑3)
- max_requests_per_minute, max_tokens_per_minute
- max_images_per_minute, max_audio_mb_per_minute
- max_requests_per_day, batch_max_tokens_per_day
Die Admin API liefert keine Einzel‑Abfrage pro Rate‑Limit; verwenden Sie die Listenansicht und filtern Sie per Skript.
Limits ändern:
# GPT‑4 Nutzung drosseln
python openai_admin.py rate-limits update proj_abc123 rl_gpt4 \
--max-requests-per-minute 50 \
--max-tokens-per-minute 10000
# DALL‑E mit Tagesbudget
python openai_admin.py rate-limits update proj_abc123 rl_dalle3 \
--max-images-per-minute 5 \
--max-requests-per-day 100
# Produktions‑Projekt hochskalieren
python openai_admin.py rate-limits update proj_prod rl_gpt35turbo \
--max-requests-per-minute 5000 \
--max-tokens-per-minute 1000000
Regeln:
- Limits können Organisationslimits nicht überschreiten
- Dev/Test konservativ limitieren, Produktion nach Bedarf skalieren
- Limits regelmäßig anhand realer Nutzung validieren
Erprobte Profile:
- Entwicklung/Test (Kostenbremse):
python openai_admin.py rate-limits update proj_dev rl_gpt4 \
--max-requests-per-minute 10 \
--max-tokens-per-minute 5000
- Produktion (Business‑kritisch):
python openai_admin.py rate-limits update proj_prod rl_gpt4 \
--max-requests-per-minute 1000 \
--max-tokens-per-minute 500000
- Kostenkappe per Tag:
python openai_admin.py rate-limits update proj_abc123 rl_gpt4 \
--max-requests-per-day 10000
Nutzung auswerten: Completions, Embeddings, Images und Audio
Die Nutzungskommandos liefern Zeitreihen, gruppiert nach Projekt, Nutzer, Key, Modell etc. Das erleichtert Anomalieerkennung, Kapazitätsplanung und Abrechnung.
Completions (Chat/Text):
# letzte 7 Tage
python openai_admin.py usage completions --days 7
# Zeitraum exakt
python openai_admin.py usage completions --start-date 2024-01-01 --end-date 2024-01-31
# Gruppierung nach Projekt und Modell
python openai_admin.py usage completions --days 30 \
--group-by project_id --group-by model
Embeddings:
python openai_admin.py usage embeddings --days 7
Images (z. B. DALL‑E):
python openai_admin.py usage images --days 7
Audio TTS/Transkription:
python openai_admin.py usage audio-speeches --days 7
python openai_admin.py usage audio-transcriptions --days 7
Tipps:
- Kombinieren Sie Groupings (z. B. project_id und model), um Hotspots zu erkennen.
- Nutzen Sie JSON‑Ausgabe für Dashboards oder Dataframes.

Kosten im Griff: Auswertung und Budgets
Transparenz über Kosten ist essenziell – nicht erst zum Monatsende. Die CLI bietet Zeitreihen, Gruppierungen und Filter.
Beispiele:
# Kosten der letzten 30 Tage
python openai_admin.py costs --days 30
# Nach Projekt gruppieren
python openai_admin.py costs --days 30 --group-by project_id
# Nach Line‑Item (feine Aufschlüsselung)
python openai_admin.py costs --days 7 --group-by line_item
# Konkretes Projekt filtern
python openai_admin.py costs --days 30 --project-id proj_123
CSV‑Export via jq (ad‑hoc):
python openai_admin.py costs --days 30 --format json \
| jq -r '.buckets[] | [.start, .end, (.amount|tostring), .currency] | @csv' \
> costs_last30d.csv
Best Practices:
- Budgets pro Projekt definieren und mit Rate Limits absichern
- Regelmäßige Kostenberichte automatisieren
- Peaks korrelieren: kostenintensive Modelle/Projekte identifizieren

Automatisierung: Von einmaliger Aktion zu wiederholbarer Governance
Die volle Stärke entfaltet die Admin CLI in Pipelines und Scheduled Jobs. Ein realistisches Set:
- Nächtlicher Audit‑Job (Nutzer, Projekte, Keys) als JSON artefaktisieren und differenziell prüfen
- Wöchentliche Kostenberichte generieren und an FinOps/Teams verteilen
- Rate Limits policy‑basiert setzen (projekt‑ und umgebungsabhängig)
- Schlüsselrotation in CI orchestrieren: neuen Service‑Account erzeugen, Secret updaten, Smoke‑Tests fahren, alten Account entfernen
Ein minimales Beispiel für GitLab CI (stark vereinfacht):
stages: [audit]
variables:
PYTHONUNBUFFERED: "1"
openai_audit:
stage: audit
image: python:3.12-slim
rules:
- if: "$SCHEDULED_PIPELINE == 'true'"
script:
- pip install -r requirements.txt jq
- python openai_admin.py users list --format json > users.json
- python openai_admin.py projects list --format json > projects.json
- python openai_admin.py costs --days 7 --format json > costs.json
- jq '.buckets | length' costs.json
artifacts:
when: always
paths: [users.json, projects.json, costs.json]
expire_in: 7 days
Wie Secrets in GitLab sicher eingebunden und maskiert werden, erläutern wir im Detail im Beitrag „GitLab CI/CD für Administratoren – ein Praxis‑Guide für automatisierte Deployments“.
Zur Sicherheitsüberwachung lohnt zusätzlich ein zentrales SIEM. Unser Beitrag „Wazuh SIEM – Open‑Source Sicherheit auf den Punkt gebracht“ zeigt, wie Sie Ereignisse konsolidieren – ideal, um API‑Nutzungsanomalien, fehlgeschlagene Calls oder ungewöhnliche Kostenpeaks flankierend zu beobachten.
Governance‑Praktiken: Struktur, Benennung, Trennung
Mit Technik allein ist es nicht getan. Etablieren Sie Regeln:
- Pro Projekt genau ein fachlicher Zweck: Trennen Sie produktive Apps, Backoffice‑Automationen, Experimente, Batch‑Jobs.
- Trennung nach Umgebungen: proj_appX_dev, proj_appX_stage, proj_appX_prod – mit unterschiedlichen Limits und Budgets.
- Benennung konsistent: Eindeutige Namen für Service‑Accounts („GitHub Actions“, „Prod API Bot“), dokumentiert in der Team‑Wissensbasis.
- Rotation fest verankern: Wiederkehrende Jobs, definierte Escalation‑Paths, Notfall‑Playbooks.
- Berichte versionieren: JSON‑Snapshots von Nutzungs‑ und Kostendaten in einem sicheren Repository ablegen; Changes reviewen.
Betrieb, Fehlersuche und Härtung
Typische Stolpersteine und schnelle Abhilfe:
- Fehlende Umgebungsvariable:
export OPENAI_ADMIN_KEY="sk-admin-..."
- Importfehler: Abhängigkeiten nachziehen
python3 -m pip install -r requirements.txt
- API‑Fehler: Gültigkeit des Admin‑Keys prüfen, Owner‑Rolle sicherstellen, ggf. Ablauf/Rotation checken
Härtungsempfehlungen:
- Admin‑Key niemals in VCS, Logs oder Artefakte leaken; Secrets‑Scanning aktivieren
- Service‑Accounts statt Personen‑Schlüssel in allen automatisierten Pfaden
- Budgets, Limits und Nutzungsalarme kombinieren (Kosten, Requests, Tokens)
Grenzen und Roadmap
Der aktuelle Admin‑API‑Funktionsumfang deckt die Kernbedarfe ab. Beachten Sie:
- Rate‑Limits werden nur als Gesamtliste je Projekt geliefert; Einzel‑Retrieval ist nicht vorgesehen
- Service‑Account‑Keys sind nicht einzeln löschbar – Rotation erfolgt über neue Service‑Accounts
- Künftige Erweiterungen in Planung (z. B. Audit‑Log‑Abfragen, CSV/Excel‑Exports, Budget‑Alerts) – halten Sie Ihre Tooling‑Roadmap flexibel
Wenn Sie die in diesem Beitrag gezeigten Muster auf Ihre Organisation übertragen, gewinnen Sie klare Sicht auf Nutzer, Projekte, Kosten und Risiken – und Sie können Governance als Code leben. Weitere tiefgehende Praxisartikel finden Sie jederzeit auf unserem Blog unter https://blog.admin-intelligence.de/. Für maßgeschneiderte LLM‑Architekturen, Sicherheitskonzepte und Automatisierung unterstützen wir Sie gerne auch projekthaft – mehr dazu auf unserer Leistungsseite für KI & LLM unter AI & LLM Consulting von ADMIN INTELLIGENCE. Wenn Sie Fragen zur Umsetzung, Integration in GitLab oder zur Härtung Ihrer Admin‑Prozesse haben, erreichen Sie uns direkt über Kontakt.