Teil 2: OpenAI Admin CLI: Sicherheit, Kostenkontrolle und Automatisierung für Enterprise‑Admins

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.