Amazon 定 Location Service 的身分識別政策範例 - Amazon Location Service

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

Amazon 定 Location Service 的身分識別政策範例

依預設,使用者和角色沒有建立或修改 Amazon 位置資源的權限。他們也無法使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 AWS API 來執行工作。若要授與使用者對其所需資源執行動作的許可,IAM 管理員可以建立 IAM 政策。然後,管理員可以將 IAM 政策新增至角色,使用者便能擔任這些角色。

若要了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策,請參閱《IAM 使用者指南》中的建立 IAM 政策

有關 Amazon Location 定義的動作和資源類型的詳細資訊,包括每種資源類型的 ARN 格式,請參閱服務授權參考中的 Amazon Location Service 的動作、資源和條件金鑰

政策最佳實務

以身分識別為基礎的政策決定某人是否可以在您的帳戶中建立、存取或刪除 Amazon 位置資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時,請遵循下列指導方針及建議事項:

  • 開始使用 AWS 受管原則並邁向最低權限權限 — 若要開始授與使用者和工作負載的權限,請使用可授與許多常見使用案例權限的AWS 受管理原則。它們可用在您的 AWS 帳戶. 建議您透過定義特定於您使用案例的 AWS 客戶管理政策,進一步降低使用權限。如需詳細資訊,請參閱 IAM 使用者指南中的 AWS 受管政策任務職能的AWS 受管政策

  • 套用最低權限許可 – 設定 IAM 政策的許可時,請僅授予執行任務所需之許可。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低權限許可。如需使用 IAM 套用許可的相關資訊,請參閱 IAM 使用者指南中的 IAM 中的政策和許可

  • 使用 IAM 政策中的條件進一步限制存取權 – 您可以將條件新增至政策,以限制動作和資源的存取權。例如,您可以撰寫政策條件,指定必須使用 SSL 傳送所有請求。您也可以使用條件來授與對服務動作的存取權 (如透過特定) 使用這些動作 AWS 服務,例如 AWS CloudFormation。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素:條件

  • 使用 IAM Access Analyzer 驗證 IAM 政策,確保許可安全且可正常運作 – IAM Access Analyzer 驗證新政策和現有政策,確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議,可協助您編寫安全且實用的政策。如需詳細資訊,請參閱 IAM 使用者指南中的 IAM Access Analyzer 政策驗證

  • 需要多因素身份驗證 (MFA) — 如果您的案例需要 IAM 使用者或根使用者 AWS 帳戶,請開啟 MFA 以獲得額外的安全性。如需在呼叫 API 操作時請求 MFA,請將 MFA 條件新增至您的政策。如需詳細資訊,請參閱 IAM 使用者指南中的設定 MFA 保護的 API 存取

如需 IAM 中最佳實務的相關資訊,請參閱 IAM 使用者指南中的 IAM 安全最佳實務

使用 Amazon 位置控制台

若要存取 Amazon 定 Location Service 主控台,您必須擁有最少一組許可。這些許可必須允許您列出和檢視有關 AWS 帳戶. 如果您建立比最基本必要許可更嚴格的身分型政策,則對於具有該政策的實體(使用者或角色)而言,主控台就無法如預期運作。

您不需要為僅對 AWS CLI 或 AWS API 進行呼叫的使用者允許最低主控台權限。反之,只需允許存取符合他們嘗試執行之 API 操作的動作就可以了。

為確保使用者和角色可以使用 Amazon 位置主控台,請將以下政策附加到實體。如需詳細資訊,請參閱《IAM 使用者指南》中的新增許可到使用者

下列政策提供 Amazon 定 Location Service 主控台的存取權,以便能夠建立、刪除、列出和檢視 AWS 帳戶中 Amazon 位置資源的詳細資料。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GeoPowerUser", "Effect": "Allow", "Action": [ "geo:*" ], "Resource": "*" } ] }

或者,您可以授予唯讀權限,以促進唯讀存取。使用唯讀權限時,如果使用者嘗試寫入動作 (例如建立或刪除資源),就會顯示錯誤訊息。例如,請參閱 追蹤器資源的唯讀政策

允許使用者檢視他們自己的許可

此範例會示範如何建立政策,允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此原則包含在主控台上或以程式設計方式使用 AWS CLI 或 AWS API 完成此動作的權限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

在政策中使用 Amazon Location Service 資源

Amazon 定 Location Service 使用下列資源前置詞:

Amazon 位置資源前綴
資源 資源前綴
地圖資源 map
放置資源 place-index
路線資源 route-calculator
追蹤資源 tracker
地理圍欄收集資源 geofence-collection

