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
标志来禁用令牌授权。配置属性文件:使用
disable_token_authorization
并将其设置为true
以禁用,设置为false
以启用令牌授权。
环境变量、cmd 和配置文件之间的优先级遵循以下 TorchServer 标准
示例 1
配置文件:
disable_token_authorization=false
命令行:
torchserve --start --ncs --model-store model_store --disable-token-auth
结果:通过命令行禁用令牌授权,但通过配置文件启用令牌授权,导致令牌授权被禁用。命令行优先级更高
示例 2
配置文件:
disable_token_authorization=true
命令行:
torchserve --start --ncs --model-store model_store
结果:通过配置文件禁用令牌授权,但未通过命令行配置令牌授权,导致令牌授权被禁用。
配置¶
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。请查看第 4 节以了解 API 用法。
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
三个令牌允许所有者拥有最大的使用灵活性,并使他们能够根据自己的使用情况调整令牌。如果用户应该只能对已加载的模型运行推理,则服务器所有者可以向用户提供推理令牌。如果所有者希望用户添加和删除模型,则所有者还可以向所有者提供管理密钥。