

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Location Service を使用して認証する
<a name="access"></a>

Amazon Location Service を使用するには、Amazon Location を構成するリソースと API へのアクセス権をユーザーに付与する必要があります。リソースへのアクセスを付与するには、3 つの方法があります。
+ **API キーを使用する** — 認証されていないユーザーにアクセス権を付与するには、Amazon Location Service リソースとアクションへの読み取り専用アクセスを許可する API キーを作成できます。これは、すべてのユーザーに対して認証を行わない場合に便利です。例えば、Web アプリケーションなどです。

  API キーに関する詳細については、「[API キーを使用して認証する](using-apikeys.md)」を参照してください。
+ **Amazon Cognito を使用する** — API キーに代わる方法として、Amazon Cognito を使用して匿名アクセスを許可する方法があります。Amazon Cognito では、認証されていないユーザーが実行できる操作を定義するポリシーを使用して、より豊富な認可を作成することができます。

  Amazon Cognito の使用方法の詳細については、「[Amazon Cognito を使用して認証する](authenticating-using-cognito.md)」を参照してください。
+ **AWS Identity and Access Management (IAM) を使用する** — AWS IAM アイデンティティセンター または 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 は、似たようなシナリオに同じような方法で使用されます。では、どちらか一方を選択する際の理由は何でしょうか。以下のリストでは、その 2 つの違いをいくつか紹介します。
+ **パフォーマンス**
  + **API キー:** 比較的速い
  + **Amazon Cognito:** 比較的遅い
+ **可用性:**
  + **API キー:** マップ、場所、ルート用の Amazon Location API
  + **Amazon Cognito:** すべての API
+ **別の認証方法と組み合わせられる?**
  + **API キー:** いいえ
  + **Amazon Cognito:** はい

**比較**
+ API キーは、Maps、Places、Routes の各アクションでのみ使用できます。Amazon Cognito は、ほとんどの Amazon Location Service API へのアクセスを認証するために使用されます。
+ API キーを使用したマップリクエストのパフォーマンスは、通常、Amazon Cognito を使用した同様のシナリオよりも高速です。認証が簡単なため、短期間に同じマップタイルを再度取得したときに、サービスとキャッシュされたリクエストへのラウンドトリップが少なくなります。
+ Amazon Cognito では、Amazon Cognito フェデレーション ID を使用して、独自の認証プロセスを使用したり、複数の認証方法を組み合わせたりできます。

  詳細については、「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 API を認証なしで呼び出すことができます。

例えば、API キーをリソースや `GetPlace*` API に関連付けると、その API キーを使用するアプリケーションは特定の API を呼び出すことができます。同じ API キーは、関連付けられていないリソースを変更または更新、あるいは API を呼び出すアクセス許可を付与しません。

アプリケーションで Amazon Location Service API を呼び出すときは、通常、API コールを行う権限を持つ*認証済みユーザー*としてこの呼び出しを行います。ただし、アプリケーションのすべてのユーザーを認証しない場合もあるでしょう。

例えば、会社の所在地を表示する Web アプリケーションを、ログインしているかどうかに関係なく、Web サイトを使用するすべてのユーザーが利用できるようにしたい場合があります。この場合API キーを使ってAPI 呼び出しを行うという方法もあります。

