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

Com a análise incorporada do Looker, seus usuários e clientes podem explorar os dados incorporados em um iframe em qualquer página da Web, portal ou aplicativo formatado em HTML. O iframe executa todo o aplicativo Looker, solicitando apenas os dados necessários para mostrar sua consulta. Por padrão, um iframe não tem permissão para ler ou gravar dados do seu site ou aplicativo externo.

A incorporação de dados pode, às vezes, apresentar preocupações com a privacidade ou a segurança. Para reduzir essas preocupações, recomendamos que os administradores do Looker sigam estas práticas recomendadas:

  • Se estiver incorporando conteúdo do Looker aos clientes, configure-o em uma instância separada do Looker da instância usada para análises internas.
  • Conecte somente dados à instância incorporada do Looker que devem ser acessíveis pelos usuários incorporados, que podem ser o público.
  • Proteger os tokens aleatórios em URLs incorporados públicos como se fossem credenciais do usuário e desativar 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 de usuário e modelos. Verifique se você não está usando a mesma external_user_id em diferentes sessões de incorporação de usuários interativos e se não está usando a mesma external_user_id para um único usuário com diferentes permissões, valores de atributos ou acesso a modelos.
  • Ative um sistema fechado.
  • Proteja o secret de incorporação assinado como se fosse uma credencial de administrador da instância incorporada do Looker e mantenha a incorporação assinada desativada se ela não estiver em uso.
  • 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ó possa ser acessado no servidor host do aplicativo incorporado. O token de referência da sessão nunca pode ser exposto no navegador.
  • Se você estiver usando a incorporação sem cookies e configurando o domínio de incorporação permitido ao adquirir a sessão sem cookies, nunca confie na origem do navegador do usuário de incorporação. Sempre mantenha um mapeamento do usuário incorporado para a origem confiável dele no servidor de aplicativos 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úblicos, privados 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 do Look ativada,é possível incorporar uma visualização ou tabela de dados a um site externo usando uma tag HTML iframe. Também é possível compartilhar publicamente o URL do Look ou importar dados para aplicativos de planilha 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, 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 Look antes de ativar URLs públicos.

Os URLs públicos e os URLs incorporados 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 é possível incorporar um Look, um Explore ou um painel de maneira particular em um iframe. Dessa forma, será necessário fazer login no Looker para acessar o conteúdo.

Os usuários autenticados só podem acessar o conteúdo ditado pelas permissões do Looker atribuídas. Se você mudar as permissões dele no Looker, o URL de incorporação 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ê pode 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 particular nunca expiram e não podem ser revogados. No entanto, como o link funciona apenas para alguém que tem acesso à sua instância do Looker e a esses dados, o envio de um link não deve causar uma preocupação de segurança.

Incorporação assinada

Entre em contato com um especialista em vendas do Google Cloud para atualizar sua licença desse recurso.

A incorporação assinada leva a incorporação particular um passo a frente. A incorporação assinada não exige que os usuários façam a autenticação com uma conta de usuário do Looker. Em vez disso, eles podem ser autenticados por meio do 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 usuário com acesso à chave secreta pode criar um URL para acessar qualquer modelo ao qual a instância do Looker esteja conectada, como qualquer usuário, com qualquer permissão. Veja 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 ou script incorporado executa uma função sem o conhecimento ou consentimento do usuário, como um botão que parece fazer outra coisa. O clickjacking geralmente requer um URL estático. O URL gerado para uma incorporação assinada é secreto, e apenas o usuário que visualiza a incorporação deve tê-lo. Usar a 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 incorporados, mas não são editáveis. Esses fatos podem incluir:

  • user_attributes: são usados para filtrar ainda mais os dados. As user_attributes são eficientes, então considere como elas se aplicam à sua instância do Looker.
  • session_length: mantenha o tempo mínimo necessário.

Alguns parâmetros, como user_attributes, podem ficar ocultos na UI, mas ainda seriam codificados no URL incorporado. Isso pode ser indesejável se, por exemplo, uma senha for um valor no user_attribute de um usuário. Uma forma de resolver 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 o excesso de grupos inativos.

A parte assinada do URL contém um carimbo de data/hora. Quando o URL for usado para fazer login, esse horário precisará ser de aproximadamente cinco minutos a partir do horário atual. Você pode especificar em session_length 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 assinada

Ao criar o URL para seu conteúdo incorporado:

  • Use o nível mais baixo de permissões necessário.
  • Atribua acesso somente aos modelos específicos que o usuário pode acessar.
  • Use group_ids para atribuir um usuário a um grupo e permitir que o usuário da incorporação controle o acesso à pasta do Looker.

API Looker

Com a API do Looker, é possível ativar o acesso ao conteúdo incorporado usando um aplicativo proxy ou um servidor proxy reverso. Neste cenário, a autenticação é realizada usando chaves de API, que são vinculadas a um usuário específico e têm as mesmas permissões do usuário que as gera. As chaves de API são compostas por um ID do cliente 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 o seguinte:

  • 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 (no caso de autenticação com um SDK).

Todos os atributos do usuário definidos para usuários de incorporação usando a API, mas não especificados no URL de incorporação assinada, 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 incorporado (publicamente, de modo privado, com incorporação assinada ou por meio da API), você pode interagir com esse iframe usando JavaScript. Para confirmar que as informações com que você está trabalhando realmente vêm do iframe do Looker, é possível detectar os eventos JavaScript.

Ao adicionar domínios à lista de permissões, use o caractere curinga para permitir que apenas subdomínios específicos acessem os eventos JavaScript.

Se você estiver usando a função eval JavaScript, confira se o valor da string no argumento eval é de uma fonte confiável, como o servidor do Looker ou a CDN, e está no transporte HTTPS.

Os dados do cliente nunca passam pelas CDNs do Looker. Somente os recursos estáticos de aplicativos da Web do Looker (código JavaScript, páginas HTML, estilos CSS) são veiculados pela CDN.

Implantações hospedadas pelo cliente

Hospedar sua própria instância do Looker pode parecer uma maneira segura de bloquear o acesso aos dados, especialmente conteúdo incorporado. No entanto, caso seus usuários precisem acessar o URL incorporado pela Internet, não há vantagens especiais em hospedar o Looker por conta própria.

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

  • Os usuários não precisam acessar o Looker pela Internet.
  • Você está usando a interface de front-end do Looker e acessa conteúdo incorporado usando a API.