Osadzanie Appki
Appkę osadza się tak samo jak zapisane zapytanie czy dashboard — przez
Web Component <saiku-embed> — ale jako jedną
jednostkę w zakresie tokenu. Pojedynczy token przyznaje całą Appkę: jej
nawigacja i wszystkie strony jadą na tym jednym przyznaniu, a gość
przegląda ją tylko do odczytu, przełączając strony w miejscu.
Znaczniki
Ustaw kind="app" i skieruj path na dokument .saikuapp:
<saiku-embed server="https://YOUR-WORKSPACE.saiku.bi" token="tx-..." kind="app" path="homes/admin/sales-portal.saikuapp" height="800px"></saiku-embed>Cała reszta komponentu — metody instalacji, zdarzenia, theming przez
zmienne --saiku-embed-*, wrappery dla Reacta i Vue — działa dokładnie
tak, jak opisano na stronie Osadzanie Saiku. Osadzenie
Appki jest czysto prezentacyjne nad istniejącą ścieżką zapytań
osadzania; nie dokłada żadnej nowej mechaniki po stronie hosta.
Wydanie tokenu Appki
Token Appki wydaje się jak token dashboardu, ale z resourceKind: "app"
i ścieżką .saikuapp:
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" }'Wydający musi mieć dostęp do odczytu Appki. Token przypina dokładnie
jedną Appkę: odtworzenie go wobec jakiegokolwiek innego zasobu zwraca
ten sam nieprzejrzysty EMBED_INVALID — token dla Appki A nie odczyta
Appki B ani żadnej innej ścieżki repozytorium.
Bezpieczeństwo: RLS i PII są wymuszane po stronie serwera
Kafelki każdej strony wykonują to samo strzeżone zapytanie per-kafelek, którego używa osadzony dashboard. Treść zapytania jest pobierana po stronie serwera z przypiętego dokumentu Appki — nigdy od klienta — więc:
- Filtry bezpieczeństwa na poziomie wierszy niesione przez token są nakładane na końcu i zawodzą bezpiecznie: jeśli nie da się ich wpleść w zapytanie kafelka, kafelek zgłasza błąd, zamiast wypuścić niefiltrowane wiersze.
- Redakcja PII pozostaje włączona: jeśli którakolwiek wskazana
kolumna jest oznaczona jako PII, token przy wydaniu jest podnoszony do
wymuszonej redakcji, tak samo jak przy dashboardzie. Inspektor
rozwiązuje każdą wskazaną hierarchię i miarę wobec adnotacji
saiku.semantic.piikostki i zawodzi bezpiecznie — jeśli nie potrafi rozwiązać zasobu w ogóle, odmawia przyznania, zamiast założyć, że zasób jest czysty. Wpis audytowy rozróżnia oba przypadki („annotated columns” kontra „unresolvable resource”), więc odmowę da się zdiagnozować. - Nadpisanie
filterpo stronie klienta może zapytanie kafelka jedynie zawęzić, nigdy poszerzyć.
Kafelki pluginów w osadzonej Appce
Jeśli strona Appki zawiera kafelek plugina, plugin jest serwowany w zakresie tokenu: gość może załadować dokładnie te pluginy, do których odwołuje się osadzona Appka, i nic więcej. Wewnątrz osadzenia obowiązuje ta sama piaskownica i to samo ograniczenie CSP.
Powiązane
- Osadzanie Saiku — pełna referencja
<saiku-embed>: tokeny, zdarzenia, theming, publiczne przyznania, React / Vue. - Przegląd App Buildera — budowanie Appki, którą osadzasz.
- Pluginy — model ograniczania dla kafelków z JS w piaskownicy.