本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
最佳實務
本節概述保護 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 呼叫以進行稽核和合規。定期檢閱日誌是否有非預期的存取模式。