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:
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.piido 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
filtersobrescrito 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.