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
cmd line:
torchserve --start --ncs --model-store model_store --disable-token-auth
結果:透過命令列停用令牌授權,但透過設定檔啟用,導致令牌授權被停用。命令列優先
範例 2
設定檔:
disable_token_authorization=true
cmd line:
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 https://127.0.0.1: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
三個令牌讓擁有者在使用上具有最大的彈性,並使其能夠根據自身用途調整令牌。如果使用者只能對已載入的模型執行推論,伺服器的擁有者可以向使用者提供推論令牌。如果擁有者希望使用者新增和移除模型,也可以向擁有者提供管理金鑰。