View a markdown version of this page

最佳實務 - Amazon Location Service

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

最佳實務

本節概述保護 Amazon Location Service 應用程式並最佳化身分驗證用量的最佳實務。透過實作憑證隔離、監控和適當的限制,您可以將安全風險降至最低並控制成本。如需在 API 金鑰、Amazon Cognito 和 之間進行選擇的指引 AWS Identity and Access Management,請參閱 選擇身分驗證方法

憑證管理

當您需要輪換或撤銷存取權時,適當的憑證管理可降低安全風險並簡化操作。

  • 每個應用程式使用不同的登入資料 – 為每個應用程式或環境 (開發、預備、生產) 建立不同的 API 金鑰或 IAM 角色。如果登入資料洩露,這會限制爆量半徑。

  • 套用最低權限原則 – 僅授予每個使用案例所需的最低許可。限制對特定 APIs和資源的存取,而不是使用萬用字元。

  • 定期輪換登入資料 – 定期輪換 API 金鑰並檢閱 IAM 政策。立即移除未使用的登入資料。

  • 切勿在原始碼中公開登入資料 – 在環境變數、秘密管理員或安全組態存放區中存放 API 金鑰、Amazon Cognito 身分集區 IDs 和其他敏感值。請勿將它們遞交至版本控制。

API 金鑰最佳化

API 金鑰提供簡單的方式來授予未經驗證、唯讀的 Maps、Places 和 Routes 資源存取權。請遵循這些實務,將安全風險降至最低並最佳化用量。

  • 限制動作和資源 – 建立 API 金鑰時,請僅指定應用程式所需的動作和資源。例如,僅限映射應用程式應僅允許對映射提供者資源執行geo-maps:*動作。

  • 套用用戶端限制 – 設定 Web 應用程式的網域參考者限制,或 Android 和 iOS 應用程式的應用程式識別符限制。這可防止您的金鑰用於未經授權的原始伺服器。如需詳細資訊,請參閱依請求原始伺服器限制 API 金鑰用量

  • 設定過期時間 – 使用金鑰過期來強制執行定期輪換。在舊金鑰過期之前建立新的金鑰,更新您的應用程式,然後停用舊金鑰。

  • 監控每個金鑰的用量 – 使用 CloudWatch 指標搭配 ApiKeyName維度,個別追蹤每個金鑰的用量。在 中設定意外尖峰警示CallCount

  • 刪除未使用的金鑰 – 定期稽核您的 API 金鑰,並刪除任何不再使用的金鑰。已停用的非作用中金鑰可以在 90 天後刪除。

依請求原始伺服器限制 API 金鑰用量

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

如需 API 金鑰限制的詳細資訊,請參閱《Amazon Location Service API 參考》中的 ApiKeyRestrictions

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

Amazon Cognito 最佳化

Amazon Cognito 提供比 API 金鑰更精細的存取控制,並支援已驗證和未驗證的使用者。

  • 縮小未驗證角色的範圍 – 使用身分集區進行匿名存取時,請連接 IAM 政策,僅允許應用程式所需的特定 Amazon Location 動作和資源。

  • 使用條件索引鍵進行 IP 篩選 – 將aws:SourceIp條件新增至 IAM 政策,以在適當時限制對已知 IP 範圍的存取。

  • 將身分集區保留在相同的區域中 – 在與 Amazon Location Service 資源相同的區域中建立 Amazon Cognito 身分集區,以避免跨區域延遲並確保適當的存取。 AWS

  • 盡可能使用已驗證的身分 – 如果您的應用程式具有登入流程,請使用 Amazon Cognito 使用者集區或聯合身分來授予具有特定許可的已驗證角色,而不是依賴未經驗證的存取。

IAM 最佳化

對於伺服器端應用程式和內部工具,請使用 AWS Identity and Access Management 完全控制存取。

  • 使用 IAM 角色而非長期登入資料 – 對於在 AWS 運算服務上執行的應用程式 (例如 Amazon EC2、Lambda 或 Amazon ECS),請使用 IAM 角色自動提供臨時登入資料。

  • 套用資源層級許可 – 在政策中指定資源 ARNs,而不是使用萬用字元。例如,限制對特定追蹤器或地理圍欄集合資源的存取。

  • 使用政策條件 – 新增條件aws:RequestedRegion,例如限制對特定區域的存取,或對屬性型存取控制aws:PrincipalTag的存取。

  • 啟用 CloudTrail – 使用 AWS CloudTrail 記錄所有 Amazon Location Service API 呼叫以進行稽核和合規。定期檢閱日誌是否有非預期的存取模式。