Pular para o conteúdo

Embutindo uma App

Uma App é embutida do mesmo jeito que uma consulta salva ou um dashboard — pelo Web Component <saiku-embed> — mas como uma unidade com escopo de token. Um único token concede a App inteira: a navegação dela e todas as suas páginas andam nessa única concessão, e o convidado navega em somente leitura, trocando de página no lugar.

A marcação

Defina kind="app" e aponte path para o documento .saikuapp:

<saiku-embed
server="https://YOUR-WORKSPACE.saiku.bi"
token="tx-..."
kind="app"
path="homes/admin/sales-portal.saikuapp"
height="800px"
></saiku-embed>

Todo o resto do componente — métodos de instalação, eventos, theming via variáveis --saiku-embed-*, os wrappers de React e Vue — funciona exatamente como documentado na página Embutindo o Saiku. Um embed de App é puramente apresentacional sobre o caminho de consulta de embed existente; não adiciona nenhuma mecânica nova do lado do host.

Emitindo um token de App

Emita um token de App como um token de dashboard, mas com resourceKind: "app" e um caminho .saikuapp:

Terminal window
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"
}'

Quem emite precisa ter acesso de leitura à App. O token fixa exatamente uma App: repeti-lo contra qualquer outro recurso devolve o mesmo EMBED_INVALID opaco — um token para a App A não lê a App B nem nenhum outro caminho do repositório.

Segurança: RLS e PII são aplicados no servidor

Os tiles de cada página rodam a mesma consulta guardada por tile que um embed de dashboard usa. O corpo da consulta é puxado no servidor a partir do documento de App fixado — nunca do cliente — então:

  • Filtros de segurança em nível de linha carregados pelo token são aplicados por último e falham fechado: se não puderem ser enxertados na consulta de um tile, o tile dá erro em vez de vazar linhas não filtradas.
  • A redação de PII continua ligada: se qualquer coluna referenciada for anotada como PII, o token é elevado para redação forçada na hora da emissão, igual a um dashboard. O inspetor resolve cada hierarquia e medida referenciada contra as anotações saiku.semantic.pii do cubo, e falha fechado — se não conseguir resolver o recurso de jeito nenhum, ele recusa a concessão em vez de assumir que o recurso está limpo. A linha de auditoria distingue os dois casos (“annotated columns” versus “unresolvable resource”) para que uma concessão recusada possa ser diagnosticada.
  • Um filter sobrescrito no cliente só consegue estreitar a consulta de um tile, nunca alargá-la.

Tiles de plugin numa App embutida

Se uma página de App contém um tile de plugin, o plugin é servido com escopo de token: o convidado consegue carregar exatamente os plugins referenciados pela App embutida e nada além. O mesmo sandbox e a mesma contenção por CSP valem dentro do embed.

Relacionado

  • Embutindo o Saiku — a referência completa do <saiku-embed>: tokens, eventos, theming, concessões públicas, React / Vue.
  • Visão geral do App Builder — construindo a App que você embute.
  • Plugins — o modelo de contenção para tiles com JS em sandbox.