使用下列 ARN 語法:

arn:Partition:geo:Region:Account:ResourcePrefix/ResourceName

如需 ARN 格式的詳細資訊,請參閱 Amazon 資源名稱 (ARN) 和 AWS 服務命名空間。

範例

  • 使用以下 ARN 允許訪問指定的映射資源。

    "Resource": "arn:aws:geo:us-west-2:account-id:map/map-resource-name"
  • 若要指定對屬於特定帳號的所有map資源的存取權,請使用萬用字元 (*):

    "Resource": "arn:aws:geo:us-west-2:account-id:map/*"
  • 某些 Amazon 位置動作 (例如用於建立資源的動作) 無法在特定資源上執行。在這些情況下,您必須使用萬用字元 (*)。

    "Resource": "*"

若要查看 Amazon 位置資源類型及其 ARN 的清單,請參閱服務授權參考由 Amazon 定 Location Service 務定義的資源。若要了解可以使用哪些動作指定每個資源的 ARN,請參閱 Amazon 定 Location Service 定義的動作

更新裝置位置的權限

要更新多個跟踪器的設備位置,您需要授予用戶訪問一個或多個跟踪器資源的訪問權限。您還希望允許用戶更新一批設備位置。

在此範例中,除了授與追蹤器 1 和追蹤器 2 資源的存取權外,下列政策還授與對追蹤器 1 和追蹤器 2 資源使用geo:BatchUpdateDevicePosition動作的權限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateDevicePositions", "Effect": "Allow", "Action": [ "geo:BatchUpdateDevicePosition" ], "Resource": [ "arn:aws:geo:us-west-2:account-id:tracker/Tracker1", "arn:aws:geo:us-west-2:account-id:tracker/Tracker2" ] } ] }

如果您想要限制使用者只能更新特定裝置的裝置位置,您可以為該裝置 ID 新增條件金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateDevicePositions", "Effect": "Allow", "Action": [ "geo:BatchUpdateDevicePosition" ], "Resource": [ "arn:aws:geo:us-west-2:account-id:tracker/Tracker1", "arn:aws:geo:us-west-2:account-id:tracker/Tracker2" ], "Condition":{ "ForAllValues:StringLike":{ "geo:DeviceIds":[ "deviceId" ] } } } ] }

追蹤器資源的唯讀政策

要為 AWS 帳戶中的所有跟踪器資源創建只讀策略,您需要授予對所有跟踪器資源的訪問權限。您還需要授予用戶訪問操作的權限,這些操作允許他們獲取多個設備的設備位置,從單個設備獲取設備位置並獲取位置歷史記錄。

