⚠️ 注意:有限维护
本项目不再积极维护。虽然现有版本仍然可用,但没有计划进行更新、错误修复、新功能或安全补丁。用户应注意,漏洞可能不会得到解决。
TorchServe 令牌授权 API¶
TorchServe 现在默认强制执行令牌授权
TorchServe 默认强制执行令牌授权,这要求在调用 API 时提供正确的令牌。这是一项安全功能,解决了未经授权的 API 调用问题。这适用于未经授权的用户可能尝试访问正在运行的 TorchServe 实例的场景。默认行为是启用此功能,它会创建一个包含用于 API 调用的适当令牌的密钥文件。用户可以禁用此功能,以防止 API 调用需要令牌授权(如何禁用),但警告用户,这将使 TorchServe 面临潜在的未经授权的 API 调用风险。
如何设置和禁用令牌授权¶
全局环境变量:使用
TS_DISABLE_TOKEN_AUTHORIZATION
并设置为true
可禁用,设置为false
可启用令牌授权。请注意,必须在 config.properties 中设置enable_envvars_config=true
,以便使用全局环境变量命令行:命令行只能通过添加
--disable-token-auth
标志来禁用令牌授权。config.properties 文件:使用
disable_token_authorization
并设置为true
可禁用,设置为false
可启用令牌授权。
环境变量、命令行和 config 文件之间的优先级遵循以下 TorchServe 标准
示例 1
config 文件:
disable_token_authorization=false
命令行:
torchserve --start --ncs --model-store model_store --disable-token-auth
结果:通过命令行禁用令牌授权,但通过 config 文件启用,最终结果是令牌授权被禁用。命令行具有优先级
示例 2
config 文件:
disable_token_authorization=true
命令行:
torchserve --start --ncs --model-store model_store
结果:通过 config 文件禁用令牌授权,但命令行未配置,最终结果是令牌授权被禁用。
配置¶
TorchServe 默认会启用令牌授权。预期的日志语句是
main org.pytorch.serve.http.TokenAuthorizationHandler - Token Authorization Enabled
在当前工作目录下会生成一个文件
key_file.json
。密钥文件示例
{
"management": {
"key": "B-E5KSRM",
"expiration time": "2024-02-16T21:12:24.801167Z"
},
"inference": {
"key": "gNRuA7dS",
"expiration time": "2024-02-16T21:12:24.801148Z"
},
"API": {
"key": "yv9uQajP"
}
}
有 3 个密钥,每个都有不同的用途。
管理密钥:用于管理 API。示例:
curl http://localhost:8081/models/densenet161 -H "Authorization: Bearer I_J_ItMb"
推理密钥:用于推理 API。示例:
curl http://127.0.0.1:8080/predictions/densenet161 -T examples/image_classifier/kitten.jpg -H "Authorization: Bearer FINhR1fj"
API 密钥:用于令牌授权 API。有关 API 的使用,请参阅第 4 节。
该 API 用于生成新的密钥,以替换管理密钥或推理密钥。
管理密钥示例:
curl localhost:8081/token?type=management -H "Authorization: Bearer m4M-5IBY"
将替换 key_file 中当前的管理密钥,并更新过期时间。推理密钥示例:
curl localhost:8081/token?type=inference -H "Authorization: Bearer m4M-5IBY"
用户必须使用上述任一 API。
当用户关闭服务器时,key_file 将被删除。
注意事项¶
不要修改密钥文件。修改密钥文件可能会影响对文件的读写,从而阻止新密钥正常显示在文件中。
过期时间默认为 60 分钟,但可以通过在 config.properties 中添加
token_expiration_min
来更改。例如:token_expiration_min=30
三个令牌为所有者提供了最大的使用灵活性,并使他们能够根据需要调整令牌的使用。如果用户只需要对已加载的模型运行推理,服务器所有者可以向用户提供推理令牌。如果所有者希望用户能够添加和删除模型,服务器所有者还可以向其提供管理密钥。