Com a análise incorporada do Looker, você permite que usuários e clientes explorem dados incorporados a um iframe em qualquer página da Web, portal ou aplicativo formatado em HTML. O iframe executa todo o aplicativo do Looker, solicitando apenas os dados necessários para exibir a consulta. Por design, um iframe não tem permissão para ler ou gravar dados do site ou aplicativo externo.
A incorporação de dados às vezes pode apresentar problemas de privacidade ou segurança. Para atenuar essas preocupações, recomendamos que os administradores do Looker sigam estas práticas recomendadas:
- Se você estiver incorporando conteúdo do Looker para clientes, configure o conteúdo do cliente em uma instância do Looker separada da que você usa para análises internas.
- Conecte apenas dados à instância incorporada do Looker que devem ser acessíveis pelos usuários incorporados, que podem ser o público.
- Proteja os tokens aleatórios em URLs de incorporação públicos como se fossem credenciais do usuário e desative URLs públicos se eles não forem usados.
- Um valor
external_user_id
atribuído precisa ser exclusivo para cada conjunto de permissões, atributos do usuário e modelos. Verifique se você não está usando o mesmoexternal_user_id
em diferentes sessões de incorporação para diferentes usuários interativos e se não está usando o mesmoexternal_user_id
para um único usuário com permissões, valores de atributo do usuário ou acesso ao modelo diferentes. - Ative um sistema fechado.
- Proteja o secreto de incorporação assinado como se fossem credenciais de administrador da sua instância de Looker incorporada e mantenha a incorporação assinada desativada se você não estiver usando.
- Use a autenticação forte para suas instâncias incorporadas do Looker (incorporação assinada, SAML, Google OAuth, 2FA).
- Se você estiver usando a incorporação sem cookies, proteja o token de referência da sessão para que ele só seja acessível no servidor de hospedagem do aplicativo incorporado. O token de referência da sessão nunca deve ser exposto no navegador.
- Se você estiver usando a incorporação sem cookies e definir o domínio de incorporação permitido ao adquirir a sessão sem cookies, nunca confie na origem do navegador do usuário da incorporação. Sempre mantenha um mapeamento do usuário de incorporação para a origem confiável do usuário no servidor do aplicativo de incorporação.
O Looker oferece diferentes tipos de métodos de incorporação, dependendo do nível de autenticação exigido dos usuários que acessam seus dados: público, privado e incorporação assinada. Com qualquer um desses métodos, é possível interagir com o iframe usando JavaScript.
Incorporação pública
Se a opção Acesso público de um visual estiver ativada,você poderá incorporar uma visualização ou tabela de dados a um site externo usando uma tag iframe HTML. Também é possível compartilhar publicamente o URL do Look ou importar dados para aplicativos de planilhas do Google ou Excel.
O URL e o URL incorporado na tag iframe
contêm um token aleatório e não podem ser adivinhados, mas qualquer pessoa com o URL incorporado pode acessar os dados, e nenhuma filtragem ou restrição adicional é aplicada. Recomendamos considerar as implicações de segurança da criação e do compartilhamento de um URL público para um determinado visual antes de ativar os URLs públicos.
Os URLs públicos e os URLs de incorporação públicos nunca expiram e não podem ser revogados. Ao compartilhar um URL público, você compartilha a consulta,não os dados.
Incorporação particular
Se você não quiser permitir o acesso público ao seu Look, também poderá incorporar um Look ou uma Análise ou um painel de forma privada em um iframe, para que seja necessário fazer login no Looker para acessar o conteúdo.
Os usuários autenticados só podem acessar o conteúdo determinado pelas permissões atribuídas no Looker. Se você mudar as permissões no Looker, o URL de incorporação não vai mudar, mas o que o usuário pode acessar pode mudar.
Se o usuário não estiver autenticado, você poderá mostrar um erro ou uma tela de login no iframe. No entanto, ativar uma tela de login no iframe não é compatível com as proteções de mesma origem do Looker.
Os URLs de incorporação privados nunca expiram e não podem ser revogados. No entanto, como o link só funciona para alguém que tem acesso à sua instância do Looker e aos dados, o envio de um link não deve causar problemas de segurança.
Incorporação assinada
Entre em contato com um especialista em vendas do Google Cloud para atualizar sua licença para esse recurso.
A incorporação assinada leva a incorporação privada um passo adiante. A incorporação assinada não exige que os usuários façam autenticação usando uma conta de usuário do Looker. Em vez disso, eles podem ser autenticados pelo seu próprio aplicativo usando o URL em um iframe. A autenticação cria uma nova sessão do navegador e emite um cookie para ele.
As permissões, os identificadores e os atributos do usuário são transmitidos como parâmetros no URL, que é assinado com uma chave secreta. Qualquer pessoa com acesso à chave secreta pode criar um URL para acessar qualquer modelo ao qual a instância do Looker está conectada, como qualquer usuário, com qualquer permissão. Consulte nosso exemplo de código para saber como gerar URLs assinados.
O clickjacking é um problema de segurança do navegador que pode acontecer quando um código incorporado ou um script executa uma função sem o conhecimento ou consentimento do usuário, como um botão que parece fazer outra coisa. O clickjacking geralmente exige um URL estático. O URL gerado para uma incorporação assinada é secreto e só o usuário que está visualizando a incorporação pode ter acesso a ele. O uso da incorporação assinada não aumenta o risco de clickjacking para o site externo.
Parâmetros de incorporação assinados
Os parâmetros incluídos no URL do iframe são visíveis para os usuários de incorporação, mas não são editáveis. Esses fatos podem incluir:
user_attributes
: são usados para filtrar ainda mais os dados. Osuser_attributes
são poderosos, então considere como eles podem ser aplicados à sua instância do Looker.session_length
: mantenha o tempo mínimo necessário.
Alguns parâmetros, como user_attributes
, podem ser ocultos na interface, mas ainda serão codificados no URL de incorporação. Isso pode ser indesejável se, por exemplo, uma senha for um valor no user_attribute
de um usuário. Uma maneira de contornar isso é criar um grupo temporário, definir a senha como um atributo no nível do grupo e transmitir o ID do grupo no URL de incorporação. Você pode excluir o grupo após a sessão de incorporação para evitar um excesso de grupos inativos.
A parte assinada do URL contém um carimbo de data/hora. Depois que o URL for usado para fazer login, esse horário precisa estar dentro de +/- 5 minutos do horário atual. É possível especificar em session_length
por quanto tempo a sessão de incorporação pode durar a partir do momento em que o URL é usado para fazer login.
Como gerenciar o acesso de incorporação assinado
Ao criar o URL para seu conteúdo incorporado:
- Use o nível mais baixo de permissões necessário.
- Atribua acesso apenas aos modelos específicos que o usuário precisa acessar.
- Use
group_ids
para atribuir um usuário a um grupo e permitir que o usuário incorporado controle o acesso à pasta do Looker.
API Looker
Com a API do Looker, é possível permitir o acesso ao conteúdo incorporado usando um aplicativo proxy ou um servidor proxy reverso. Nesse cenário, a autenticação é realizada usando chaves de API, que estão vinculadas a um usuário específico e têm as mesmas permissões que o usuário que as gerou. As chaves de API são compostas por um ID e uma chave secreta do cliente.
Como gerenciar o acesso de incorporação usando a API
Ao permitir o acesso ao conteúdo incorporado usando a API do Looker, recomendamos:
- Criar contas de serviços dedicadas para acesso programático à API com o conjunto mínimo de privilégios necessários.
- Proteger o ID e a chave secreta do cliente que compõem a chave de API (se a autenticação for com um SDK).
Todos os atributos de usuário definidos para usuários incorporados que usam a API, mas não especificados no URL de incorporação assinado, são redefinidos para os valores padrão na próxima vez que o URL de incorporação assinado for acessado.
Eventos JavaScript incorporados
Depois de configurar o iframe de incorporação (público, privado, com incorporação assinada ou pela API), é possível interagir com esse iframe usando JavaScript. Para validar se as informações com que você está trabalhando realmente vieram do iframe do Looker, escute os eventos do JavaScript.
Ao adicionar domínios à lista de permissões, use o caractere curinga para permitir que apenas subdomínios específicos acessem seus eventos JavaScript.
Se você estiver usando a função eval
do JavaScript, verifique se o valor da string no argumento eval
é de uma fonte confiável, como o servidor do Looker ou o CDN, e se está sob transporte HTTPS.
Nenhum dado do cliente passa pelas CDNs do Looker. Somente os recursos estáticos do aplicativo da Web do Looker, como código JavaScript, páginas HTML e estilos CSS, são veiculados pelo CDN.
Implantações hospedadas pelo cliente
Hospedar sua própria instância do Looker pode parecer a maneira segura de bloquear o acesso aos dados, especialmente o conteúdo incorporado. No entanto, se os usuários precisarem acessar o URL de incorporação pela Internet, não há vantagens especiais em hospedar o Looker.
As implantações hospedadas pelo cliente podem ser mais adequadas quando:
- Os usuários não precisam acessar o Looker pela Internet.
- Você está usando o front-end do Looker e acessando o conteúdo incorporado usando a API.