

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

# 使用 Amazon Location Service 驗證
<a name="access"></a>

若要使用 Amazon Location Service，必須將構成 Amazon Location 的資源和 APIs 存取權授予使用者。您可以使用三種策略來授予 資源的存取權。
+ **使用 API 金鑰** – 若要將存取權授予未驗證的使用者，您可以建立 API 金鑰，以授予對 Amazon Location Service 資源和動作的唯讀存取權。這在您不想驗證每個使用者的情況下非常有用。例如，Web 應用程式。

  如需 API 金鑰的詳細資訊，請參閱 [使用 API 金鑰進行身分驗證](using-apikeys.md)。
+ **使用 Amazon Cognito** – API 金鑰的替代方案是使用 Amazon Cognito 授予匿名存取。Amazon Cognito 可讓您使用政策建立更豐富的授權，以定義未經驗證的使用者可執行的操作。

  如需使用 Amazon Cognito 的詳細資訊，請參閱 [使用 Amazon Cognito 進行身分驗證](authenticating-using-cognito.md)。
+ **Use AWS Identity and Access Management (IAM)** – 若要將存取權授予使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 驗證的使用者，請建立允許存取所需資源的 IAM 政策。

  如需 IAM 和 Amazon Location 的詳細資訊，請參閱 [使用 AWS Identity and Access Management 進行身分驗證](security-iam.md)。

# 選擇身分驗證方法
<a name="choose-method"></a>

API 金鑰和 Amazon Cognito 用於類似案例的方式類似，所以為什麼您會選擇其中一個而非另一個？ 下列清單反白顯示兩者之間的部分差異。
+ **效能：**
  + **API 金鑰：**相對更快
  + **Amazon Cognito：**相對較慢
+ **可用性：**
  + **API 金鑰：**地圖、位置和路由的 Amazon Location APIs 
  + **Amazon Cognito：**所有 APIs
+ **結合其他身分驗證方法？ **
  + **API 金鑰：**否
  + **Amazon Cognito：**是

**Comparison** (比較)
+ API 金鑰僅適用於地圖、位置和路由動作。Amazon Cognito 可用於驗證對大多數 Amazon Location Service APIs存取。
+ 使用 API 金鑰的映射請求效能通常比使用 Amazon Cognito 的類似案例更快。更簡單的身分驗證表示在短時間內再次取得相同的地圖圖磚時，對服務和快取請求的往返次數較少。
+ 透過 Amazon Cognito，您可以使用自己的身分驗證程序，或使用 Amazon Cognito 聯合身分結合多種身分驗證方法。

  如需詳細資訊，請參閱《Amazon Cognito 開發人員指南》中的[聯合身分入門](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html)。

# 使用 API 金鑰進行身分驗證
<a name="using-apikeys"></a>

**注意**  
API 金鑰僅適用於**映射**、**放置**和**路由**資源，您無法修改或建立這些資源。如果您的應用程式需要存取未經驗證使用者的其他資源或動作，您可以使用 Amazon Cognito 來提供存取，以及 API 金鑰，或代替 API 金鑰。如需詳細資訊，請參閱[使用 Amazon Cognito 進行身分驗證](authenticating-using-cognito.md)。

*API 金鑰*是與 中特定 Amazon Location Service 資源或 API 相關聯的金鑰值 AWS 帳戶，以及您可以在這些資源上執行的特定動作。您可以在應用程式中使用 API 金鑰，對這些資源的 Amazon Location APIs 進行未經驗證的呼叫。

例如，如果您將 API 金鑰與資源和/或 `GetPlace*` API 建立關聯，則使用該 API 金鑰的應用程式將能夠呼叫特定 APIs。相同的 API 金鑰不會授予變更或更新任何資源的許可，也不會呼叫與其沒有關聯的 APIs。

當您在應用程式中呼叫 Amazon Location Service APIs 時，通常會以授權進行 API 呼叫*的已驗證使用者*身分進行此呼叫。不過，在某些情況下，您不想驗證應用程式的每位使用者。

例如，您可能希望顯示您的商業位置的 Web 應用程式可供任何使用網站的人使用，無論他們是否登入。在這種情況下，其中一個替代方法是使用 API 金鑰進行 API 呼叫。

