Eine App einbetten
Eine App wird genauso eingebettet wie eine gespeicherte Abfrage oder ein
Dashboard — über die
<saiku-embed>-Web-Komponente — aber als eine
token-scoped Einheit. Ein einzelnes Token gewährt die gesamte App: ihre
Navigation und alle ihre Seiten reiten auf dieser einen Gewährung, und der
Gast browst sie read-only und wechselt die Seiten an Ort und Stelle.
Das Markup
Setzen Sie kind="app" und richten Sie path auf das
.saikuapp-Dokument:
<saiku-embed server="https://YOUR-WORKSPACE.saiku.bi" token="tx-..." kind="app" path="homes/admin/sales-portal.saikuapp" height="800px"></saiku-embed>Alles andere an der Komponente — Installationsmethoden, Events, Theming
über --saiku-embed-*-Variablen, die React- und Vue-Wrapper —
funktioniert genau so, wie es auf der Seite Saiku
einbetten dokumentiert ist. Ein App-Embed ist rein
präsentational über dem bestehenden Embed-Query-Pfad; es fügt auf der
Host-Seite keine neue Mechanik hinzu.
Ein App-Token ausstellen
Stellen Sie ein App-Token wie ein Dashboard-Token aus, aber mit
resourceKind: "app" und einem .saikuapp-Pfad:
curl -X POST 'https://YOUR-WORKSPACE.saiku.bi/rest/saiku/api/embed/tokens' \ -u admin:admin \ -H 'Content-Type: application/json' \ -d '{ "resourceKind": "app", "resourcePath": "homes/admin/sales-portal.saikuapp", "ttlHours": 72, "label": "Customer sales portal" }'Wer ausstellt, muss Lesezugriff auf die App haben. Das Token pinnt
genau eine App: Wird es gegen irgendeine andere Ressource
wiederverwendet, kommt dasselbe undurchsichtige EMBED_INVALID zurück —
ein Token für App A kann weder App B noch irgendeinen anderen
Repository-Pfad lesen.
Sicherheit: RLS und PII werden serverseitig durchgesetzt
Die Tiles jeder Seite führen dieselbe abgesicherte Pro-Tile-Abfrage aus, die auch ein Dashboard-Embed nutzt. Der Abfragerumpf wird serverseitig aus dem gepinnten App-Dokument gezogen — nie vom Client — also:
- Row-Level-Security-Filter, die das Token trägt, werden zuletzt angewendet und fail closed: Können sie nicht in die Abfrage eines Tiles eingefügt werden, wirft das Tile einen Fehler, statt ungefilterte Zeilen zu leaken.
- PII-Redaction bleibt an: Ist irgendeine referenzierte Spalte
PII-annotiert, wird das Token beim Ausstellen auf erzwungene Redaction
hochgestuft, genau wie bei einem Dashboard. Der Inspector löst jede
referenzierte Hierarchie und Measure gegen die
saiku.semantic.pii-Annotationen des Cubes auf und fail closed — kann er die Ressource überhaupt nicht auflösen, verweigert er die Gewährung, statt anzunehmen, die Ressource sei sauber. Die Audit-Zeile unterscheidet die beiden Fälle („annotated columns” vs. „unresolvable resource”), sodass sich eine verweigerte Gewährung diagnostizieren lässt. - Ein clientseitiges
filter-Override kann die Abfrage eines Tiles nur verengen, nie erweitern.
Plugin-Tiles in einer eingebetteten App
Enthält eine App-Seite ein Plugin-Tile, wird das Plugin token-scoped ausgeliefert: Der Gast kann genau die Plugins laden, die die eingebettete App referenziert, und sonst nichts. Dieselbe Sandbox und CSP-Eindämmung gelten innerhalb des Embeds.
Verwandt
- Saiku einbetten — die vollständige
<saiku-embed>-Referenz: Tokens, Events, Theming, öffentliche Gewährungen, React / Vue. - App-Builder-Überblick — die App bauen, die Sie einbetten.
- Plugins — das Eindämmungsmodell für Tiles mit sandboxed JS.