菜单
开源 RSS

k6/secrets

k6/secrets 模块提供了对已配置 Secret Source 提供的 Secret 的访问。

属性描述
get([String])异步地从默认 Secret Source 获取 Secret
source([String])返回指定名称的 Secret Source,然后可用于从具体 Secret Source 获取 Secret

get

get 从默认 Secret Source 返回指定名称的 Secret 值。如果没有默认 Secret Source,或者没有该名称的 Secret,或者返回了其他错误,则会抛出异常。

source

source 返回指定名称的 Secret Source。该名称在运行 k6 时定义。

返回的对象有一个 get 方法,其功能与全局 get 相同

示例

一个简单示例,从默认源(如果已定义)按名称获取 Secret。

JavaScript
import secrets from 'k6/secrets';

export default async () => {
  const my_secret = await secrets.get('my_secret'); // get from 1 secret source if only 1, exception if more than 1 secret source or if no secret sources
  console.log(my_secret);
};

我们也可以按名称获取 Secret Source,然后专门从该 Secret Source 获取 Secret。

JavaScript
import secrets from 'k6/secrets';

export default async () => {
  const my_secret = await secrets.source('identifier').get('my_secret'); // get secret from a source with the provided identifier
  console.log(my_secret);
};

在这两种情况下,最终日志中输出的所有 Secret 都将替换为 ***SECRET_REDACTED***

包含多个 Secret Source 和名称的完整示例

JavaScript
import secrets from 'k6/secrets';

export default async () => {
  const my_secret = await secrets.get('cool'); // get secret from a source with the provided identifier
  console.log(my_secret == 'cool secret');
  const anothersource = await secrets.source('another');
  console.log((await anothersource.get('cool')) == 'cool secret');
  console.log((await anothersource.get('cool')) == 'not cool secret');
};

如果运行,我们将看到从默认 Secret Source 获取到一个 Secret,而从非默认 Secret Source 获取到另一个不同的 Secret。这也表明,脚本的内部部分可以使用 Secret 的实际值,即使它在日志中被隐藏了。

bash
$ k6 run --secret-source=mock=default,cool="cool secret" --secret-source=mock=name=another,cool="not cool secret" multi-source.test.js
...
INFO[0000] true                                          source=console
INFO[0000] false                                         source=console
INFO[0000] true                                          source=console