

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# API 密钥的最佳实践
<a name="api-keys-best-practices"></a>

请遵循以下最佳实践来保护您的 API 密钥并管理其生命周期。

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

API 密钥包含一个纯文本*值*，用于访问您的 AWS 账户中的一个或多个资源或 API。如果有人复制您的 API 密钥，他们就可以访问这些相同的资源和 API。为尽可能地减少潜在影响，请查看以下最佳实践：
+  **限制 API 密钥** 

  为避免出现上述情况，最好限制您的 API 密钥。创建密钥时，您可以指定能够使用该密钥的域、Android 应用程序或 Apple 应用程序。
+  **管理 API 密钥的生命周期** 

  您可以创建无限期有效的 API 密钥。但是，如果您想创建临时 API 密钥、定期轮换 API 密钥或撤销现有 API 密钥，则可以使用 *API 密钥过期时间*。
  + 您可以在创建或更新 API 密钥时为其设置过期时间。
  + API 密钥在到达其到期时间时将会自动停用。非活动密钥不能再用于发出请求。
  + 您可以通过删除过期时间，将临时密钥更改为永久密钥。
  + 您可以在 API 密钥停用 90 天后将其删除。
  + 如果您尝试停用过去七天内使用过的 API 密钥，系统会提示您确认是否要进行更改。
  + 如果您使用的是 Amazon Location Service API 或`true`，请将`ForceUpdate`参数设置为，否则您将收到错误消息。 AWS CLI

## 按请求源限制 API 密钥的使用
<a name="restrict-usage-by-origin"></a>

您可以为 API 密钥配置客户端限制，从而仅限访问特定的域或移动应用程序。按域进行限制时，只有当 HTTP 引用站点标头与您提供的值相匹配时，才会对请求进行授权。按 Android 或 Apple 应用程序进行限制时，只有当应用程序标识符 HTTP 标头字段与您提供的值相匹配时，才会对请求进行授权。

有关更多信息，请参阅[ApiKeyRestrictions](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_ApiKeyRestrictions.html)《*亚马逊定位服务 API 参考*》。

 **Android 应用程序标识符：**
+ `X-Android-Package`:

  Android 应用程序的唯一标识符，在应用程序的 `build.gradle` 文件中定义，通常采用反向域格式。

  示例：

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

  用于签署安卓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` 