← Zurück zur Knowledge Kitchen
Power-BI-Visuals · für Admins, IT-Security, Datenschutz

Sicherheit & Betrieb der byDatenWG-Visuals

Eine Seite für alle, die ein Custom Visual freigeben müssen: was die Visuals tun, was sie nicht tun, was im Bericht gespeichert wird, wie die Freigabe im Organisations-Store läuft und wo die Grenzen liegen. Sachlich und prüfbar — jede Aussage ist am Quellcode oder an der Microsoft-Dokumentation nachvollziehbar, die Checkliste in Abschnitt 07 führt Sie durch die Prüfung.

Stand 23.10.2026 privileges: [] in allen drei Visuals Quellcode offen nicht von Microsoft zertifiziert

00Kurzfassung

  • Kein Netzwerkzugriff: In capabilities.json aller drei Visuals steht "privileges": [] — keine Web-Access-, Download- oder Local-Storage-Berechtigung. Im Quellcode gibt es 0 Treffer für fetch(, XMLHttpRequest, WebSocket, sendBeacon, eval(, new Function, localStorage, sessionStorage, document.cookie, indexedDB.
  • Keine Telemetrie, keine externen Schriften oder Skripte: externalJS ist leer, das Stylesheet enthält kein url() und kein @import.
  • Gespeichert wird nur Darstellung: Format-Einstellungen und Ansichtszustand per persistProperties in der Berichtsdatei, dazu vom Autor eingetragene Texte (Titel, Kommentare).
  • Eine Ausnahme beim Öffnen von Links: ChartKitchen und P&L haben einen „Doku öffnen“-Knopf (host.launchUrl); er öffnet auf Klick unsere Dokumentation in einem neuen Tab. Es werden keine Daten angehängt.
  • Nicht zertifiziert: Die Visuals sind (Stand heute) nicht im AppSource gelistet und nicht zertifiziert. Folge laut Microsoft: Export nach PDF und PowerPoint sowie Abo-Mails zeigen unzertifizierte Visuals nicht an (Abschnitt 04).

01Was die Visuals sind

Drei Power-BI-Custom-Visuals von Michael Tenner (Daten-WG), gemeinsam in einem öffentlichen Repository entwickelt. Sie sind IBCS-inspiriert (Notation nach den IBCS-Prinzipien) und nicht IBCS-zertifiziert; IBCS® ist eine eingetragene Marke der IBCS Association.

ChartKitchen byDatenWG

Version
1.53.0.0
API
5.11.0
GUID
chartKitchenByDatenWGD9DE0F7AD44D41058672C6FBF6F5A18D
Lizenz
Apache-2.0 (LICENSE + NOTICE)
Ordner
ibcsInspiredChartDeck/

P&L Statement byDatenWG

Version
1.5.3.0
API
5.11.0
GUID
pnlByDatenWG3F9A7D2C51E64B08A1C4E7F0B92D6358
Lizenz
MIT (LICENSE im Repo-Wurzelverzeichnis)
Ordner
pnlByDatenWG/

dataKitchenGantt

Version
1.15.0.0
API
5.3.0
GUID
dataKitchenGanttD7C41F0A93E24B6BA1F3C5E8A20D9B44
Lizenz
MIT (LICENSE im Repo-Wurzelverzeichnis)
Ordner
dataKitchenGantt/

Quelle der Angaben: pbiviz.json (Version, API, GUID) im jeweiligen Ordner des Repositories Losveratos/PowerBI-Kitchen-. Maßgeblich ist immer die pbiviz.json der Datei, die Sie prüfen — spätere Releases tragen eine höhere Version, behalten aber die GUID. Bei der Lizenz zählt die LICENSE-Datei im jeweiligen Geltungsbereich: ChartKitchen liefert eine eigene Apache-2.0-Lizenz mit; die Namen und das Logo „ChartKitchen“, „byDatenWG“, „Daten-WG“ sind davon ausgenommen (NOTICE).

02Datenfluss & Netzwerk

Die Visuals erhalten ihre Daten ausschließlich über die Power-BI-Host-Schnittstelle (update() mit dem DataView) und zeichnen sie in den eigenen Container. Der Code enthält keinen Weg, Daten nach außen zu senden. Microsoft führt Custom-Visual-Code nach eigener Aussage in einer Sandbox aus; ob ein Visual vertrauenswürdig ist, zu beurteilen liegt laut Whitepaper beim Kunden (Power BI security white paper). Deshalb hier die Belege zum Nachprüfen.

Berechtigungen (capabilities.json)

EigenschaftChartKitchenP&L StatementdataKitchenGantt
privileges[][][]
externalJS (pbiviz.json)nullnullnull
dependencies (pbiviz.json)nullnullnull

Ein leeres privileges-Array bedeutet: kein WebAccess (keine erlaubten URLs), kein ExportContent (kein Datei-Download aus dem Visual), kein LocalStorage. Seit API 4.6.0 müssen Berechtigungen ausdrücklich deklariert werden (Microsoft: Capabilities); alle drei Visuals nutzen API 5.x.

Trefferzahlen im Quellcode (src/)

SuchmusterChartKitchenP&L StatementdataKitchenGantt
fetch(000
XMLHttpRequest000
WebSocket000
navigator.sendBeacon000
<script src000
eval(000
new Function000
innerHTML001 *
localStorage000
sessionStorage000
document.cookie000
indexedDB000
Quelldateien in src/283

* Der eine Treffer in dataKitchenGantt ist ein Kommentar (gantt.ts, Zeile 20: „Rendering per DOM-Knoten (textContent, kein innerHTML)“), kein Aufruf. Weitere Muster ohne Treffer in allen drei Quellbäumen: importScripts, window.open, postMessage, createObjectURL, new Worker, iframe, DOMParser, document.write, insertAdjacentHTML, outerHTML, navigator., FontFace. Dieselben zwölf Muster (bei <script ohne das Attribut „src“) ergeben auch im gebauten Paket (.pbiviz, Stand der drei Dateien im Repository vom 23.10.2026) 0 Treffer; die einzigen URLs im Bundle sind der SVG-Namensraum http://www.w3.org/2000/svg, die Dokumentations-Adressen unserer Website (ChartKitchen, P&L) und die Support-Links in den Metadaten.

Die eine Ausnahme: „Doku öffnen“

ChartKitchen (visual.ts, Start-Hub) und P&L Statement (visual.ts/hub.ts, nur im Bearbeitungsmodus) rufen auf einen Klick auf „Doku öffnen“ host.launchUrl(…) auf. Die Adresse ist eine feste Konstante (datenwgknowledgekitchen.com/chartkitchen-doku.html bzw. pnl-doku.html, je nach Locale mit _en); Daten werden nicht angehängt. Power BI öffnet die Seite in einem neuen Browser-Tab — das Visual selbst sendet nichts. launchUrl benötigt keine Berechtigung in privileges (Microsoft: Launch URL). dataKitchenGantt hat keinen solchen Knopf.

Schriften, Telemetrie, Fremdcode

Grenzen dieser Prüfung: Ein Suchlauf belegt das Fehlen der genannten Muster, nicht das Fehlen jeder denkbaren Umgehung (etwa dynamisch zusammengesetzter Funktionsnamen). Deshalb bildet die Kombination aus leerem privileges (vom Host durchgesetzt), Quellcode-Prüfung und eigener Netzwerkbeobachtung (Abschnitt 07, Punkt 6) die belastbare Aussage. Die Visuals sind nicht von Microsoft auditiert.

03Was gespeichert wird

Alles, was die Visuals festhalten, geht über die Host-Schnittstelle persistProperties in die Berichtsdatei (.pbix / PBIR) — dorthin, wo auch die übrigen Formateinstellungen des Berichts liegen. Außerhalb der Berichtsdatei speichern die Visuals nichts (kein Browser-Speicher, keine Cookies, kein Server).

VisualPersistierte Objekte (capabilities.json)Inhalt
ChartKitchenibcsTitle, chart, colors, labels, emptyState, commentsPanel, scale, categoryAxisFormatierung und Ansichtszustand (Sortierung, aufgeklappte Zeilen, Spaltenbreiten, zuletzt angewandte Vorlage); vom Autor eingetragene Texte: Titelzeilen, Szenario-Beschriftungen, Leer-Zustand-Text und Kommentare (commentsPanel.userComments, JSON).
P&L Statementtoolbar, columns, numbers, style, titleBlock, labels, emptyState, hierarchy, stateFormatierung; Ansichtszustand als JSON (state.uiState, z. B. zugeklappte Zeilen, Treiberbaum-Wurzel); Titelblock und Leer-Zustand-Text vom Autor.
dataKitchenGanttdarstellung, spalten, meilensteine, basisplan, schrift, dataPointFormatierung, Farben, Tabellenbreite (per Trenner gezogen).

Hinweis für den Datenschutz: Es werden keine Messwerte oder Datenzeilen persistiert. Der Ansichtszustand kann aber Bezeichnungen aus Ihren Daten enthalten — etwa die Schlüssel aufgeklappter oder ausgeblendeter Zeilen, oder die Kategorie, an der ein Kommentar hängt. Kommentare und Titel sind Freitext des Berichtsautors; geben Sie dort keine Daten ein, die nicht in die Berichtsdatei gehören. Die Aussage zur Art der Properties folgt aus den deklarierten Typen in capabilities.json (Text, Zahl, Bool); wir haben nicht jede einzelne Schreibstelle im Code ausgewertet.

Lesezeichen: ChartKitchen und P&L Statement registrieren einen Selektions-Callback (registerOnSelectCallback) und übernehmen eine vom Host wiederhergestellte Auswahl, wenn ein Lesezeichen angewendet wird. Für dataKitchenGantt gibt es keine eigene Lesezeichen-Logik — Auswahl und Format verhalten sich wie bei den Standard-Mechanismen des Hosts (nicht gesondert getestet).

04Freigabe & Deployment

Die folgenden Angaben zu Power BI stammen aus der Microsoft-Dokumentation (abgerufen am 23.10.2026; Links unten). Bezeichnungen der Einstellungen stehen im englischen Originaltext, die deutsche Oberfläche kann abweichen.

Drei Wege ins Berichtswesen

WegSo geht esWas dazu gehört
Import je BerichtVisualisierungen → „…“ → Visual aus einer Datei importieren (.pbiviz). Das Visual steckt dann in der Berichtsdatei.Im Service greift das Tenant-Setting Allow visuals created using the Power BI SDK (laut Microsoft standardmäßig deaktiviert) und ggf. Add and use certified visuals only. In Desktop steuern das Gruppenrichtlinien (EnableCustomVisuals, EnableUncertifiedVisuals).
OrganisationsvisualAdmin-Portal → Organizational visuals → Add visual → From a file; Name, Icon, Beschreibung, Zugriff festlegen. Optional Enable for Visualization Pane, damit das Visual allen Autoren direkt angeboten wird; sonst finden Autoren es unter Get more visuals → My organization.Von den beiden obigen Tenant-Settings nicht betroffen: Organisationsvisuals gelten auch, wenn Dateiimport und unzertifizierte Visuals gesperrt sind. Zentrale Versionierung, Aktivieren/Deaktivieren, Löschen. Von Microsoft dokumentierte Warnung: Eine hochgeladene Datei kann Code mit Sicherheitsrisiken enthalten — Quelle prüfen (Abschnitt 07).
AppSource (zertifiziert)Visual aus dem Marketplace importieren oder per Add visual → From AppSource in den Org-Store.Für unsere Visuals noch nicht verfügbar (Abschnitt 05).

Update-Weg

Export nach PDF, PowerPoint und Abo-Mails

Rendering-Events sind umgesetzt — das genügt aber nicht für den Export. Alle drei Visuals rufen in update() renderingStarted auf und beenden mit renderingFinished bzw. renderingFailed (visual.ts). Das ist die technische Voraussetzung für Export und für die Zertifizierung. Microsoft dokumentiert jedoch: Custom Visuals werden für Export to PDF, Export to PowerPoint und Abonnement-Mails nur unterstützt, wenn sie zertifiziert sind; Organisationsvisuals (aus Datei) ausdrücklich nicht. Bei unzertifizierten Visuals ist die Export-Option ausgegraut oder fehlt; in Abo-Mails erscheint ein Fehlersymbol. Planen Sie bis zu einer Zertifizierung also ohne PDF-/PPT-Export und ohne diese Visuals in Abo-Mails — für Exportseiten bieten sich native Visuals oder ein Screenshot an.

Microsoft-Quellen: Manage Power BI visuals admin settings · Power BI organizational visuals · Certified Power BI visuals · Export to PDF · Export to PowerPoint · Rendering events · Import a visual

05Status der Zertifizierung

06Barrierefreiheit (kurz)

MerkmalChartKitchenP&L StatementdataKitchenGantt
supportsKeyboardFocustruetruenicht gesetzt
supportsHighlightfalsefalsenicht gesetzt
Hochkontrast (colorPalette.isHighContrast im Code)jajanein
Tastatur-Handler im Code (keydown/tabindex)jajanein

ChartKitchen und P&L Statement werten die Hochkontrast-Palette des Hosts aus; dort tragen Muster statt Farben die Aussage (Szenario-Notation AC/PY/PL/FC). Bedienelemente im Start-Hub sind per Tab erreichbar. supportsHighlight: false heißt: Hervorhebung durch andere Visuals läuft nicht über die Highlight-Schnittstelle (Kreuzfilterung per Auswahl ist unabhängig davon). dataKitchenGantt hat keine Hochkontrast-Auswertung und keine Tastatursteuerung — für Berichte mit Barrierefreiheits-Anforderung ist es derzeit nicht geeignet. Eine formale Barrierefreiheits-Prüfung (z. B. mit Screenreader) liegt für keines der Visuals vor.

07Prüf-Checkliste für Admins

Sieben Schritte, die Sie ohne uns durchführen können. Beispiel: ChartKitchen; für die anderen Visuals Dateinamen und GUID tauschen. Die Befehle sind PowerShell (Windows); unter macOS/Linux funktionieren unzip und grep entsprechend.

1Datei sichern und Hash festhalten. Laden Sie die .pbiviz (ChartKitchen: downloads/chartkitchen-byDatenWG-latest.pbiviz auf dieser Website) und notieren Sie den SHA-256 im Freigabe-Protokoll. Nach jedem Update neu bilden.

Get-FileHash .\chartkitchen-byDatenWG-latest.pbiviz -Algorithm SHA256

2Paket entpacken. Eine .pbiviz ist ein ZIP-Archiv mit package.json und resources/<GUID>.pbiviz.json.

Copy-Item .\chartkitchen-byDatenWG-latest.pbiviz .\ck.zip
Expand-Archive .\ck.zip -DestinationPath .\ck

3Berechtigungen lesen. In der entpackten JSON-Datei müssen capabilities.privileges leer und externalJS leer sein; apiVersion und visual.version stehen im selben Dokument.

$j = Get-Content .\ck\resources\*.pbiviz.json -Raw | ConvertFrom-Json
$j.capabilities.privileges   # leere Ausgabe = leer
$j.externalJS                # leere Ausgabe = leer
$j.apiVersion; $j.visual.version

4Im Code suchen. Der folgende Befehl muss ohne Ausgabe enden. Die Adressen-Liste zeigt alle URLs im Paket (erwartet: SVG-Namensraum, Dokumentations- und Support-Links).

Select-String -Path .\ck\resources\*.pbiviz.json -Pattern 'fetch\(|XMLHttpRequest|WebSocket|sendBeacon|eval\(|new Function|\.innerHTML|localStorage|sessionStorage|document\.cookie|indexedDB' -AllMatches
Select-String -Path .\ck\resources\*.pbiviz.json -Pattern 'https?://[^"'' )\\]+' -AllMatches | % { $_.Matches.Value } | Sort-Object -Unique

5GUID vergleichen. Die GUID im Dateinamen der JSON-Datei, im Feld visual.guid und in pbiviz.json des Repositories (Abschnitt 01) muss übereinstimmen; beim Austausch im Org-Store muss sie der bereits installierten entsprechen.

6Laufzeit beobachten. Visual in einem Testbericht mit Testdaten einsetzen, im Browser die Entwicklerwerkzeuge öffnen (F12 → Netzwerk) und mit dem Visual arbeiten (filtern, sortieren, Kommentar anlegen). Erwartung: keine Anfragen, die vom Visual ausgehen; nur der Klick auf „Doku öffnen“ öffnet einen neuen Tab zu datenwgknowledgekitchen.com.

7Quelle gegenprüfen. Den Quellstand aus dem Repository holen (Commit, in dem die Version in pbiviz.json gesetzt wurde), selbst bauen und Quelltext und Bundle vergleichen. Ein bitgleicher Hash ist nicht zugesichert (Build-Metadaten), ein inhaltlicher Vergleich ist möglich.

git clone https://github.com/Losveratos/PowerBI-Kitchen-
cd PowerBI-Kitchen-\ibcsInspiredChartDeck
npm ci
npx pbiviz package

Danach: in einer Testumgebung als Organisationsvisual hochladen, mit den Tenant-Einstellungen Ihrer Organisation testen und erst dann für das Visualisierungsfenster freigeben (Abschnitt 04).

08Kontakt & Stand