[API 金鑰最佳實務](#api-keys-best-practices) 如需何時使用 API 金鑰的其他資訊，請參閱 。

如需使用 Amazon Location Service API 使用金鑰的詳細資訊，請參閱《*Amazon Location Service API 參考*》中的下列主題：
+ [CreateKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_CreateKey.html)
+ [DeleteKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_DeleteKey.html)
+ [DescribeKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_DescribeKey.html)
+ [ListKeys](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_ListKeys.html)

## 建立 Amazon Location Service 的 API 金鑰
<a name="create-api-key"></a>

您可以透過 Amazon Location Service 主控台 AWS CLI或 Amazon Location API 建立 API 金鑰。繼續執行下列適當的程序。

------
#### [ Amazon Location console ]

**使用 Amazon Location Service 主控台建立 API 金鑰**

1. 在 [https://console.aws.amazon.com/location](https://console.aws.amazon.com/location)中，從左側選單中選擇 **API 金鑰**。

1. 在 **API 金鑰**頁面上，選擇**建立 API 金鑰**。

1. 在**建立 API 金鑰**頁面上，填寫下列資訊：
   + **名稱** – API 金鑰的名稱，例如 `ExampleKey`。
   + **描述** – API 金鑰的選用描述。
   + **資源** – 在下拉式清單中，選擇 Amazon Location 資源，以使用此 API 金鑰授予 的存取權。您可以選擇新增資源來**新增多個資源**。
   + **動作** – 指定您要使用此 API 金鑰授權的動作。您必須至少選取一個動作，以符合您選取的每個資源類型。例如，如果您選取了位置資源，則必須在**位置動作**下至少選取其中一個選項。
   + **過期時間** – 選擇性地為您的 API 金鑰新增過期日期和時間。如需詳細資訊，請參閱[API 金鑰最佳實務](#api-keys-best-practices)。
   + **用戶端限制** – 選擇性地新增一或多個 Web 網域，或一或多個 Android 或 Apple 應用程式，您可以在其中使用 API 金鑰。例如，如果 API 金鑰是允許在網站 上執行的應用程式`example.com`，則可以將 `*.example.com/`做為允許的推薦者。
   + **標籤** – 選擇性地將標籤新增至 API 金鑰。

1. 選擇**建立 API 金鑰**以建立 API 金鑰。

1. 在 API 金鑰的詳細資訊頁面上，您可以查看已建立之 API 金鑰的相關資訊。選擇**顯示 API 金鑰**以查看您在呼叫 Amazon Location APIs 時所使用的金鑰值。索引鍵值的格式為 `v1.public.a1b2c3d4...`。

------
#### [ AWS CLI ]

1. 使用 [create-key](https://docs.aws.amazon.com/cli/latest/reference/location/create-key.html) 命令。下列範例會建立名為 的 API 金鑰`ExampleKey`，沒有過期日期和對單一映射資源的存取權。

   ```
   aws location \
     create-key \
     --key-name ExampleKey \
     --restrictions '{"AllowActions":["geo-maps:*"],"AllowResources":["arn:aws:geo-maps:region::provider/default"]}' \
     --no-expiry
   ```

1. 回應包含存取應用程式中資源時要使用的 API 金鑰值。索引鍵值的格式為 `v1.public.a1b2c3d4...`。若要進一步了解如何使用 API 金鑰轉譯映射，請參閱 [使用 API 金鑰呼叫 Amazon Location API](#using-apikeys-in-api)。create-key 的回應如下所示：

   ```
   {
       "Key": "v1.public.a1b2c3d4...",
       "KeyArn": "arn:aws:geo:region:accountId:api-key/ExampleKey",
       "KeyName": "ExampleKey",
       "CreateTime": "2023-02-06T22:33:15.693Z"
   }
   ```

1. 您也可以稍後使用 `describe-key` 來尋找索引鍵值。下列範例示範如何在名為 的 API 金鑰`describe-key`上呼叫 `ExampleKey`。

   ```
   aws location describe-key \
       --key-name ExampleKey
   ```

------
#### [ Amazon Location API ]

從 Amazon Location APIs使用 [CreateKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_CreateKey.html) 操作。下列範例是 API 請求，可建立名為 的 API 金鑰`ExampleKey`，沒有過期日期和對單一映射資源的存取權。

```
POST /metadata/v0/keys HTTP/1.1
Content-type: application/json
{
  "KeyName": "ExampleKey",
  "NoExpiry": true,
  "Restrictions": {
    "AllowActions": [
      "geo-places:*",
      "geo-routes:*",
      "geo-maps:*"
    ],
    "AllowResources": [
      "arn:aws:geo-places:Region::provider/default",
      "arn:aws:geo-routes:Region::provider/default",
      "arn:aws:geo-maps:Region::provider/default"
    ]
  }
}
```

回應包含存取應用程式中資源時要使用的 API 金鑰值。索引鍵值的格式為 `v1.public.a1b2c3d4...`。

您也可以使用 [DescribeKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_DescribeKey.html) API 稍後尋找金鑰的金鑰值。

------

## 使用 API 金鑰呼叫 Amazon Location API
<a name="using-apikeys-in-api"></a>

建立 API 金鑰後，您可以使用金鑰值來呼叫應用程式中的 Amazon Location APIs。

------
#### [ API ]

支援 API 金鑰APIs 具有接受 API 金鑰值的額外參數。例如，如果您呼叫 `GetPlace` API，您可以填入[金鑰](https://docs.aws.amazon.com/location/latest/APIReference/API_geoplaces_GetPlace.html)參數，如下所示

```
curl --request GET —url 'https://places.geo.eu-central-1.amazonaws.com/v2/place/{PLACEID}?key={APIKEY}&language=jp'
```

------
#### [ AWS CLI ]

使用 `--key` 參數時，您也應該使用 `--no-sign-request` 參數，以避免使用 Sig v4 簽署。

```
aws geo-places get-place --place-id $PLACEID --language jp --key $APIKEY
```

------
#### [ SDK (web) ]

使用下列程式碼：

```
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Display a map</title>
        <meta property="og:description" content="Initialize a map in an HTML element with MapLibre GL JS." />
        <meta charset='utf-8'>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel='stylesheet' href='https://unpkg.com/maplibre-gl@5.x/dist/maplibre-gl.css' />
        <script src='https://unpkg.com/maplibre-gl@5.x/dist/maplibre-gl.js'></script>
        <style>
            body { margin: 0; }
            #map { height: 100vh; }
        </style>
    </head>
    <body>
         
        <div id="map"></div>
        <script>
     
            const apiKey = "<api key>"; // check how to create api key for Amazon Location
            const mapStyle = "Standard";  // eg. Standard, Monochrome, Hybrid, Satellite  
            const awsRegion = "eu-central-1"; // eg. us-east-2, us-east-1, us-west-2, ap-south-1, ap-southeast-1, ap-southeast-2, ap-northeast-1, ca-central-1, eu-central-1, eu-west-1, eu-west-2, eu-south-2, eu-north-1, sa-east-1
            const styleUrl = `https://maps.geo.${awsRegion}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${apiKey}`;


            const map = new maplibregl.Map({
                container: 'map', // container id
                style: styleUrl, // style URL
                center: [25.24,36.31], // starting position [lng, lat]
                zoom: 2, // starting zoom
            });
        </script>
    </body>
</html>
```

------
#### [ SDK (iOS, Swift) ]

使用下列程式碼：

```
import UIKit
import MapLibre

class ViewController: UIViewController {
    let apiKey = "Enter your API key" // The previously-created API Key to use
    let regionName = "Enter your region name" // The service region - us-east-1, ap-south-1, etc
    var mapView: MLNMapView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        loadMap()
    }
    
    func loadMap() {
        let styleName = "Standard" // The map style - Standard, Monochrome, Hybrid, Satellite
        let colorName = "Light" // The color scheme - Light, Dark
        
        // The Amazon Location Service map style URL that MapLibre will use to render the maps.
        let styleURL = URL(string: "https://maps.geo.\(regionName).amazonaws.com/v2/styles/\(styleName)/descriptor?key=\(apiKey)&color-scheme=\(colorName)")

        // Initialize MapLibre        
        mapView = MLNMapView(frame: view.bounds)
        mapView.styleURL = styleURL
        mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        // Set the starting camera position and zoom level for the map
        mapView.setCenter(CLLocationCoordinate2D(latitude: 49.246559, longitude: -123.063554), zoomLevel: 10, animated: false)
        view.addSubview(mapView!)
    }
}
```

------
#### [ SDK (Android, Kotlin) ]

使用下列程式碼：

```
class MapActivity : Activity(), OnMapReadyCallback {

    private lateinit var mBinding: ActivityMapBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initializeMap(savedInstanceState)
    }

    private fun initializeMap(savedInstanceState: Bundle?) {
        // Init MapLibre
        // See the MapLibre Getting Started Guide for more details
        // https://maplibre.org/maplibre-native/docs/book/android/getting-started-guide.html
        MapLibre.getInstance(this@MapActivity)
        mBinding = ActivityMapBinding.inflate(layoutInflater)
        setContentView(mBinding.root)
        mBinding.mapView.onCreate(savedInstanceState)
        mBinding.mapView.getMapAsync(this)
    }

    override fun onMapReady(mapLibreMap: MapLibreMap) {
        mapLibreMap.setStyle(Style.Builder().fromUri(getMapUrl())) {
            // Set the starting camera position
            mapLibreMap.cameraPosition = CameraPosition.Builder().target(LatLng(49.246559, -123.063554)).zoom(10.0).build()
            mapLibreMap.uiSettings.isLogoEnabled = false
            mapLibreMap.uiSettings.attributionGravity = Gravity.BOTTOM or Gravity.END
            mapLibreMap.uiSettings.setAttributionDialogManager(AttributionDialogManager(this, mapLibreMap))
        }
    }

    // Return the Amazon Location Service map style URL
    // MapLibre will use this to render the maps.
    // awsRegion: The service region - us-east-1, ap-south-1, etc
    // mapStyle: The map style - Standard, Monochrome, Hybrid, Satellite  
    // API_KEY: The previously-created API Key to use
    // colorName: The color scheme to use - Light, Dark
    private fun getMapUrl() =
           "https://maps.geo.${getString(R.string.awsRegion)}.amazonaws.com/v2/styles/${getString(R.string.mapStyle)}/descriptor?key=${BuildConfig.API_KEY}&color-scheme=${getString(R.string.colorName)}"

    override fun onStart() {
        super.onStart()
        mBinding.mapView.onStart()
    }

    override fun onResume() {
        super.onResume()
        mBinding.mapView.onResume()
    }

    override fun onPause() {
        super.onPause()
        mBinding.mapView.onPause()
    }

    override fun onStop() {
        super.onStop()
        mBinding.mapView.onStop()
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        mBinding.mapView.onSaveInstanceState(outState)
    }

    override fun onLowMemory() {
        super.onLowMemory()
        mBinding.mapView.onLowMemory()
    }

    override fun onDestroy() {
        super.onDestroy()
        mBinding.mapView.onDestroy()
    }
}
```

------

## 依請求原始伺服器限制 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_geotags_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`

## API 金鑰最佳實務
<a name="api-keys-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`，否則您會收到錯誤。

# 使用 Amazon Cognito 進行身分驗證
<a name="authenticating-using-cognito"></a>

您可以使用 Amazon Cognito 身分驗證作為直接搭配前端 SDK 請求使用 AWS Identity and Access Management (IAM) 使用者的替代方案。

Amazon Cognito 為 Web 和行動應用程式提供身分驗證、授權和使用者管理。您可以將 Amazon Cognito 未驗證的身分集區與 Amazon Location 搭配使用，以讓應用程式擷取暫時、縮小範圍的 AWS 登入資料。

如需詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[使用者集區入門](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-user-pools.html)。

您可能因為下列原因想要使用此形式的身分驗證：
+ **未驗證的使用者** – 如果您有匿名使用者的網站，您可以使用 Amazon Cognito 身分集區。

  如需詳細資訊，請參閱 上的 一節[使用 Amazon Cognito 進行身分驗證](#authenticating-using-cognito)。
+ **您自己的身分驗證** – 如果您想要使用自己的身分驗證程序，或結合多個身分驗證方法，您可以使用 Amazon Cognito 聯合身分。

  如需詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[聯合身分入門](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html)。

## 使用 Amazon Cognito 和 Amazon Location Service
<a name="cognito-and-location"></a>

您可以使用與未驗證身分角色相關聯的 AWS Identity and Access Management (IAM) 政策搭配下列動作：

------
#### [ Maps ]

映射動作清單
+ `geo-maps:GetStaticMap`
+ `geo-maps:GetTile`

**注意**  
上述動作的資源名稱為：  

```
arn:aws:geo-maps:region::provider/default
```

------
#### [ Places ]

位置動作清單：
+ `geo-places:Geocode`
+ `geo-places:ReverseGeocode`
+ `geo-places:SearchNearby`
+ `geo-places:SearchText`
+ `geo-places:Autocomplete`
+ `geo-places:Suggest`
+ `geo-places:GetPlace`

**注意**  
上述動作的資源名稱為：  

```
arn:aws:geo-places:region::provider/default
```

------
#### [ Routes ]

路由動作的清單：
+ `geo-routes:CalculateRoutes`
+ `geo-routes:CalculateRouteMatrix`
+ `geo-routes:CalculateIsolines`
+ `geo-routes:OptimizeWaypoints`
+ `geo-routes:SnapToRoads`

**注意**  
上述動作的資源名稱為：  

```
arn:aws:geo-routes:region::provider/default
```

------
#### [ Geofences and Trackers ]

Geofences 和 Trackers 動作的清單
+ `geo:GetGeofence`
+ `geo:ListGeofences`
+ `geo:PutGeofence`
+ `geo:BatchDeleteGeofence`
+ `geo:BatchPutGeofence`
+ `geo:BatchEvaluateGeofences`
+ `geo:GetDevicePosition*`
+ `geo:ListDevicePositions`
+ `geo:BatchDeleteDevicePositionHistory`
+ `geo:BatchGetDevicePosition`
+ `geo:BatchUpdateDevicePosition`

**注意**  
上述動作的資源名稱為：  

```
arn:aws:geo:region:accountID:tracker/ExampleTracker
```

------
#### [ Previous version ]

先前版本動作的清單：
+ `geo:GetMap*`
+ `geo:SearchPlaceIndexForText`
+ `geo:SearchPlaceIndexForPosition`
+ `geo:GetPlace`
+ `geo:CalculateRoute`
+ `geo:CalculateRouteMatrix`

**注意**  
上述動作的資源名稱為：  
**地圖**  

```
arn:aws:geo:region:accountID:map/ExampleMap
```
**位置**  

```
arn:aws:geo:region:accountID:place-index/ExamplePlaceIndex
```
**路由**  

```
arn:aws:geo:region:accountID:route-calculator/ExampleCalculator
```

------

## 建立 Amazon Cognito 身分集區
<a name="cognito-create-user-pool"></a>

您可以建立 Amazon Cognito 身分集區，以允許未經驗證的訪客透過 Amazon Cognito 主控台 AWS CLI、 或 Amazon Cognito APIs 存取您的應用程式。

**重要**  
您建立的集區必須與您正在使用的 Amazon Location Service 資源位於相同的 AWS 帳戶 和 AWS 區域。

------
#### [ Console ]

**使用 Amazon Cognito 主控台建立身分集區**

1. 前往 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)。

1. 選擇 **Manage Identity Pools (管理身分集區)**。

1. 選擇**建立新的身分集區**，然後輸入身分集區的名稱。

1. 從**未驗證的身分**可折疊區段中，選擇**啟用存取未驗證的身分**。

1. 選擇 **Create Pool** (建立集區)。

1. 選擇您要搭配身分集區使用的 IAM 角色。

1. 展開**檢視詳細資訊**。

1. 在**未驗證的身分**下，輸入角色名稱。

1. 展開**檢視政策文件**區段，然後選擇**編輯**以新增您的政策。

1. 新增您的政策以授予 資源的存取權。
**注意**  
如需動作清單，請參閱上[使用 Amazon Cognito 和 Amazon Location Service](#cognito-and-location)一節。

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
     Sid": "RoutesReadOnly",
     Effect": "Allow",
     Action": [
           // add comma separated value from the previous section
         ],
     Resource": "value from previous section"
       }
     ]
   }
   ```

1. 選擇**允許**以建立您的身分集區。

------

## 在 Web 中使用 Amazon Cognito 身分集區
<a name="identity-pool-js"></a>

下列範例會交換您為登入資料建立的未驗證身分集區，然後用於呼叫 `CalculateIsolines`。為了簡化此工作，範例使用 Amazon Location [如何使用身分驗證協助程式](how-to-auth-helper.md) 程序。這是用來取代取得和重新整理登入資料。

此範例使用適用於 JavaScript v3 的 AWS SDK。

```
import { GeoRoutesClient, CalculateIsolinesCommand , } from "@aws-sdk/client-geo-routes"; // ES Modules import
import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper";

const identityPoolId = "<identity pool ID>"; // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef

const authHelper = await withIdentityPoolId(identityPoolId);

const client = new GeoRoutesClient({
    ...authHelper.getClientConfig(),
    region: "<region>", // The region containing the identity pool
});

const input = {
    DepartNow: true,
    TravelMode: "Car",
    Origin: [-123.12327, 49.27531],
    Thresholds: {
        Time: [5, 10, 30],
    },
};

const command = new CalculateIsolinesCommand(input);
const response = await client.send(command);

console.log(JSON.stringify(response, null, 2))
```

# 使用 AWS Identity and Access Management 進行身分驗證
<a name="security-iam"></a>





AWS Identity and Access Management (IAM) 是 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制誰可以*進行身分驗證* （登入） 和*授權* （具有許可） 來使用 Amazon Location 資源。IAM 是您可以免費使用 AWS 服務 的 。

**Topics**
+ [目標對象](#security_iam_audience)
+ [使用身分驗證](#security_iam_authentication)
+ [使用政策管理存取權](#security_iam_access-manage)
+ [Amazon Location Service 如何與 IAM 搭配使用](#security_iam_service-with-iam)
+ [Amazon Location Service 如何與未經驗證的使用者搭配使用](#security_iam_unauthenticated-users)
+ [Amazon Location Service 的身分型政策範例](#security_iam_id-based-policy-examples)
+ [對 Amazon Location Service 身分和存取進行故障診斷](#security_iam_troubleshoot)

## 目標對象
<a name="security_iam_audience"></a>

使用方式 AWS Identity and Access Management (IAM) 會根據您的角色而有所不同：
+ **服務使用者** — 若無法存取某些功能，請向管理員申請所需許可 (請參閱 [對 Amazon Location Service 身分和存取進行故障診斷](#security_iam_troubleshoot))
+ **服務管理員** — 負責設定使用者存取權並提交相關許可請求 (請參閱 [Amazon Location Service 如何與 IAM 搭配使用](#security_iam_service-with-iam))
+ **IAM 管理員** — 撰寫政策以管理存取控制 (請參閱 [Amazon Location Service 的身分型政策範例](#security_iam_id-based-policy-examples))

## 使用身分驗證
<a name="security_iam_authentication"></a>

身分驗證是您 AWS 使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料，例如 AWS IAM Identity Center (IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料，以聯合身分的形式登入。如需有關登入的詳細資訊，請參閱《AWS 登入 使用者指南》**中的[如何登入您的 AWS 帳戶](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

對於程式設計存取， AWS 提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [API 請求的AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 帳戶 根使用者
<a name="security_iam_authentication-rootuser"></a>

 當您建立 時 AWS 帳戶，您會從一個名為 AWS 帳戶 *theroot 使用者的*登入身分開始，該身分可完整存取所有 AWS 服務 和 資源。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務，請參閱《IAM 使用者指南》**中的[需要根使用者憑證的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 聯合身分
<a name="security_iam_authentication-federated"></a>

最佳實務是要求人類使用者使用聯合身分提供者，以 AWS 服務 使用臨時憑證存取 。

*聯合身分*是來自您的企業目錄、Web 身分提供者的使用者，或使用來自身分來源的 AWS 服務 憑證存取 Directory Service 。聯合身分會擔任角色，而該角色會提供臨時憑證。

若需集中化管理存取權限，建議使用 AWS IAM Identity Center。如需詳細資訊，請參閱 *AWS IAM Identity Center 使用者指南*中的[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 使用者和群組
<a name="security_iam_authentication-iamuser"></a>

*IAM 使用者*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)**會指定 IAM 使用者集合，使管理大量使用者的許可權更加輕鬆。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者的使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用政策管理存取權
<a name="security_iam_access-manage"></a>

您可以透過建立政策並將其連接到身分或資源 AWS 來控制 AWS 中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時 AWS ， 會評估這些政策。大多數政策會以 JSON 文件 AWS 形式存放在 中。如需進一步了解 JSON 政策文件，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員會使用政策，透過定義哪些**主體**可在哪些**條件**下對哪些**資源**執行**動作**，以指定可存取的範圍。

預設情況下，使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色，供使用者後續擔任。IAM 政策定義動作的許可，無論採用何種方式執行。

### 身分型政策
<a name="security_iam_access-manage-id-based-policies"></a>

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作，以及適用的條件。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

身分型政策可分為*內嵌政策* (直接內嵌於單一身分) 與*受管政策* (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇，請參閱《IAM 使用者指南》**中的[在受管政策與內嵌政策之間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 資源型政策
<a name="security_iam_access-manage-resource-based-policies"></a>

資源型政策是附加到資源的 JSON 政策文件。範例包括 IAM *角色信任政策*與 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

資源型政策是位於該服務中的內嵌政策。您無法在資源型政策中使用來自 IAM 的 AWS 受管政策。

### 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他政策類型，可設定更多常見政策類型授予的最大許可：
+ **許可界限** — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊，請參閱《 IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 (SCP)** — 為 AWS Organizations中的組織或組織單位指定最大許可。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** — 設定您帳戶中資源可用許可的上限。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **工作階段政策** — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時，以參數形式傳遞的進階政策。如需詳細資訊，請參《*IAM 使用者指南*》中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多種政策類型
<a name="security_iam_access-manage-multiple-policies"></a>

當多種類型的政策適用於請求時，產生的許可會更複雜而無法理解。若要了解如何在涉及多個政策類型時 AWS 決定是否允許請求，請參閱《*IAM 使用者指南*》中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

## Amazon Location Service 如何與 IAM 搭配使用
<a name="security_iam_service-with-iam"></a>

在您使用 IAM 管理 Amazon Location 的存取權之前，請先了解哪些 IAM 功能可與 Amazon Location 搭配使用。






**您可以搭配 Amazon Location Service 使用的 IAM 功能**  

| IAM 功能 | Amazon Location 支援 | 
| --- | --- | 
|  [Amazon Location 的身分型政策](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  [資源型政策](#security_iam_service-with-iam-resource-based-policies)  |   否   | 
|  [政策動作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [政策資源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [政策條件索引鍵 (服務特定)](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   是  | 
|  [ACL](#security_iam_service-with-iam-acls)  |   否   | 
|  [ABAC (政策中的標籤)](#security_iam_service-with-iam-tags)  |   是  | 
|  [臨時憑證](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主體許可](#security_iam_service-with-iam-principal-permissions)  |   否   | 
|  [服務角色](#security_iam_service-with-iam-roles-service)  |   否   | 
|  [服務連結角色](#security_iam_service-with-iam-roles-service-linked)  |   否   | 

若要全面了解 Amazon Location 和其他 AWS 服務如何與大多數 IAM 功能搭配使用，請參閱《IAM *使用者指南*》中的[AWS 與 IAM 搭配使用的 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

### Amazon Location 的身分型政策
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支援身分型政策：**是

身分型政策是可以附加到身分 (例如 IAM 使用者、使用者群組或角色) 的 JSON 許可政策文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。如要了解您在 JSON 政策中使用的所有元素，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

#### Amazon Location 的身分型政策範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



若要檢視 Amazon Location 身分型政策的範例，請參閱 [Amazon Location Service 的身分型政策範例](#security_iam_id-based-policy-examples)。

### Amazon Location 內的資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**支援資源型政策：**否 

資源型政策是附加到資源的 JSON 政策文件。資源型政策的最常見範例是 IAM *角色信任政策*和 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。對於附加政策的資源，政策會定義指定的主體可以對該資源執行的動作以及在何種條件下執行的動作。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。委託人可以包含帳戶、使用者、角色、聯合身分使用者或 AWS 服務。

如需啟用跨帳戶存取權，您可以在其他帳戶內指定所有帳戶或 IAM 實體作為資源型政策的主體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

### Amazon Location 的政策動作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支援政策動作：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策會使用動作來授予執行相關聯動作的許可。



若要查看 Amazon Location 動作清單，請參閱*《服務授權參考*》中的 [Amazon Location Service 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-actions-as-permissions)。

Amazon Location 中的政策動作在動作之前使用下列字首：

```
geo
```

如需在單一陳述式中指定多個動作，請用逗號分隔。

```
"Action": [
      "geo:action1",
      "geo:action2"
         ]
```





您也可以使用萬用字元 (\$1) 來指定多個動作。例如，若要指定開頭是 `Get` 文字的所有動作，請包含以下動作：

```
"Action": "geo:Get*"
```

若要檢視 Amazon Location 身分型政策的範例，請參閱 [Amazon Location Service 的身分型政策範例](#security_iam_id-based-policy-examples)。

### Amazon Location 的政策資源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支援政策資源：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```

若要查看 Amazon Location 資源類型及其 ARNs，請參閱*《服務授權參考*》中的 [Amazon Location Service 定義的資源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-resources-for-iam-policies)。若要了解您可以使用哪些動作指定每個資源的 ARN，請參閱 [Amazon Location Service 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-actions-as-permissions)。





若要檢視 Amazon Location 身分型政策的範例，請參閱 [Amazon Location Service 的身分型政策範例](#security_iam_id-based-policy-examples)。

### Amazon Location 的政策條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支援服務特定政策條件金鑰：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

若要查看 Amazon Location 條件金鑰清單，請參閱《服務*授權參考*》中的 [Amazon Location Service 的條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-policy-keys)。若要了解您可以使用條件金鑰的動作和資源，請參閱 [Amazon Location Service 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-actions-as-permissions)。

Amazon Location 支援條件金鑰，可讓您允許或拒絕存取政策陳述式中的特定地理或裝置。下列條件索引鍵可供使用：
+ `geo:GeofenceIds` 用於 Geofence 動作。類型為 `ArrayOfString`。
+ `geo:DeviceIds` 用於追蹤器動作。類型為 `ArrayOfString`。

下列動作可與 IAM 政策`geo:GeofenceIds`中的 搭配使用：
+ `BatchDeleteGeofences`
+ `BatchPutGeofences`
+ `GetGeofence`
+ `PutGeofence`

下列動作可與 IAM 政策`geo:DeviceIds`中的 搭配使用：
+ `BatchDeleteDevicePositionHistory`
+ `BatchGetDevicePosition`
+ `BatchUpdateDevicePosition`
+ `GetDevicePosition`
+ `GetDevicePositionHistory`

**注意**  
您無法將這些條件索引鍵與 `BatchEvaluateGeofences`、 `ListGeofences`或 `ListDevicePosition`動作搭配使用。

若要檢視 Amazon Location 身分型政策的範例，請參閱 [Amazon Location Service 的身分型政策範例](#security_iam_id-based-policy-examples)。

### Amazon Location 中的 ACLs
<a name="security_iam_service-with-iam-acls"></a>

**支援 ACL：**否 

存取控制清單 (ACL) 可控制哪些主體 (帳戶成員、使用者或角色) 擁有存取某資源的許可。ACL 類似於資源型政策，但它們不使用 JSON 政策文件格式。

### ABAC 與 Amazon Location
<a name="security_iam_service-with-iam-tags"></a>

**支援 ABAC (政策中的標籤)：**是

屬性型存取控制 (ABAC) 是一種授權策略，依據稱為標籤的屬性來定義許可。您可以將標籤連接至 IAM 實體 AWS 和資源，然後設計 ABAC 政策，以便在委託人的標籤符合資源上的標籤時允許操作。

如需根據標籤控制存取，請使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。

如果服務支援每個資源類型的全部三個條件金鑰，則對該服務而言，值為 **Yes**。如果服務僅支援某些資源類型的全部三個條件金鑰，則值為 **Partial**。

如需 ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 ABAC 授權定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。如要查看含有設定 ABAC 步驟的教學課程，請參閱《*IAM 使用者指南*》中的[使用屬性型存取控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

如需標記 Amazon Location 資源的詳細資訊，請參閱 [如何使用標籤](manage-resources.md#manage-resources_how-to)。

若要檢視身分型政策範例，以根據該資源上的標籤來限制存取資源，請參閱 [根據標籤控制資源存取](#security_iam_tag-based-policy-example)。

### 搭配 Amazon Location 使用臨時登入資料
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支援臨時憑證：**是

臨時登入資料提供 AWS 資源的短期存取權，當您使用聯合或切換角色時，會自動建立。 AWS 建議您動態產生臨時登入資料，而不是使用長期存取金鑰。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)與[可與 IAM 搭配運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

### Amazon Location 的跨服務主體許可
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支援轉寄存取工作階段 (FAS)**：否 

 轉送存取工作階段 (FAS) 使用呼叫 的委託人許可 AWS 服務，並結合 AWS 服務 請求向下游服務提出請求。如需提出 FAS 請求時的政策詳細資訊，請參閱[轉發存取工作階段](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

### Amazon Location 的服務角色
<a name="security_iam_service-with-iam-roles-service"></a>

**支援服務角色：**否 

 服務角色是服務擔任的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
變更服務角色的許可可能會中斷 Amazon Location 功能。只有在 Amazon Location 提供指引時，才能編輯服務角色。

### Amazon Location 的服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支援服務連結角色：**否 

 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

如需建立或管理服務連結角色的詳細資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在資料表中尋找服務，其中包含**服務連結角色**欄中的 `Yes`。選擇**是**連結，以檢視該服務的服務連結角色文件。

## Amazon Location Service 如何與未經驗證的使用者搭配使用
<a name="security_iam_unauthenticated-users"></a>

許多使用 Amazon Location Service 的案例，包括在 Web 或行動應用程式中顯示地圖，都需要允許尚未使用 IAM 登入的使用者存取。對於這些未經驗證的案例，您有兩個選項。
+ **使用 API 金鑰** – 若要授予未驗證使用者的存取權，您可以建立 API 金鑰，以授予 Amazon Location Service 資源的唯讀存取權。這在您不想驗證每個使用者的情況下非常有用。例如，Web 應用程式。如需 API 金鑰的詳細資訊，請參閱 [使用 API 金鑰進行身分驗證](using-apikeys.md)。
+ **使用 Amazon Cognito** – API 金鑰的替代方案是使用 Amazon Cognito 授予匿名存取。Amazon Cognito 可讓您使用 IAM 政策建立更豐富的授權，以定義未經驗證的使用者可執行的操作。如需使用 Amazon Cognito 的詳細資訊，請參閱 [在 Web 中使用 Amazon Cognito 身分集區](authenticating-using-cognito.md#identity-pool-js)。

如需提供存取權給未驗證使用者的概觀，請參閱 [使用 Amazon Location Service 驗證](access.md)。

## Amazon Location Service 的身分型政策範例
<a name="security_iam_id-based-policy-examples"></a>

根據預設，使用者和角色沒有建立或修改 Amazon Location 資源的許可。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需 Amazon Location 定義的動作和資源類型的詳細資訊，包括每種資源類型的 ARNs 格式，請參閱*《服務授權參考*》中的 [Amazon Location Service 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html)。

**Topics**
+ [政策最佳實務](#security_iam_service-with-iam-policy-best-practices)
+ [使用 Amazon Location 主控台](#security_iam_id-based-policy-examples-console)
+ [允許使用者檢視他們自己的許可](#security_iam_id-based-policy-examples-view-own-permissions)
+ [在政策中使用 Amazon Location Service 資源](#security_iam_id-based-policy-examples-using-resources)
+ [更新裝置位置的許可](#security_iam_id-based-policy-examples-update-device-positions)
+ [追蹤器資源的唯讀政策](#security_iam_id-based-policy-examples-read-only-trackers)
+ [建立地理圍欄的政策](#security_iam_id-based-policy-examples-create-geofences)
+ [地理圍欄的唯讀政策](#security_iam_id-based-policy-examples-read-only-geofences)
+ [轉譯映射資源的許可](#security_iam_id-based-policy-examples-get-map-tiles)
+ [允許搜尋操作的許可](#security_iam_id-based-policy-examples-search-for-place)
+ [路由計算器的唯讀政策](#security_iam_id-based-policy-examples-calculate-route)
+ [根據條件索引鍵控制資源存取](#security_iam_condition-key-example)
+ [根據標籤控制資源存取](#security_iam_tag-based-policy-example)

### 政策最佳實務
<a name="security_iam_service-with-iam-policy-best-practices"></a>

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 Amazon Location 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

### 使用 Amazon Location 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

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

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

為了確保使用者和角色可以使用 Amazon Location 主控台，請將下列政策連接到實體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

下列政策可讓您存取 Amazon Location Service 主控台，以建立、刪除、列出和檢視您 AWS 帳戶中 Amazon Location 資源的詳細資訊。

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

或者，您可以授予唯讀許可，以促進唯讀存取。使用唯讀許可時，如果使用者嘗試寫入動作，例如建立或刪除資源，則會顯示錯誤訊息。例如，請參閱 [追蹤器資源的唯讀政策](#security_iam_id-based-policy-examples-read-only-trackers)

### 允許使用者檢視他們自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 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 資源
<a name="security_iam_id-based-policy-examples-using-resources"></a>

Amazon Location Service 會針對 資源使用下列字首：


**Amazon Location 資源字首**  

| 資源 | 資源字首 | 
| --- | --- | 
| 映射資源 | map | 
| 放置資源 | place-index | 
| 路由資源 | route-calculator | 
| 追蹤資源 | tracker | 
| Geofence 集合資源 | geofence-collection | 

使用下列 ARN 語法：

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

如需 ARNs 格式的詳細資訊，請參閱 [Amazon Resource Name (ARNs AWS 和服務命名空間](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)。

**範例**
+ 使用下列 ARN 來允許存取指定的映射資源。

  ```
  "Resource": "arn:aws:geo:us-west-2:account-id:map/map-resource-name"
  ```
+ 若要指定存取屬於特定帳戶的所有`map`資源，請使用萬用字元 (\$1)：

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

  ```
  "Resource": "*"
  ```

若要查看 Amazon Location 資源類型及其 ARNs，請參閱*《服務授權參考*》中的 [Amazon Location Service 定義的資源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-resources-for-iam-policies)。若要了解您可以使用哪些動作指定每個資源的 ARN，請參閱 [Amazon Location Service 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html#amazonlocation-actions-as-permissions)。

### 更新裝置位置的許可
<a name="security_iam_id-based-policy-examples-update-device-positions"></a>

 若要更新多個追蹤器的裝置位置，您需要將一或多個追蹤器資源的存取權授予使用者。您也想要允許使用者更新一批裝置位置。

在此範例中，除了授予 *Tracker1* 和 *Tracker2* 資源的存取權之外，下列政策還授予對 *Tracker1* 和 *Tracker2* 資源使用 `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"
          ]
        }
      }
    }
  ]
}
```

### 追蹤器資源的唯讀政策
<a name="security_iam_id-based-policy-examples-read-only-trackers"></a>

若要為 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/*"
    }
  ]
}
```

### 建立地理圍欄的政策
<a name="security_iam_id-based-policy-examples-create-geofences"></a>

若要建立政策以允許使用者建立地理圍欄，您需要授予特定動作的存取權，以允許使用者在地理圍欄集合上建立一或多個地理圍欄。

以下政策授予對*集合*的下列動作的許可：
+ `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"
    }
  ]
}
```

### 地理圍欄的唯讀政策
<a name="security_iam_id-based-policy-examples-read-only-geofences"></a>

若要為存放在您 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"
    }
  ]
}
```

### 轉譯映射資源的許可
<a name="security_iam_id-based-policy-examples-get-map-tiles"></a>

若要授予足夠的許可來轉譯地圖，您需要授予對地圖圖磚、精靈、網格和樣式描述項的存取權：
+ `geo:GetMapTile` 會擷取地圖圖磚，用來選擇性地轉譯地圖上的功能。
+ `geo:GetMapSprites` 會擷取 PNG 精靈工作表和對應的 JSON 文件，說明其中的位移。
+ `geo:GetMapGlyphs` 會擷取用於顯示文字的 Glyph。
+ `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"
    }
  ]
}
```

### 允許搜尋操作的許可
<a name="security_iam_id-based-policy-examples-search-for-place"></a>

若要建立政策以允許搜尋操作，您必須先授予 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"
    }
  ]
}
```

### 路由計算器的唯讀政策
<a name="security_iam_id-based-policy-examples-calculate-route"></a>

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

在此範例中，除了授予對 *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"
    }
  ]
}
```

### 根據條件索引鍵控制資源存取
<a name="security_iam_condition-key-example"></a>

當您建立 IAM 政策以授予使用地理圍欄或裝置位置的存取權時，您可以使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)來更精確地控制使用者可以存取的地理圍欄或裝置。您可以透過在政策的 `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"
          ]
        }
      }
    }
  ]
}
```

### 根據標籤控制資源存取
<a name="security_iam_tag-based-policy-example"></a>

當您建立 IAM 政策以授予使用 Amazon Location 資源的存取權時，您可以使用[屬性型存取控制](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)，以更好地控制使用者可以修改、使用或刪除哪些資源。您可以在政策的 `Condition`元素中包含標籤資訊，以根據資源[標籤](manage-resources.md#manage-resources_how-to)控制存取。

下列範例政策示範如何建立允許使用者建立地理圍欄的政策。這會將許可授予下列動作，以在名為 *Collection* 的地理系集合上建立一或多個地理系：
+ `geo:BatchPutGeofence` 以建立多個地理圍欄。
+ `geo:PutGeofence` 來建立單一地理圍欄。

不過，只有在*集合*標籤 `Owner`具有該使用者的使用者名稱值時，此政策才會使用 `Condition`元素來授予許可。
+ 例如，如果名為 的使用者`richard-roe`嘗試檢視 Amazon Location *Collection*，則*集合*必須加上標籤 `Owner=richard-roe`或 `owner=richard-roe`。否則會拒絕使用者存取。
**注意**  
條件標籤鍵 `Owner` 符合 `Owner` 和 `owner`，因為條件索引鍵名稱不區分大小寫。如需詳細資訊，請參閱*《IAM 使用者指南》*中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

```
{
  "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 資源許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)的教學課程，請參閱 *AWS Identity and Access Management 使用者指南*。

## 對 Amazon Location Service 身分和存取進行故障診斷
<a name="security_iam_troubleshoot"></a>

使用以下資訊來協助您診斷和修正使用 Amazon Location 和 IAM 時可能遇到的常見問題。

**Topics**
+ [我無權在 Amazon Location 中執行動作](#security_iam_troubleshoot-no-permissions)
+ [我未獲得執行 iam:PassRole 的授權](#security_iam_troubleshoot-passrole)
+ [我想要允許 以外的人員 AWS 帳戶 存取我的 Amazon Location 資源](#security_iam_troubleshoot-cross-account-access)

### 我無權在 Amazon Location 中執行動作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果您收到錯誤，告知您未獲授權執行動作，您的政策必須更新，允許您執行動作。

下列範例錯誤會在`mateojackson` IAM 使用者嘗試使用主控台檢視一個虛構 `my-example-widget` 資源的詳細資訊，但卻無虛構 `geo:GetWidget` 許可時發生。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: geo:GetWidget on resource: my-example-widget
```

在此情況下，必須更新 `mateojackson` 使用者的政策，允許使用 `geo:GetWidget` 動作存取 `my-example-widget` 資源。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

### 我未獲得執行 iam:PassRole 的授權
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到錯誤，告知您無權執行 `iam:PassRole`動作，您的政策必須更新，以允許您將角色傳遞至 Amazon Location。

有些 AWS 服務 可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

當名為 的 IAM `marymajor` 使用者嘗試使用主控台在 Amazon Location 中執行動作時，會發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，允許她執行 `iam:PassRole` 動作。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

### 我想要允許 以外的人員 AWS 帳戶 存取我的 Amazon Location 資源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員存取您的資源。您可以指定要允許哪些信任物件取得該角色。針對支援基於資源的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您的資源的許可。

如需進一步了解，請參閱以下內容：
+ 若要了解 Amazon Location 是否支援這些功能，請參閱 [Amazon Location Service 如何與 IAM 搭配使用](#security_iam_service-with-iam)。
+ 若要了解如何 AWS 帳戶 在您擁有的 資源之間提供存取權，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 中為 IAM 使用者提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。 **
+ 若要了解如何將資源的存取權提供給第三方 AWS 帳戶，請參閱《*IAM 使用者指南*》中的[將存取權提供給第三方 AWS 帳戶 擁有](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 如需了解如何透過聯合身分提供存取權，請參閱《*IAM 使用者指南*》中的[將存取權提供給在外部進行身分驗證的使用者 (聯合身分)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 如需了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱《IAM 使用者指南》**中的 [IAM 中的跨帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。