⚠️ 注意:有限維護
本專案不再積極維護。雖然現有版本仍然可用,但沒有計劃進行更新、錯誤修復、新功能或安全補丁。使用者應注意,漏洞可能不會得到解決。
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 https://: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三個令牌為所有者提供了最大的使用靈活性,並使他們能夠根據需要調整令牌的使用。如果使用者只需要對已載入的模型執行推理,伺服器所有者可以向用戶提供推理令牌。如果所有者希望使用者能夠新增和刪除模型,伺服器所有者還可以向其提供管理金鑰。