[アップデート] Amazon Location Service の API キーのクライアント制限機能が強化されました
いわさです。
Amazon Location Service には認証外のユーザーにリソース(マップやルートなど)を使わせたい時などのために API キーを発行してパブリックに使わせることができます。
この API キーですが、これまでキーを埋め込むアプリケーションを制限を行うことができなかったのですが、Android や iOS アプリケーションで呼び出す際のクライアント制限を行うことが出来るようになりました。
これによって特定のクライアントアプリケーションに埋め込んだ API キーが漏洩した場合でも、その指定されたクライアントアプリケーションでのみ利用させることができるようになります。
設定方法
Amazon Location Service API キーコンソールから任意のキーを新規作成、あるいは編集をします。
その際に次ように「クライアント制限」という項目が表示されていると思います。従来は Allow Domains が表示されていたのですが、ここが包括的にクライアント制限用の設定項目に変わった感じですね。

クライアント制限では従来のリファラーに加えていくつか複数の項目を設定できるようになっています。見てみましょう。

以下は従来設定できていたリファラーです。
Web アプリケーションなどに埋め込む際には埋め込み先のドメインを指定することで対象ドメイン上でしか利用できないように制限します。

以下は Android アプリを制限する場合です。
Android の場合はパッケージ名と証明書のフィンガープリントを設定する必要があります。
パッケージ名は build.gradle などに記述する com.company.package 形式のやつです。証明書フィンガープリントは APK の署名に使ったものの SHA-1 ハッシュを使います。

以下は iOS アプリの場合です。こちらはバンドル ID のみで良いみたいです。Info.plist などに設定されているやつです。

試してみる
今回はモバイルアプリケーションまでは用意できなかったのでクライアント制限をおこなったときにウェブアプリケーションに埋め込んだキーがどのような影響を受けるのかを確認してみました。
次のように iOS アプリの制限を行ってみます。

次のように他のWebアプリケーションから読み込んだ際にマップのロードができなくなりました。

なお、各モバイルアプリケーションから API キーを利用する際にはマップ呼び出し URL などで API キーを使う必要があります。
詳細は以下などもご確認ください。
さいごに
本日は Amazon Location Service の API キーのクライアント制限機能が強化されたので使ってみました。
API キーをアプリケーションに埋め込むと漏洩した時などを考慮する必要があったのでちょっと面倒だったのですが、利用元を制限できる機能は良いですね。






