API 密钥
kumosearch 支持创建具有精细访问控制的 API 密钥。您可以限制每个索引表、每个操作、每个记录甚至每个字段级别或这些级别的混合的访问。
阅读这篇 开发手册文章,详细了解如何管理 kumosearch 中的数据访问。
我们将使用您启动 kumosearch 时使用的初始引导密钥(通过 --api-key)来创建其他密钥。 强烈建议不要直接在生产应用程序中使用引导 API 密钥。相应地,建议为生产应用程序生成一个适当范围的 API 密钥。
创建 API 密钥
管理员密钥
首先,我们创建一个允许执行所有操作的 API 密钥,即它实际上是一个管理密钥,相当于您启动 kumosearch 时使用的密钥(通过 --api-key)。
- JavaScript
- Python
- Shell
key = client.keys().create({
'description': 'Admin key.',
'actions': ['*'],
'collections': ['*']
})
key = client.keys.create({
"description": "Admin key.",
"actions": ["*"],
"collections": ["*"]
})
curl 'http://localhost:8868/keys' \
-X POST \
-H "X-KUMOSEARCH-API-KEY: ${KUMOSEARCH_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{"description":"Admin key.","actions": ["*"], "collections": ["*"]}'
通过将 actions 和 collections 设置为通配符 ['*']范围,可以创建一个通用访问权限的管理密钥。但是,通常应该避免创建范围如此广泛的密钥。
生成的密钥仅在创建期间提供一次。需要将此密钥小心地存放在安全的地方。
仅限搜索 API 密钥
现在让我们看看如何创建仅搜索密钥,该密钥的范围限制为仅搜索操作,并且仅适用于特定索引表。
- JavaScript
- Python
- Shell
client.keys().create({
'description': 'Search-only companies key.',
'actions': ['documents:search'],
'collections': ['companies']
})
client.keys.create({
"description": "Search-only companies key.",
"actions": ["documents:search"],
"collections": ["companies"]
})
curl 'http://localhost:8868/keys' \
-X POST \
-H "X-KUMOSEARCH-API-KEY: ${KUMOSEARCH_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{"description":"Search-only companies key.","actions": ["documents:search"], "collections": ["companies"]}'
通过将 actions 范围设置为 ["documents:search"] 并将 collections 范围设置为 ["companies"],我们可以生成一个仅允许对 companies 索引表进行搜索的密钥。
响应示例
- json
{
"actions": [
"*"
],
"collections": [
"*"
],
"description": "Admin key.",
"expires_at": 64723363199,
"id": 1,
"value": "k8pX5hD0793d8YQC5aD1aEPd7VleSuGP"
}
索引表名称可以包含正则表达式。例如,如果您有多个以 org_ 开头的索引表,并且希望所有这些索引表共享一个公共密钥,可以这样定义权限:
{
"description": "Key for searching org collections.",
"actions": [
"documents:search"
],
"collections": [
"org_.*"
]
}
定义
POST ${KUMOSEARCH_HOST}/keys
参数
| 参数 | 必选 | 描述 |
|---|---|---|
| actions | 是 | 允 许的操作列表。请参阅下表了解可能的值。 |
| collections | 是 | 该密钥范围内的索引表列表。支持正则表达式。例如:coll.* 将匹配名称中包含 coll 的所有索引表。 |
| description | 是 | 用于识别密钥用途的内部描述。 |
| value | 否 | 默认情况下,如果未指定此参数,kumosearch 会自动为您生成一个随机密钥。如果您需要使用特定字符串作为密钥,则可以在创建密钥时使用此参数提及它。 |
| expires_at | 否 | Unix 时间戳 直到密钥有效。 |
| autodelete | 否 | 自动清除过期的密钥。每小时清除一次。默认值:false。 |
示例操作 actions
这是一个示例操作列表。
一般来说,您可以使用 resource:verb 模式来指示操作,其中 verb 可以是 create、delete、get、list、search 或 *。