Provisionamento automático de uma nova instância do Looker

Como opção, na inicialização de uma nova instância do Looker, é possível provisioná-la automaticamente com uma chave de licença, um URL de host e uma conta de usuário inicial.

Como provisionar automaticamente uma nova instância com um usuário de e-mail

Na primeira inicialização, o Looker verifica se há um arquivo chamado provision.yml no diretório looker, onde está o arquivo JAR. O formato desse arquivo é o seguinte:

license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"
user:
  first_name: "Ariel"
  last_name: "Q"
  email: "arielq@altostrat.com"
  password: "password123"

Se a instância do Looker for nova e ainda não tiver sido configurada, ela será provisionada com a chave de licença e uma conta de usuário com as informações fornecidas.

Se a Looker já tiver sido provisionada, os valores da chave de licença e do URL do host substituirão a chave de licença e o URL do host já definidos. As informações do usuário serão ignoradas. Isso é útil para atualizar uma instância de teste do Looker com uma nova cópia do banco de dados interno de uma instância de produção, mantendo uma chave de licença e um URL separados para o servidor de preparo.

Como provisionar automaticamente uma nova instância com um usuário de API

Na inicialização de uma nova instância do Looker, é possível provisionar um usuário inicial da API de maneira programática. É possível provisionar um usuário da API OU um usuário de e-mail, mas o Looker não é compatível com o aprovisionamento de um usuário da API e um usuário de e-mail ao mesmo tempo.

Como gerar credenciais de API

Para provisionar um usuário de API, gere um ID e uma chave secreta do cliente que o Looker lerá e salvará no banco de dados. Os requisitos dessas credenciais são:

  • O ID do cliente precisa ter 20 caracteres.
  • A chave secreta do cliente precisa ter 24 caracteres.
  • Ambas as strings precisam ser incluídas no corpo de uma solicitação POST. Portanto, é recomendável usar apenas caracteres alfanuméricos.

Por exemplo, o Looker usa o seguinte código para gerar essas credenciais de maneira programática:

require 'securerandom'

TOKEN_SYMBOLS = "bcdfghjkmnpqrstvwxyzBCDFGHJKMNPQRSTVWXYZ23456789".freeze

def generate_token(size)
  Array.new(size).map { TOKEN_SYMBOLS[SecureRandom.random_number(TOKEN_SYMBOLS.size)] }.join
end

O código acima evita caracteres ambíguos para tornar as strings menos suscetíveis a erros.

Também é possível gerar strings adequadas usando o comando openssl:

openssl rand -hex 10

O número no final do comando openssl é o número de bytes na string. Portanto, use 10 para o ID do cliente e 12 para a chave secreta do cliente.

Como provisionar o usuário da API

Para provisionar um usuário de API na inicialização, verifique se você tem um arquivo provision.yml que inclui a chave de licença e o URL do host no diretório looker. Exemplo:

license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"

Crie um arquivo chamado api-provision.yml com as permissões 0600 no diretório looker que inclui as informações do usuário da API. Exemplo:

user:
  first_name: "Ariel"
  last_name: "Q"
  client_id: "M9hZb8vRh9bSZzdPxw42"
  client_secret: "NMnqBVbHqPsPzTvbZk6xZfV3"

Recomendamos que você armazene essas credenciais em um gerenciador de secrets fora desse arquivo, porque ele será removido na inicialização depois que a instância do Looker tiver processado e criado o usuário no banco de dados.

Na inicialização, se a instância estiver vazia e não houver usuários, o Looker criará um usuário da API Admin com essas credenciais e removerá o arquivo api-provision.yml do disco.

Você terá 30 minutos para usar essas credenciais para fazer o provisionamento adicional antes que elas sejam removidas do banco de dados interno e não possam mais ser usadas. A remoção dessas credenciais iniciais evita a criação de um backdoor de longa duração no aplicativo e mantém o caso de uso pretendido estritamente para provisionamento.