Umgebungsvariablen, Secrets und Workflow-Ergebnisse
Konfiguration und Geheimnisse sauber aus dem Funktionscode auslagern — und die Grenzen der UI-Maskierung kennen.
Was du in diesem Tutorial lernst
Du lagerst Werte aus dem Code aus (Umgebungsvariablen auf Org- und Funktions-Ebene), kennst die Priorität, setzt timeout richtig, verstehst, warum „Vertraulich" kein Secret-Safe ist, und verarbeitest Workflow-Ergebnisse über aiserviceresults sicher weiter.
Voraussetzung: E3 (Funktionen), E6 empfohlen. Abgrenzung: E6 braucht Umgebungsvariablen für M365/Google; E7 vertieft den Betrieb — Priorität, Export, Maskierung, Leak-Pfade, Workflow-Kontext.
Quellen und Stand
Geprüft gegen das AuxData-Programmierhandbuch (Stand Juni 2026): Umgebungsvariablen, Vertrauliche Werte, aiserviceresults, Organisation-Modul, Best Practices. Alle Tokens sind Platzhalter.
Warum Umgebungsvariablen
Konfiguration, keine fachlichen Parameter.
1Wofür sie gedacht sind
Umgebungsvariablen sind für Werte, die man nicht hart codieren will und die keine fachlichen Funktionsparameter sind. (PH „Was sind Umgebungsvariablen?")
Typische Beispiele: API-Tokens, Client Secrets, Tenant-IDs, Datenbankzugangsdaten, Service-Account-JSON, Refresh-Tokens, produktionsabhängige URLs.
In der Funktion stehen sie als globale Bezeichner bereit:
var apiKey = api_token; // Umgebungsvariable api_token var dbHost = db_host;
kundenname ein Parameter oder eine Umgebungsvariable? Und client_secret?✓ Das hast du jetzt verstanden
Organisation vs. Funktion
Zwei Ebenen, eine Prioritätsregel.
1Die zwei Ebenen
- An der Organisation
- wird in jeden Funktionsaufruf eingetragen — für Werte, die mehrere Funktionen brauchen (gemeinsamer Token, Tenant-ID, Basis-URL).
- An der Funktion
- gilt nur für diese Funktion. Export-Vorteil: beim Funktions-Export werden die Deklarationen mitgegeben, nicht die Werte — sicherer Import in andere Orgs ohne Geheimnis-Transfer.
CRM_API_TOKEN, GRAPH_CLIENT_SECRET, GOOGLE_SERVICE_ACCOUNT_JSON.api_token=dev, die Organisation api_token=prod. Welcher Wert läuft?✓ Das hast du jetzt verstanden
timeout & robuste Verwendung
Validieren, aber nichts verraten.
1Die vordefinierte Variable timeout
timeout (int, Sekunden) überschreibt den Funktions-Timeout. Default 600 s (10 min). Nur an der Funktion wirksam — an der Organisation gesetzt wird er ignoriert. Sinnvoll für Funktionen, die viele/aufwendige AI-Services oder externe Dienste aufrufen. (PH „Vordefinierte Umgebungsvariablen")
2Validieren ohne zu loggen
getModule("log");
if (!api_token || typeof api_token !== "string" || api_token.trim() === "") {
log_error("Pflichtvariable api_token fehlt");
return "FEHLER: API-Konfiguration fehlt.";
}
var cleanToken = api_token.trim();
log_info("Konfiguration geprüft");
return "bereit";
log_info("Token: " + api_token) falsch, obwohl der Wert aus einer Umgebungsvariable kommt?✓ Das hast du jetzt verstanden
Vertrauliche Werte
Maskierung ist kein Secret-Safe.
1Die Checkbox „Vertraulich"
Beim Anlegen/Bearbeiten einer Umgebungsvariable gibt es „Vertraulicher Wert (in Tabelle maskiert)": die Übersicht zeigt dann ********, der Klartext erscheint nur im Edit-Dialog. (PH „Vertrauliche Werte")

********.• im Klartext in der Datenbank gespeichert,
• über die REST-API unmaskiert zurückgegeben,
• in den Browser-DevTools (Netzwerk-Tab) sichtbar.
Für hochkritische Geheimnisse einen separaten SecretManager verwenden.
******** zeigt?✓ Das hast du jetzt verstanden
Secret-Leak-Pfade & organisation-Modul
Wo Geheimnisse heimlich auftauchen.
1Das organisation-Modul
organisation_getOrganisation() liefert eine Kopie der ausführenden Organisation — mit sensiblen Feldern im Klartext. (PH „Organisation Modul")
getModule("organisation");
var org = organisation_getOrganisation();
Sensible Felder u. a.: Env, EnvConfidential, ADConfig.MsgraphClientSecret, TeamsBotConfig.MsAppPassword. Diese dürfen nicht in Logs, Antworten oder ungesicherten externen Aufrufen erscheinen.
JSON.stringify(org) zurückgeben · nur benötigte Felder lesen · bei Fehlern generische Meldungen · Debug-Ausgaben nach Tests entfernen.2Vorher / Nachher
// Falsch:
log_info(JSON.stringify(org));
// Besser:
log_info("Organisation geladen: " + org.Name);
JSON.stringify(org) ein Secret-Leak sein?✓ Das hast du jetzt verstanden
aiserviceresults in Workflows
Ergebnisse vorheriger Schritte.
1Die globale Variable
Läuft eine Funktion als Schritt eines AI-Workflows, stellt AuxData die Ergebnisse aller vorherigen Schritte als globale Variable aiserviceresults bereit — ohne getModule(...). (PH „Ergebnisse vorheriger Workflow-Schritte")
- Typ
Array<string>odernull(außerhalb eines Workflow-Kontextes).- Reihenfolge
- chronologisch;
[0]= ältester,[length-1]= direkt vorheriger Schritt. - Inhalt
- das
Result-Feld des jeweiligen AI-Service-Ergebnisses als String.
if (aiserviceresults === null || aiserviceresults.length === 0) {
return "Kein vorheriger Schritt vorhanden.";
}
var letztesErgebnis = aiserviceresults[aiserviceresults.length - 1];
return "Vorheriges Ergebnis war: " + letztesErgebnis;
Konfiguration, Secrets & Workflow-Daten getrennt
Du trennst Betriebswerte, Geheimnisse und Workflow-Daten sauber vom Funktionscode. Damit ist Track E um Secret-Betrieb und Workflow-Kontext vertieft. Für die Lernbestätigung gibt es den Track-E-Kompetenzcheck.
aiserviceresults außerhalb eines Workflow-Kontextes?✓ Das hast du jetzt erledigt
Sitzt der Secret-Betrieb?
8 Fragen aus den Stufen 1–6. Kein Zertifikat — zur Selbstkontrolle. Beliebig oft wiederholbar.