自动预配新的 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 命令末尾处的数字是字符串中的字节数,因此请使用 10 表示客户端 ID,使用 12 表示客户端密钥。

配置 API 用户

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

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

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

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

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

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

然后,您有 30 分钟的时间来使用这些凭据进行额外的预配,这些凭据从内部数据库中移除且无法再使用。移除这些初始凭据可以避免在应用中创建长期存在的后门,并可确保应用仅保留预期的使用场景。