Práticas recomendadas de segurança para análise incorporada

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 definição, 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 separada do Looker da instância que você usa para análises internas.
  • Conecte dados apenas à instância incorporada do Looker que deve estar acessível aos usuários de incorporação, que podem ser o público em geral.
  • Proteja os tokens aleatórios nos URLs de incorporação públicos como se fossem credenciais de usuário e desative os 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. Não use o mesmo external_user_id em diferentes sessões de incorporação para usuários interativos diferentes. Além disso, não use o mesmo external_user_id para um único usuário com permissões, valores de atributos do usuário ou acesso ao modelo diferentes.
  • Ative um sistema fechado.
  • Proteja o segredo de incorporação assinada como se fossem credenciais de administrador da sua instância incorporada do Looker e mantenha a incorporação assinada desativada se você não estiver usando.
  • Use autenticação forte para suas instâncias incorporadas do Looker (incorporação assinada, SAML, OAuth do Google, 2FA).
  • Se você estiver usando uma incorporação sem cookies, proteja o token de referência da sessão para que ele só possa ser acessado no servidor host 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 definindo o domínio de incorporação permitido ao adquirir a sessão sem cookies, nunca confie na origem do navegador do usuário incorporado. Sempre mantenha um mapeamento do usuário incorporado para a origem confiável dele no servidor de aplicativos incorporado.

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

Com a opção Acesso público de um Look ativada,é possível incorporar uma visualização ou uma tabela de dados a um site externo usando uma tag iframe HTML. Você também pode compartilhar publicamente o URL da análise ou importar dados para aplicativos de planilhas do Google ou do Excel.

O URL e o URL de incorporação na tag iframe contêm um token aleatório e não podem ser adivinhados. No entanto, qualquer pessoa com o URL de incorporação pode acessar os dados, e não há filtragem ou restrições adicionais. Recomendamos considerar as implicações de segurança da criação e do compartilhamento de um URL público para uma análise detalhada antes de ativar os URLs públicos.

Os URLs públicos e de incorporação pública nunca expiram e não podem ser revogados. Ao compartilhar um URL público, você compartilha a consulta,não os dados reais.

Incorporação particular

Se você não quiser permitir o acesso público a um Look, também é possível incorporar um Look, uma análise detalhada ou um painel de forma particular em um iframe. Assim, um login do Looker é necessário para acessar o conteúdo.

Os usuários autenticados só podem acessar o conteúdo determinado pelas permissões do Looker atribuídas a eles. Se você mudar as permissões no Looker, o URL incorporado não vai mudar, mas o que o usuário pode ver ao acessar o URL 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 particulares nunca expiram e não podem ser revogados. No entanto, como o link só funciona para quem 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 e usar esse recurso.

O incorporação assinada vai um passo além da incorporação privada. Ela não exige que os usuários façam a 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 a que a instância do Looker esteja conectada, como qualquer usuário, com qualquer permissão. Consulte nosso exemplo de código para saber como gerar URLs assinados.

Clickjacking é um problema de segurança do navegador que pode ocorrer 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 deve ter acesso a ele. O uso do encadeamento assinado não aumenta o risco de clickjacking para o site externo.

Parâmetros de incorporação assinada

Os parâmetros incluídos no URL do iframe ficam visíveis para os usuários da incorporação, mas não podem ser editados. Esses fatos podem incluir:

  • user_attributes: são usados para filtrar ainda mais os dados. user_attributes são poderosos. Por isso, pense em como eles podem ser aplicados à sua instância do Looker.
  • session_length: mantenha esse valor no mínimo necessário.

Alguns parâmetros, como user_attributes, podem ser ocultados na UI, mas ainda seriam codificados no URL de incorporação. Isso pode ser indesejável se, por exemplo, uma senha for um valor dentro do 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 incorporado. Você pode excluir o grupo após a sessão de incorporação para evitar um excesso de grupos expirados.

A parte assinada do URL contém um carimbo de data/hora. Depois que o URL é usado para fazer login, esse horário precisa ser de +/- 5 minutos do horário atual. Você pode especificar em session_length quanto tempo a sessão de incorporação pode durar desde o momento em que o URL é usado para fazer login.

Gerenciar o acesso de incorporação assinada

Ao criar o URL do 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 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 ativar o acesso ao conteúdo incorporado usando a API do Looker, recomendamos:

  • Criar contas de serviço dedicadas para acesso programático à API com o conjunto mínimo de privilégios necessários.
  • Proteção do ID do cliente e do chave secreta do cliente que compõem a chave de API (se a autenticação for feita com um SDK).

Todos os atributos de usuário definidos para usuários incorporados usando a API, mas não especificados no URL de incorporação assinado, são redefinidos para os valores padrão quando o URL de incorporação assinado é acessado novamente.

Eventos JavaScript incorporados

Depois de configurar o iframe de incorporação (publicamente, de forma particular, com incorporação assinada ou pela API), é possível interagir com ele usando JavaScript. Para validar se as informações com que você está trabalhando realmente vieram do iframe do Looker, ouça os eventos 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 ou a CDN do Looker, e está em transporte HTTPS.

Nenhum dado do cliente passa pelas CDNs do Looker. Somente os recursos estáticos do aplicativo Web do Looker (código JavaScript, páginas HTML, estilos CSS) são veiculados da CDN.

Implantações hospedadas pelo cliente

Hospedar sua própria instância do Looker pode parecer a maneira mais 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 haverá vantagens especiais em hospedar o Looker por conta própria.

As implantações hospedadas pelo cliente podem ser mais adequadas quando:

  • Seus usuários não precisam acessar o Looker usando a Internet.
  • Você está usando o Looker e acessando conteúdo incorporado usando a API.