API 金鑰的使用原因與時機

本頁提供 API 金鑰與驗證的背景資訊:即每種方法的使用方式、兩者之間的差異以及您應考量使用 API 金鑰的情境。

API 金鑰適用於專案,驗證則用於使用者

Google Cloud Endpoints 會處理 API 金鑰與驗證機制,例如 Firebase 或 Auth0,而 API 金鑰與驗證機制之間的主要差異在於:

  • API 金鑰用於識別發出呼叫的專案,也就是呼叫 API 的應用程式或網站。

  • 驗證憑證用於識別使用者,即應用程式或網站的使用者。

    API 金鑰總覽

API 金鑰提供專案授權

請務必瞭解 API 金鑰和驗證的功能,以判斷哪種機制最適合您。

API 金鑰提供以下功能:

  • 專案識別:識別呼叫 API 的應用程式或專案。

  • 專案授權:檢查發出呼叫的應用程式是否已獲得呼叫 API 的權限,以及該應用程式是否已在專案中啟用 API。

API 金鑰的安全性不如驗證憑證 (請參閱 API 金鑰的安全性一節),不過可識別呼叫 API 的應用程式或專案。只要專案發出呼叫,系統就會產生金鑰。您可以限制金鑰的使用環境,例如在某個 IP 位址範圍內,或是在某個 Android 或 iOS 應用程式中使用。

您可以識別發出呼叫的專案,以透過 API 金鑰將使用資訊與相關專案建立關聯。如果專案尚未獲得存取權或未啟用 API,則 API 金鑰可讓可擴充服務 Proxy (ESP) 拒絕這類專案發出的呼叫。

使用者驗證

相較之下,常見的驗證機制用途有兩種:

  • 使用者驗證:以安全的方式驗證發出呼叫的使用者是否符合其宣稱的身分。

  • 使用者授權:檢查使用者是否擁有發出要求的權限。

驗證機制是識別發出呼叫使用者的安全方式。Endpoints 也會檢查驗證權杖,以驗證權杖是否具備呼叫 API 的權限。API 伺服器會根據驗證結果,決定是否授權要求。

若您須識別發出呼叫的使用者,請參閱驗證使用者的相關資訊。

API 金鑰可識別發出呼叫的專案,不過無法識別發出呼叫的使用者。舉例來說,如果您建立的應用程式呼叫了 API,則 API 金鑰能夠識別發出呼叫的應用程式,但無法識別該應用程式使用者的身分。

如果您須以更安全的方式限制可呼叫您 API 的專案或服務,請參閱服務之間的驗證一文。

API 金鑰的安全性

普遍認為 API 金鑰並不安全,因為用戶端可存取 API 金鑰,這使得有心人士更容易竊取 API 金鑰。由於金鑰沒有到期時間,因此一旦失竊,就可能無限期遭到使用,除非專案擁有者撤銷或重新產生金鑰。雖然您可採用限制措施以減少 API 金鑰遭竊的情況,不過您可選用更合適的授權方式。

請參閱驗證使用者中的範例。

API 金鑰的使用時機

API 可能會限制要求 API 金鑰的部分或所有方法。如果您希望達成下列任一目標,建議您採取上述做法:

  • 封鎖匿名流量。如果應用程式開發人員須與 API 生產者合作,以便偵測及修正問題,或是顯示應用程式的使用狀況,API 金鑰可為 API 生產者識別應用程式的流量。

  • 掌控對 API 發出的呼叫次數。

  • 在 API 流量中找出使用模式。您可以在「APIs & Services」(API 和服務) 中查看應用程式使用情形。

  • 依 API 金鑰篩選記錄。

API 金鑰無法用於以下用途:

  • 識別個別使用者:API 金鑰無法識別使用者,只能識別專案。

  • 安全的授權。

  • 識別專案建立者。

服務基礎架構無法讓您直接透過 API 金鑰查詢專案。

API 金鑰的使用方式

如要瞭解如何設定並使用 API 金鑰存取權,請參閱「使用 API 金鑰限制存取權」。