在此範例中,下列原則會授與下列動作的權限:

  • geo:BatchGetDevicePosition以擷取多個裝置的位置。

  • geo:GetDevicePosition以擷取單一裝置的位置。

  • geo:GetDevicePositionHistory檢索設備的位置歷史記錄。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetDevicePositions", "Effect": "Allow", "Action": [ "geo:BatchGetDevicePosition", "geo:GetDevicePosition", "geo:GetDevicePositionHistory" ], "Resource": "arn:aws:geo:us-west-2:account-id:tracker/*" } ] }

建立地理圍欄的政策

若要建立原則以允許使用者建立地理圍欄,您需要授與特定動作的存取權,這些動作允許使用者在地理圍欄集合上建立一或多個地理圍欄。

以下政策授予對於收集的下列動作的權限:

  • geo:BatchPutGeofence創建多個地理圍欄。

  • geo:PutGeofence創建一個單一的地理圍欄。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateGeofences", "Effect": "Allow", "Action": [ "geo:BatchPutGeofence", "geo:PutGeofence" ], "Resource": "arn:aws:geo:us-west-2:account-id:geofence-collection/Collection" } ] }

地理圍欄的只讀策略

若要為儲存在您 AWS 帳戶的地理圍欄集合中的地理圍欄建立唯讀原則,您需要授與存放地理圍欄之地理圍欄集合讀取的動作的存取權。

以下政策授予對於收集的下列動作的權限:

  • geo:ListGeofences列出指定地理圍欄集合中的地理圍欄。

  • geo:GetGeofence從地理圍欄集合中檢索地理圍欄。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetGeofences", "Effect": "Allow", "Action": [ "geo:ListGeofences", "geo:GetGeofence" ], "Resource": "arn:aws:geo:us-west-2:account-id:geofence-collection/Collection" } ] }

渲染地圖資源的權限

若要授予足夠的權限來呈現地圖,您需要授予對地圖磚、精靈、字符和樣式描述元的存取權限:

  • geo:GetMapTile擷取用於在地圖上選擇性地彩現圖徵的地圖框。

  • geo:GetMapSprites檢索 PNG Sprite 工作表和描述其中偏移量的相應 JSON 文檔。

  • geo:GetMapGlyphs檢索用於顯示文本的字符。

  • geo:GetMapStyleDescriptor檢索地圖的樣式描述符,包含渲染規則。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTiles", "Effect": "Allow", "Action": [ "geo:GetMapTile", "geo:GetMapSprites", "geo:GetMapGlyphs", "geo:GetMapStyleDescriptor" ], "Resource": "arn:aws:geo:us-west-2:account-id:map/Map" } ] }

允許搜尋作業的權限

若要建立允許搜尋作業的政策,您必須先授與 AWS 帳號中放置索引資源的存取權。您還需要授予訪問權限,這些操作允許用戶通過地理編碼使用文本進行搜索,並通過反向地理編碼使用位置進行搜索。

在此範例中,除了授與存取權以外 PlaceIndex,下列原則也會授與下列動作的權限:

  • geo:SearchPlaceIndexForPosition可讓您搜尋指定位置附近的地點或景點。

  • geo:SearchPlaceIndexForText可讓您使用任意格式的文字來搜尋地址、名稱、城市或地區。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Search", "Effect": "Allow", "Action": [ "geo:SearchPlaceIndexForPosition", "geo:SearchPlaceIndexForText" ], "Resource": "arn:aws:geo:us-west-2:account-id:place-index/PlaceIndex" } ] }

路由計算器的唯讀策略

您可以建立唯讀策略,以允許使用者存取路由計算器資源以計算路由。

在此範例中,除了授與存取權以外 ExampleCalculator,下列原則會授與下列作業的權限:

  • geo:CalculateRoute計算給定出發位置,目標位置和航點位置列表的路線。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoutesReadOnly", "Effect": "Allow", "Action": [ "geo:CalculateRoute" ], "Resource": "arn:aws:geo:us-west-2:accountID:route-calculator/ExampleCalculator" } ] }

根據條件鍵控制資源存取

當您建立 IAM 政策以授予使用地理圍欄或裝置位置的存取權時,您可以使用條件運算子更精確地控制使用者可存取的地理圍欄或裝置。您可以通過在策略的Condition元素中包含地理圍欄 ID 或設備 ID 來執行此操作。

下列範例原則顯示如何建立允許使用者更新特定裝置的裝置位置的原則。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateDevicePositions", "Effect": "Allow", "Action": [ "geo:BatchUpdateDevicePosition" ], "Resource": [ "arn:aws:geo:us-west-2:account-id:tracker/Tracker" ], "Condition":{ "ForAllValues:StringLike":{ "geo:DeviceIds":[ "deviceId" ] } } } ] }

根據標籤控制資源存取

建立 IAM 政策以授與使用 Amazon Location 資源的存取權時,您可以使用以屬性為基礎的存取控制來更好地控制使用者可以修改、使用或刪除的資源。您可以透過在原則的Condition元素中包含標籤資訊,以根據資源標控制存取權限來執行此操作。

下列範例原則顯示如何建立允許使用者建立地理圍欄的原則。這將授予下列動作的權限,以便在稱為 Collection 的地理圍欄集合上建立一個或多個地理圍欄:

  • geo:BatchPutGeofence創建多個地理圍欄。

  • geo:PutGeofence創建一個單一的地理圍欄。

不過,只有在 Collection 標籤具有該使用者名稱值時Owner,此原則才會使用Condition元素來授與權限。

  • 例如,如果名為的使用者richard-roe嘗試檢視 Amazon 位置集合,則該集合必須標記為Owner=richard-roeowner=richard-roe。否則,用戶將被拒絕訪問。

    注意

    條件標籤鍵 Owner 符合 Ownerowner,因為條件索引鍵名稱不區分大小寫。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素:條件

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateGeofencesIfOwner", "Effect": "Allow", "Action": [ "geo:BatchPutGeofence", "geo:PutGeofence" ], "Resource": "arn:aws:geo:us-west-2:account-id:geofence-collection/Collection", "Condition": { "StringEquals": {"geo:ResourceTag/Owner": "${aws:username}"} } } ] }

如需有關如何根據標籤定義存取 AWS 資源許可的教學課程,請參閱AWS Identity and Access Management 使用者指南