如果您的 Apple 應用程式使用 Firebase ML 的雲端 API,請先採取幾個額外步驟來防範未經授權的 API 存取活動,再於正式環境中啟動應用程式。
1. 縮減現有 API 金鑰的範圍
首先,請設定現有的 API 金鑰,禁止存取 Cloud Vision API:
針對清單中的每個現有 API 金鑰,開啟編輯檢視畫面。
在「API 限制」部分,選取「限制金鑰」,然後將您希望 API 金鑰可存取的所有 API 新增至清單。請務必不要加入 Cloud Vision API。
設定 API 金鑰的 API 限制時,您會明確聲明金鑰可存取的 API。根據預設,如果「API 限制」部分選取「不要限制金鑰」,API 金鑰可用於存取專案啟用的任何 API。
現在,現有 API 金鑰不會授予雲端 ML 服務的存取權,但每個金鑰仍可繼續用於您加進其「API 限制」清單的任何 API。
請注意,日後啟用其他 API 時,必須將這些 API 加入適用 API 金鑰的「API 限制」清單。
2. 建立新的 API 金鑰,以便搭配 Firebase ML 使用
接著,為 Firebase ML 建立新的 API 金鑰,只允許呼叫 Cloud Vision API:
依序按一下「建立憑證」>「API 金鑰」。記下新的 API 金鑰,然後按一下「限制金鑰」。
在「API 限制」部分中,選取「限制金鑰」,然後在清單中只加入 Cloud Vision API。
這組 API 金鑰只會授予 Cloud Vision API 的存取權,且可供 Firebase ML 用來存取雲端模型。
3. 建議:減少 Cloud Vision API 配額
為減輕金鑰遭盜用造成的影響,建議您將 Cloud Vision API 的每位使用者配額調低至預設設定以下。方法如下:
開啟 Google Cloud 控制台的 Cloud Vision API 配額頁面。系統顯示提示訊息時,請選取您的專案。
在「要求」部分,將「每位使用者每分鐘的要求數」配額設為適合您應用程式的值。舉例來說,如果應用程式會上傳文件圖片並擷取文字,使用者不太可能每隔幾秒就執行這項操作,因此配額設為 30 到 40 應該很安全。
請注意,在此情境中,「每位使用者的要求數」是指來自單一 IP 位址的要求。如果預期多位使用者會透過 NAT 同時使用應用程式,您可能需要考慮這點。
4. 使用 Firebase ML API 金鑰呼叫 Cloud API
最後,在應用程式中設定 Firebase ML,使用新的 API 金鑰。
由於 Firebase ML API 金鑰允許未經驗證的 Cloud Vision API 存取權,因此請務必將金鑰保密,以免遭到未經授權的使用,導致帳單帳戶產生費用。為此,您應避免在應用程式二進位檔中加入 API 金鑰。請改為在應用程式執行階段驗證已登入的使用者是否為已知良好使用者,然後再從伺服器擷取 API 金鑰。
即使遵守這些做法,API 金鑰仍有可能遭盜用。您應採取相關措施,盡量減輕金鑰遭盜用造成的影響,例如如上所述減少每個使用者的 API 配額、實作金鑰輪替政策,以及為不同使用者群組核發不同的金鑰。
應用程式安全取得 API 金鑰後,如要呼叫 Firebase ML Cloud API,請指定金鑰:
Swift
if let cloudVisionKey = getYourApiKey() { // See note above about securing your API key
let options = VisionCloudDetectorOptions()
options.apiKeyOverride = cloudVisionKey
let cloudDetector = Vision.vision().cloudLandmarkDetector(options: options)
}
Objective-C
NSString *cloudVisionKey = [self getYourApiKey]; // See note above about securing your API key
if (cloudVisionKey != nil) {
FIRVisionCloudDetectorOptions *options =
[[FIRVisionCloudDetectorOptions alloc] init];
options.APIKeyOverride = cloudVisionKey;
FIRVisionCloudLandmarkDetector *landmarkDetector =
[vision cloudLandmarkDetectorWithOptions:options];
}
此外,您也應遵循「保護 API 金鑰」一文中的一般建議。
後續步驟
如要瞭解如何在使用其他 Firebase 功能時準備發布應用程式,請參閱發布檢查清單。