自动预配新的 Looker 实例

(可选)在新 Looker 实例启动时,您可以为该实例自动配置许可密钥、主机网址和初始用户帐号。

自动为电子邮件用户预配新实例

初次启动时,Looker 会在 JAR 文件所在的 looker 目录中扫描名为 provision.yml 的文件。该文件的格式如下:

license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"
user:
  first_name: "Katie"
  last_name: "Woolsey"
  email: "kwoolsey@benaventi.com"
  password: "password123"

如果 Looker 是全新的,但尚未设置,则系统将使用指定的许可密钥和具备所需信息的用户帐号进行配置。

如果已经配置了 Looker,许可密钥和主机网址值会覆盖当前设置的任何许可密钥和主机网址。系统会忽略用户信息。这对于使用生产实例内部数据库的最新副本更新 Looker 的预演实例,同时仍然为预演服务器维护单独的许可密钥和网址非常有用。

自动为 API 用户预配新实例

在新 Looker 实例启动时,您可以通过编程方式配置初始 API 用户。您可以配置 API 用户或电子邮件用户,但 Looker 不支持同时配置 API 用户和电子邮件用户。

生成 API 凭据

如需配置 API 用户,请生成客户端 ID 和客户端密钥,Looker 将读取并将消息保存到数据库。这些凭据的要求如下:

  • 客户端 ID 的长度必须为 20 个字符。
  • 客户端密钥的长度必须为 24 个字符。
  • 两个字符串都必须能够添加到 POST 请求的正文中,因此建议仅使用字母数字字符。

例如,Looker 使用以下代码以编程方式生成这些凭据:

require 'securerandom'

TOKEN_SYMBOLS = "bcdfghjkmnpqrstvwxyzBCDFGHJKMNPQRSTVWXYZ23456789".freeze

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

上述代码避免了不明确的字符,使字符串不太容易出错。

您还可以使用 openssl 命令生成适当的字符串:

openssl rand -hex 10

openssl 命令末尾的数字是字符串中的字节数,因此请使用 10 作为客户端 ID,使用 12 作为客户端密钥。

配置 API 用户

如需在启动时配置 API 用户,请确保您在 looker 目录中有一个包含许可密钥和主机网址的 provision.yml 文件。例如:

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

looker 目录中创建一个名为 api-provision.yml 且包含 0600 权限的文件,其中包含 API 用户信息。例如:

user:
  first_name: "Katie"
  last_name: "Woolsey"
  client_id: "M9hZb8vRh9bSZzdPxw42"
  client_secret: "NMnqBVbHqPsPzTvbZk6xZfV3"

我们建议您将这些凭据存储在此文件之外的 Secret 管理器中,因为一旦 Looker 实例处理完毕并在数据库中创建用户,此文件就会在启动时移除。

在启动时,如果实例为空且没有用户,Looker 会使用这些凭据创建 Looker Admin API 用户,并从磁盘中移除 api-provision.yml 文件。

然后,您需要在 30 分钟内使用这些凭据进行额外配置,然后凭据才会从内部数据库中移除且不再可用。移除这些初始凭据可以避免在应用中创建长期存在的后门程序,并可将预期用例严格限制在预配范围内。