自动预配新的 Looker 实例

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

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

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

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"

如果 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 命令末尾的数字是字符串中的字节数,因此请为客户端 ID 使用 10,为客户端密钥使用 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: "Ariel"
  last_name: "Q"
  client_id: "M9hZb8vRh9bSZzdPxw42"
  client_secret: "NMnqBVbHqPsPzTvbZk6xZfV3"

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

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

然后,您有 30 分钟的时间使用这些凭据进行额外的预配,之后这些凭据会从内部数据库中移除且无法再使用。移除这些初始凭据可避免在应用中创建长期有效的后门,并将预期用例严格限制为配置。