自动预配新的 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"

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

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

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