

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# API 金鑰的最佳實務
<a name="api-keys-best-practices"></a>

遵循這些最佳實務來保護您的 API 金鑰並管理其生命週期。

## 管理 API 金鑰
<a name="api-keys-manage-best-practices"></a>

API 金鑰包含純文字*值*，可讓您存取 中的一或多個資源或 APIs AWS 帳戶。如果有人複製您的 API 金鑰，他們可以存取這些相同的資源和 APIs。若要將潛在影響降至最低，請檢閱下列最佳實務：
+  **限制 API 金鑰** 

  為了避免上述情況，最好限制您的 API 金鑰。建立金鑰時，您可以指定可使用金鑰的網域、Android 應用程式或 Apple 應用程式。
+  **管理 API 金鑰生命週期** 

  您可以建立無限期運作的 API 金鑰。不過，如果您想要建立暫時 API 金鑰、定期輪換 API 金鑰，或撤銷現有的 API 金鑰，您可以使用 *API 金鑰過期*。
  + 您可以在建立或更新 API 金鑰時設定到期時間。
  + 當 API 金鑰達到到期時間時，金鑰會自動停用。非作用中金鑰無法再用於提出請求。
  + 您可以移除過期時間，將臨時金鑰變更為永久金鑰。
  + 您可以在停用 API 金鑰的 90 天後將其刪除。
  + 如果您嘗試停用過去七天內已使用的 API 金鑰，系統會提示您確認是否要進行變更。
  + 如果您使用的是 Amazon Location Service API 或 AWS CLI，請將 `ForceUpdate` 參數設定為 `true`，否則您會收到錯誤。

## 依請求原始伺服器限制 API 金鑰用量
<a name="restrict-usage-by-origin"></a>

您可以使用用戶端限制來設定 API 金鑰，以限制對特定網域或行動應用程式的存取。依網域限制時，只有在 HTTP 參考者標頭符合您提供的值時，才會授權請求。限制 Android 或 Apple 應用程式時，只有在應用程式識別符 HTTP 標頭欄位符合您提供的值時，才會授權請求。

如需詳細資訊，請參閱《*Amazon Location Service API 參考*》中的 [ApiKeyRestrictions](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_ApiKeyRestrictions.html)。

 **Android 應用程式識別符：**
+ `X-Android-Package`:

  Android 應用程式的唯一識別符，在應用程式的 `build.gradle` 檔案中定義，通常遵循反向網域格式。

  範例：

   `com.mydomain.appname` 
+ `X-Android-Cert`:

  用來簽署 Android APK 之簽署憑證的 SHA-1 雜湊。

  範例：

   `BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75` 

 **Apple 應用程式識別符：**
+ `X-Apple-Bundle-Id `:

  Apple (iOS、macOS 等） 應用程式的唯一識別符，在應用程式的 中定義`Info.plist`，通常遵循反向網域格式。

  範例：

   `com.mydomain.appname` 