Przejdź do głównej zawartości

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:

Okno terminala
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.pii kostki 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 filter po 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.