API キーを使用するタイミングの詳細については、「[API キーのベストプラクティス](#api-keys-best-practices)」を参照してください。

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>

API キーは、Amazon Location Service コンソール AWS CLI、または Amazon Location 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 キーのオプションの説明。
   + **リソース** — ドロップダウンで、この API キーを使用してアクセスを許可する Amazon Location リソースを選択します。**リソースの追加**を選択すると、複数のリソースを追加できます。
   + **アクション** — この API キーを利用して、承認したアクションを指定します。選択した各リソースタイプと一致するアクションを少なくとも 1 つ選択する必要があります。例えば、Place リソースを選択した場合は、**Places Actions** の下にある選択肢を少なくとも 1 つ選択する必要があります。
   + **有効期限** — API キーの有効期限を任意で追加することができます。詳細については、「[API キーのベストプラクティス](#api-keys-best-practices)」を参照してください。
   + **[クライアントの制限]** – オプションで、API キーを使用できる 1 つ以上のウェブドメインまたは 1 つ以上の Android または Apple アプリを追加します。例えば、API キーがウェブサイト `example.com` で実行されるアプリケーションを許可するものであれば、許可されるリファラーとして `*.example.com/` を置くことができます。
   + **タグ** — オプションで API キーにタグを追加します。

1. **API キーを作成**を選択して API キーを作成します。

1. API キーの詳細ページには、作成した API キーに関する情報が表示されます。**API キーを表示**を選択すると、Amazon Location API を呼び出すときに使用するキーバリューが表示されます。キー値は次のフォーマットになります`v1.public.a1b2c3d4...`。

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

1. [create-key](https://docs.aws.amazon.com/cli/latest/reference/location/create-key.html) コマンドを使用します。次の例では、有効期限なしで `ExampleKey` という名前の API キーを作成し、1 つのマップリソースにアクセスします。

   ```
   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`を使用してキーバリューを後で検索することもできます。次の例は、`describe-key` という API キーで `ExampleKey` を呼び出す方法を示しています。

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

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

Amazon Location API の [CreateKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_CreateKey.html) オペレーションを使用してください。次の例は、`ExampleKey` という名前の API キーを作成し、有効期限なしで 1 つのマップリソースにアクセスする API リクエストです。

```
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 API を呼び出すことができます。

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

API キーをサポートする API には、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 ]

Sig v4 での署名を避けるため、`--key` パラメータを使用する場合、`--no-sign-request` パラメータも使用する必要があります。

```
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 キーには、 AWS アカウント内の 1 つ以上のリソースへのアクセスを許可するプレーンテキストの*値*が含まれています。API キーをコピーしたユーザーは、同じリソースと API にアクセスできます。潜在的な影響を最小限に抑えるには、次のベストプラクティスを確認します。
+ **API キーを制限する**

  このような状況を回避するには、API キーを制限することをお勧めします。キーを作成するとき、キーを使用できる、ドメイン、Android アプリまたは Apple アプリを指定できます。
+ **API キーの有効期間を管理する**

  無期限に機能する API キーの作成ができます。ただし、一時的な API キーを作成したり、API キーを定期的にローテーションしたり、既存の API キーを取り消したりする場合は、*API キーの有効期限*を使用できます。
  + API キーを作成または更新するときに、API キーの有効期限を設定できます。
  + API キーの有効期限が切れると、キーは自動的に無効化されます。非アクティブなキーはマップリクエストには使用できなくなります。
  + 一時キーを永続的キーに変更するには、有効期限を削除します。
  + API キーは、非アクティブ化してから 90 日後に削除することができます。
  + 過去 7 日以内に使用された API キーを非アクティブ化しようとすると、変更の確認を求めるメッセージが表示されます。

    Amazon Location Service API または を使用している場合は AWS CLI、 `ForceUpdate`パラメータを に設定します。`true`そうしないと、エラーが発生します。

# Amazon Cognito を使用して認証する
<a name="authenticating-using-cognito"></a>

フロントエンド SDK リクエストで AWS Identity and Access Management (IAM) ユーザーを直接使用する代わりに、Amazon Cognito 認証を使用できます。

Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。アプリケーションがスコープダウンされた一時的な AWS 認証情報を取得する方法として、Amazon Location で Amazon Cognito の認証されていない ID プールを使用できます。

詳細については、「*Amazon Cognito デベロッパーガイド*」の「[ユーザープールの使用を開始する](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-user-pools.html)」を参照してください。

以下の場合は、この認証形式を使用します。
+ **認証されていないユーザー** — 匿名ユーザーがいるウェブサイトがある場合は、Amazon Cognito アイデンティティプールを使用できます。

  詳細については、「[Amazon Cognito を使用して認証する](#authenticating-using-cognito)」セクションを参照してください。
+ **独自の認証** — 独自の認証プロセスを使用する場合や、複数の認証方法を組み合わせたい場合は、Amazon Cognito フェデレーテッド ID を使用できます。

  詳細については、「*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>

認証されていない ID ロールに関連付けられた AWS Identity and Access Management (IAM) ポリシーは、次のアクションで使用できます。

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

Maps アクションのリスト
+ `geo-maps:GetStaticMap`
+ `geo-maps:GetTile`

**注記**  
上記のアクションのリソース名は次のとおりです。  

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

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

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 ]

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 ID プールを作成して、Amazon Cognito コンソール、、または Amazon CognitoAmazon Cognito APIs を使用して AWS CLI、認証されていないゲストがアプリケーションにアクセスできるようにします。

**重要**  
作成するプールは、使用している Amazon Location Service リソースと同じ AWS アカウント および AWS リージョンにある必要があります。

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

**Amazon Cognito コンソールを使用して、アイデンティティプールを作成するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)に移動します。

1. [**アイデンティティプールの管理**] を選択します。

1. [**新しいアイデンティティプールの作成**] を選択し、アイデンティティプールの名前を入力します。

1. 折りたたみ式の **[認証されていない ID]** セクションで、**[認証されていない ID に対してアクセスを有効にする]** を選択します。

1. **[プールの作成]** を選択します。

1. アイデンティティプールで使用する IAM ロールを選択します。

1. **[詳細を表示]** を展開します。

1. **[認証されていない ID]** に、ロール名を入力します。

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. **[許可]** を選択してアイデンティティプールを作成します。

------

## ウェブで Amazon Cognito のアイデンティティプールを使用する
<a name="identity-pool-js"></a>

次の例では、作成した認証されていないアイデンティティプールを認証情報と交換し、その認証情報を使用して `CalculateIsolines` を呼び出します。この作業を簡素化するために、この例では Amazon Location の「[認証ヘルパーの使用方法](how-to-auth-helper.md)」の手順を使用します。これは認証情報の取得と更新の両方の代わりになります。

この例では、 AWS SDK for JavaScript v3 を使用しています。

```
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 Identity and Access のトラブルシューティング](#security_iam_troubleshoot)

## オーディエンス
<a name="security_iam_audience"></a>

 AWS Identity and Access Management (IAM) の使用方法は、ロールによって異なります。
+ **サービスユーザー** - 機能にアクセスできない場合は、管理者にアクセス許可をリクエストします (「[Amazon Location Service Identity and Access のトラブルシューティング](#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>

認証とは、ID 認証情報 AWS を使用して にサインインする方法です。、IAM ユーザー AWS アカウントのルートユーザー、または IAM ロールを引き受けることで認証される必要があります。

 AWS IAM アイデンティティセンター (IAM Identity Center)、シングルサインオン認証、Google/Facebook 認証情報などの ID ソースからの認証情報を使用して、フェデレーティッド ID としてサインインできます。サインインの詳細については、「*AWS サインイン ユーザーガイド*」の「[AWS アカウントにサインインする方法](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)」を参照してください。

プログラムによるアクセスの場合、 は SDK と CLI AWS を提供してリクエストを暗号化して署名します。詳細については、「*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 のサービス および リソースへの完全なアクセス権を持つ AWS アカウント *ルートユーザー*と呼ばれる 1 つのサインインアイデンティティから始めます。日常的なタスクには、ルートユーザーを使用しないことを強くお勧めします。ルートユーザー認証情報を必要とするタスクについては、「*IAM ユーザーガイド*」の「[ルートユーザー認証情報が必要なタスク](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)」を参照してください。

### フェデレーテッドアイデンティティ
<a name="security_iam_authentication-federated"></a>

ベストプラクティスとして、人間のユーザーが一時的な認証情報 AWS のサービス を使用して にアクセスするには、ID プロバイダーとのフェデレーションを使用する必要があります。

*フェデレーティッド ID* は、エンタープライズディレクトリ、ウェブ ID プロバイダー、または ID ソースの認証情報 AWS のサービス を使用して Directory Service にアクセスするユーザーです。フェデレーテッドアイデンティティは、一時的な認証情報を提供するロールを引き受けます。

アクセスを一元管理する場合は、 AWS IAM アイデンティティセンターをお勧めします。詳細については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[IAM アイデンティティセンターとは](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)*は、特定の個人やアプリケーションに対する特定のアクセス許可を持つアイデンティティです。長期認証情報を持つ IAM ユーザーの代わりに一時的な認証情報を使用することをお勧めします。詳細については、*IAM ユーザーガイド*の[「ID プロバイダーとのフェデレーションを使用して にアクセスする必要がある AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)」を参照してください。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](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)*は、特定のアクセス許可を持つアイデンティであり、一時的な認証情報を提供します。ユーザー[から IAM ロール (コンソール) に切り替えるか、 または API オペレーションを呼び出すことで、ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)を引き受けることができます。 AWS CLI AWS 詳細については、「*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 には、ポリシーを作成し、ID 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) を参照してください。

アイデンティティベースのポリシーは、*インラインポリシー* (単一の ID に直接埋め込む) または*管理ポリシー* (複数の ID にアタッチされたスタンドアロンポリシー) にすることができます。管理ポリシーとインラインポリシーのいずれかを選択する方法については、「*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>

1 つのリクエストに複数のタイプのポリシーが適用されると、結果として作成されるアクセス許可を理解するのがさらに難しくなります。が複数のポリシータイプが関与する場合にリクエストを許可するかどうか 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 へのアクセスを管理する前に、Amazon Location で使用できる IAM 機能について理解しておく必要があります。






**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>

**ポリシーアクションのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

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>

**ポリシーリソースのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

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

Amazon Location リソースのタイプとその ARN のリストを確認するには、「*サービス認証リファレンス*」の「[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>

**サービス固有のポリシー条件キーのサポート:** あり

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

`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`。タイプは `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 での ACL
<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)でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は**あり**です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「**部分的**」になります。

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)」および「[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-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 を使用する多くのシナリオでは、IAM でサインインしていないユーザーにアクセスを許可する必要があります。このような認証されていないシナリオでは、2 つのオプションがあります。
+ **API キーを使用する** — 認証されていないユーザーにアクセス権を付与するには、Amazon Location Service リソースへの読み取り専用アクセスを許可する API キーを作成できます。これは、すべてのユーザーを認証したくない場合に便利です。例えば、Web アプリケーションなどです。API キーに関する詳細については、「[API キーを使用して認証する](using-apikeys.md)」を参照してください。
+ **Amazon Cognito を使用する** — API キーに代わる方法として、Amazon Cognito を使用して匿名アクセスを許可する方法があります。Amazon Cognito では、認証されていないユーザーが実行できる操作を定義する IAM ポリシーを使用して、より詳細な認可を作成できます。Amazon Cognito の使用方法の詳細については、「[ウェブで 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 が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、*サービス認可リファレンス*の「[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>

ID ベースのポリシーは、ユーザーのアカウント内で誰かが 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 アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する** - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 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-collection | 

次の ARN 構文を使用します。

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

ARN の形式の詳細については、[「Amazon リソースネーム (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 リソースのタイプとその ARN のリストを確認するには、「*サービス認証リファレンス*」の「[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>

 複数のトラッカーのデバイス位置を更新するには、1 つ以上のトラッカーリソースへのアクセス権をユーザーに付与する必要があります。また、ユーザーがデバイスの位置を一括更新できるようにしたいとします。

この例では、*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` を使用して 1 つのデバイスの位置を取得します。
+ `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>

ユーザーにジオフェンスの作成を許可するポリシーを作成するには、ユーザーがジオフェンスコレクションに 1 つ以上のジオフェンスを作成できるようにする特定のアクションへのアクセスを許可する必要があります。

以下のポリシーは、*Collection* での以下のアクションに対する権限を付与します。
+ `geo:BatchPutGeofence` を使用して複数のジオフェンスを作成します。
+ `geo:PutGeofence` を使用して 1 つのジオフェンスを作成します。

```
{
  "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 アカウントのジオフェンスコレクションに保存されているジオフェンスの読み取り専用ポリシーを作成するには、ジオフェンスを保存しているジオフェンスコレクションから読み取るアクションへのアクセスを許可する必要があります。

以下のポリシーは、*Collection* での以下のアクションに対する権限を付与します。
+ `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` は、テキストの表示に使用されるグリフを取得します。
+ `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>

Amazon Location リソースを使用するアクセス権を付与する IAM ポリシーを作成する場合、[属性ベースのアクセス制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) を使用して、ユーザーが変更、使用、または削除できるリソースをより適切に制御できます。そのためには、ポリシーの `Condition` 要素に [タグ](manage-resources.md#manage-resources_how-to) 情報を含めて、リソースタグに基づいてアクセスを制御します。

次のポリシー例は、ユーザーにジオフェンスを作成することを許可するポリシーの作成方法を示しています。これにより、*Collection* というジオフェンスコレクションに 1 つ以上のジオフェンスを作成する次のアクションを実行できる権限が付与されます。
+ `geo:BatchPutGeofence` を使用して複数のジオフェンスを作成します。
+ `geo:PutGeofence` を使用して 1 つのジオフェンスを作成します。

ただし、このポリシーでは、*Collection* タグ、`Owner`、にそのユーザーのユーザー名の値がある場合にのみ、 `Condition` 要素を使用してアクセス許可を付与します。
+ 例えば、`richard-roe` という名前のユーザーが Amazon Location *Collection* を表示しようとすると、その *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 Identity and Access のトラブルシューティング
<a name="security_iam_troubleshoot"></a>

Amazon Location と IAM の使用に伴って発生する可能性がある一般的な問題の診断や修復には、次の情報を利用してください。

**Topics**
+ [Amazon Location でアクションを実行する認可がありません](#security_iam_troubleshoot-no-permissions)
+ [iam:PassRole を実行する権限がありません](#security_iam_troubleshoot-passrole)
+ [自分の 以外のユーザーに Amazon Location リソース AWS アカウント へのアクセスを許可したい](#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
```

この場合、`geo:GetWidget` アクションを使用して `my-example-widget` リソースへのアクセスを許可するように、`mateojackson` ユーザーのポリシーを更新する必要があります。

サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン認証情報を提供した担当者が管理者です。

### iam:PassRole を実行する権限がありません
<a name="security_iam_troubleshoot-passrole"></a>

`iam:PassRole` アクションを実行する権限がないというエラーが表示された場合は、ポリシーを更新して Amazon Location にロールを渡せるようにする必要があります。

一部の AWS のサービス では、新しいサービスロールまたはサービスにリンクされたロールを作成する代わりに、そのサービスに既存のロールを渡すことができます。そのためには、サービスにロールを渡すアクセス許可が必要です。

次の例のエラーは、`marymajor` という IAM ユーザーがコンソールを使用して Amazon Location でアクションを実行しようとする場合に発生します。ただし、このアクションをサービスが実行するには、サービスロールから付与されたアクセス許可が必要です。Mary には、ロールをサービスに渡すアクセス許可がありません。

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

この場合、Mary のポリシーを更新してメアリーに `iam:PassRole` アクションの実行を許可する必要があります。

サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン資格情報を提供した担当者が管理者です。

### 自分の 以外のユーザーに Amazon Location リソース AWS アカウント へのアクセスを許可したい
<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)」を参照してください。
+ ID フェデレーションを介してアクセスを提供する方法については、*IAM ユーザーガイド* の [外部で認証されたユーザー (ID フェデレーション) へのアクセスの許可](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)」を参照してください。