Amazon Web Services ブログ

ベストプラクティス:Amazon Location Service リソースの保護

位置情報データは、セキュリティの専門家から厳しい監視の対象となっています。人、車両、資産の現在位置を把握することで、配送先や会場内の人数を把握したり、車両群の経路を最適化したりと、産業界には多くの利点があります。本記事では、Amazon Web Services (AWS) が、転送中および保存中の位置情報を保護する方法と、情報の安全性とコンプライアンスを維持するための追加のセキュリティ機能を利用する方法について説明します。

一般データ保護規則 (GDPR) は、個人データを “氏名、識別番号、位置情報、オンライン識別子、またはその人の身体的、生理的、遺伝的、精神的、経済的、文化的、社会的アイデンティティに固有の 1 つまたは複数の要素など、特定または識別できる人に関するあらゆる情報 “と定義しています。また、多くの企業は、特定のアプリケーションがユーザーの位置やデータを追跡するだけでなく、その情報を他のアプリケーションやウェブサイトと共有したい場合、それを明示し、ユーザーに対する透明性を向上させることを望んでいます。競争環境の中で安全な立場を維持するために、組織はこれらの変化に迅速に対応する必要があります。

2021 年 6 月 1 日、AWS は Amazon Location Service (以降、Amazon Location) を一般的にお客様にご利用いただけるようにしました。Amazon Location を利用することで、地図や関心のあるポイントの提供、住所を地理座標に変換、経路計算、リソースの追跡、位置情報に基づくアクションの起動を行うアプリケーションを構築することができます。このサービスにより、開発者ツールで位置情報にアクセスでき、モニタリング・管理機能でアプリケーションをより速く本番環境に移行することができます 。

本記事では、Amazon Location が提供するデータの安全性を確保するための機能と、お客様の組織が目指すセキュリティのレベルに到達するためのベストプラクティスを紹介します。

データ制御とデータの権利

Amazon Location は、世界的に信頼されているプロバイダーである Esri と HERE Technologies を利用して、お客様に高品質の位置情報を提供しています。AWS パートナーによって提供される地図、場所、ルートなどは、正確なだけでなく、常に更新され最新化されたデータとしてご利用できます。

AWS は、位置情報データを匿名化し、保存時およびパートナーシステムへの送信時の両方で暗号化します。並行して、第三者は、当社のサービス条件に従って、お客様のデータを販売したり、広告目的に使用したりすることはできません。これにより、機密情報を保護し、ユーザーのプライバシーを守り、組織のコンプライアンスリスクを低減することができます。詳細については、Amazon Location データセキュリティとデータ制御 のドキュメントをご覧ください。

統合

位置情報ソリューションを運用するのは大変なことです。ソリューションを構築するだけでなく、AWS で構築された他のアプリケーションと統合する必要があるからです。Amazon Location は、開発プロセスを促進するサービスと統合することで、セキュリティの観点からこのプロセスを促進し、ソリューションのセキュリティ面を強化します。

暗号化

Amazon Location は、デフォルトで AWS 所有のキーを使用して、個人を特定できるデータを自動的に暗号化します。AWS 所有のキーは、AWS サービスが所有し、複数の AWS アカウントで使用するために管理する AWS Key Management Service (AWS KMS) キーのコレクションです。AWS 所有のキーはお客様の AWS アカウントにはありませんが、Amazon Location はお客様のアカウント内のリソースを保護するために、関連する AWS 所有のキーを使用することができます。

お客様が独自のキーを使用することを選択した場合、AWS KMS の恩恵を受け、独自の暗号化キーを保存し、ジオフェンシングとトラッキングデータに暗号化の第二層を追加するために使用することができます。

認証と認可

Amazon Location は、AWS Identity and Access Management (IAM) とも統合されており、その ID ベースのポリシーを使用して、Amazon Location 上で許可または拒否されるアクションやリソース、およびアクションが許可または拒否される条件を指定することが可能です。また、未認証のアクセスを必要とするアクションについては、未認証の IAM ロールを使用することができます。

IAM の拡張機能として、Amazon Cognito は、独自のプロセスでユーザーを認証するフロントエンドクライアントとソリューションを統合する必要がある場合のオプションになりえます。この場合、Cognito を使用して、認証、承認、およびユーザー管理を処理することができます。Cognito の未認証 ID プールを Amazon Location で使用すると、アプリケーションが一時的にスコープダウンした AWS 認証情報を取得する方法として使用することができます。Cognito と Amazon Location のセットアップの詳細については、Add a map to your webpage with Amazon Location Service を参照してください。

未認証のロールの範囲をドメインに限定

マップタイルの取得、関心のあるポイントの検索、デバイスの位置の更新、および経路計算などのアクションを、ユーザが認証されることなく実行できるアプリケーションを構築している場合、未認証のロールを使用することができます。

Amazon Location のリソースにアクセスするために未認証のロールを使用する場合、ポリシーで指定した HTTP referer にリソースアクセスを制限するための追加の条件を追加することができます。aws:referer リクエストコンテキスト値は、HTTP ヘッダーで呼び出し元から提供され、Web ブラウザのリクエストに含まれます。

以下は、aws:referer 条件を使用して、ドメイン example.com からの要求がある場合にのみ Map リソースへのアクセスを許可するポリシーの例です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "MapsReadOnly",
      "Effect": "Allow",
      "Action": [
        "geo:GetMapStyleDescriptor",
        "geo:GetMapGlyphs",
        "geo:GetMapSprites",
        "geo:GetMapTile"
      ],
      "Resource": "arn:aws:geo:us-west-2:111122223333:map/MyMap",
      "Condition": {
        "StringLike": {
          "aws:Referer": "https://www.example.com/*"
        }
      }
    }
  ]
}

aws:referer やその他のグローバル条件について詳しくは、AWS グローバル条件コンテキストキーをご覧ください。

AWS KMS を使用したカスタマーマネージドキーによるトラッカーとジオフェンス情報の暗号化

トラッカーとジオフェンスコレクションリソースを作成するとき、ジオフェンスとトラッキングデータに暗号化の第二層を追加するために、対称的なカスタマーマネージドキーを使用するオプションがあります。このキーはお客様が完全に管理できるため、お客様独自の IAM ポリシーを確立して維持し、キーのローテーションを管理し、キーの削除をスケジュールすることができます。

カスタマーマネージドキーでリソースを作成すると、ジオフェンスのジオメトリとトラッキングデバイスに関連するすべての位置は、2 層の暗号化を持つようになります。次のセクションでは、キーを作成し、そのキーを使用して自分のデータを暗号化する方法について説明します。

AWS KMS 対称キーの作成

まず、AWS KMS キーが Amazon Location の使用を許可されたプリンシパルと、キーの管理を許可されたプリンシパルにアクセスを許可するキーポリシーを作成する必要があります。ポリシーでの権限指定の詳細については、AWS KMS 開発者ガイドを参照してください。

キーポリシーの作成

以下のポリシーを参考に、JSON ポリシーファイルを作成します。このキーポリシーは、Amazon Location が AWSアカウントから呼び出されたときのみ、KMS キーへのアクセスを許可するようにします。これは、kms:ViaServicekms:CallerAccount の条件を組み合わせることで動作します。以下のポリシーでは、us-west-2 を任意の AWS リージョンに、kms:CallerAccount の値を自分の AWS アカウント ID に置き換えてください。KMS キー管理者ステートメントを調整し、あなた自身を含む実際のキー管理者のプリンシパルを反映させます。Principal 要素の使用方法については、AWS JSON ポリシー要素のドキュメントを参照してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Amazon Location",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "geo.us-west-2.amazonaws.com",
          "kms:CallerAccount": "111122223333"
        }
      }
    },
    {
      "Sid": "Allow access for Key Administrators",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"
      },
      "Action": [
        "kms:Create*",
        "kms:Describe*",
        "kms:Enable*",
        "kms:List*",
        "kms:Put*",
        "kms:Update*",
        "kms:Revoke*",
        "kms:Disable*",
        "kms:Get*",
        "kms:Delete*",
        "kms:TagResource",
        "kms:UntagResource",
        "kms:ScheduleKeyDeletion",
        "kms:CancelKeyDeletion"
      ],
      "Resource": "*"
    }
  ]
}

次のステップでは、AWS Command Line Interface (AWS CLI) を使用します。AWS CLI のドキュメントを参考に、最新版をインストールしておいてください。

Tip: AWS CLI は設定ステップで定義したリージョンをデフォルトとみなしますが、各コマンドラインの最後に -region <your region> を追加することで、この設定を上書きすることができます。また、ユーザーがこれらのアクションを実行するのに適切な権限を持っていることを確認してください。

対称キーの作成

ここで、create-key コマンドを実行し、前のステップで作成したポリシーファイルを渡すことで、AWS KMS 上に対称キーを作成することができます。

aws kms create-key –policy file://<your JSON policy file>

また、AWS KMS コンソールを使用して、先程のキーポリシーで対称キーを作成することも可能です
コマンドを実行すると、以下のような出力が表示されるはずです。KeyId の値に注目してください。

{
  "KeyMetadata": {
    "Origin": "AWS_KMS",
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "Description": "",
    "KeyManager": "CUSTOMER",
    "Enabled": true,
    "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
    "KeyUsage": "ENCRYPT_DECRYPT",
    "KeyState": "Enabled",
    "CreationDate": 1502910355.475,
    "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "AWSAccountId": "111122223333",
    "MultiRegion": false
    "EncryptionAlgorithms": [
      "SYMMETRIC_DEFAULT"
    ],
  }
}

Amazon Location トラッカーとジオフェンスコレクションリソースの作成

2層目の暗号化に AWS KMS を使用する Amazon Location トラッカーリソースを作成するには、前のステップからキー ID を渡して、次のコマンドを実行します。

aws location \
	create-tracker \
	--tracker-name "MySecureTracker" \
	--kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"

このコマンドの出力は次のとおりです。

{
    "CreateTime": "2021-07-15T04:54:12.913000+00:00",
    "TrackerArn": "arn:aws:geo:us-west-2:111122223333:tracker/MySecureTracker",
    "TrackerName": "MySecureTracker"
}

同様に、独自の KMS 対称キーを使用してジオフェンスコレクションを作成するには、 キー ID を変更して以下のコマンドを実行します。

aws location \
	create-geofence-collection \
	--collection-name "MySecureGeofenceCollection" \
	--kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab"

このコマンドの出力は次のとおりです。

{
    "CreateTime": "2021-07-15T04:54:12.913000+00:00",
    "TrackerArn": "arn:aws:geo:us-west-2:111122223333:geofence-collection/MySecureGeoCollection",
    "TrackerName": "MySecureGeoCollection"
}

これらの手順を踏むことで、ジオフェンスコレクションとトラッカーに第二の暗号化層を追加したことになります。

データ保持のベストプラクティス

トラッカーとジオフェンスコレクションは保存され、許可なく AWS アカウントから離れることはありませんが、Amazon Location では異なるライフサイクルを持ちます。

トラッカーは、経度/緯度形式で追跡されるデバイスやアセットの位置を保存します。これらの位置は、自動的に削除される前に、サービスによって 30 日間保存されます。履歴目的で必要な場合は、このデータを別のデータストレージレイヤーに転送し、共有責任モデルに基づく適切なセキュリティ対策を適用することができます。

ジオフェンスコレクションは、お客様が明示的に削除を選択するまで提供したジオメトリを保存するため、AWS マネージドキーまたは独自のキーによる暗号化を使用して、必要な期間だけ保存することが可能です。

アセットトラッキングとロケーションストレージのベストプラクティス

トラッカーが作成されたら、Amazon Location フロントエンド SDK を使用するか、BatchUpdateDevicePosition API を呼び出すことによって、位置情報の更新の送信を開始することができます。どちらの場合も、最低限、緯度と経度、デバイスがその位置にあった時間、追跡対象のアセットを表すデバイス固有の識別子を提供する必要があります。

デバイス ID の保護

このデバイス ID は任意の文字列を使用することができますので、特定の ID を使用されないようにするための対策を施す必要があります。避けるべきものの例としては、以下のようなものがあります。

  • 姓・名
  • 施設名
  • 運転免許証や社会保障番号などの書類
  • 電子メール
  • 住所
  • 電話番号

緯度と経度の精度

緯度と経度の座標は、精度を度数で表し、小数点以下が異なる距離を表します (赤道で測定した場合)。

Amazon Location は、小数点以下 6 桁までの精度 (0.000001) をサポートしており、これは赤道では約 11 cm または 4.4 インチに相当します。トラッカーに送信される緯度と経度のペアの小数点以下の桁数を、必要な精度に基づいて制限することができ、位置情報の範囲を拡大し、ユーザーにさらなるプライバシーを提供することができます。

図1は、緯度と経度のペアを小数点以下の桁数で示したものです。

Figure 1: Geolocation decimal precision details

位置フィルタリング

Amazon Location は、トラッカーのオプションとして、位置フィルタリングを導入し、コスト削減と不正確なデバイス位置更新によるジッターの低減を可能にしました。

  • 距離ベースフィルタリングでは、デバイスの移動距離が 30 メートル (98.4 フィート) 未満の場合、位置情報の更新は無視されます。
  • 時間ベースフィルタリングは、すべての位置情報の更新をリンクされたジオフェンスコレクションに対して評価しますが、すべての位置情報の更新が保存されるわけではありません。更新頻度が 30 秒より多い場合、一意のデバイス IDごとに 30 秒に 1 回のみ更新が保存されます。
  • 精度ベースフィルタリングでは、移動した距離がデバイスが提供する測定精度よりも小さい場合、位置情報の更新は無視されます。

フィルタリングオプションを使用すると、送信および保存される位置情報の更新数を減らすことができるため、提供される位置情報の詳細レベルを下げ、プライバシーのレベルを上げることができます。

ロギングとモニタリング

Amazon Location は、組織のセキュリティ標準に準拠するために必要な観測性を提供する AWS サービスと統合されています。

Amazon Location にアクセスするユーザ、ロール、AWS サービスによって実行されたすべてのアクションを記録するには、AWS CloudTrail の利用を検討してください。CloudTrail は、誰がリソースにアクセスしているか、アカウント ID、プリンシパル ID、ソース IP アドレス、タイムスタンプなどの詳細な情報を提供します。さらに、Amazon CloudWatch は、Amazon Location リソースに関連するメトリクスを収集し分析するのに役立ちます。CloudWatch では、コールカウントの事前定義されたしきい値に基づいて、アラームを作成することも可能です。これらのアラームは、Amazon Simple Notification Service (Amazon SNS) を通じて通知を作成し、異常の調査を担当するチームに自動的に警告を発することができます。

まとめ

AWS では、セキュリティは最優先事項です。ここでは、セキュリティとコンプライアンスは AWS とお客様の間で共有される責任であり、AWS は AWS クラウドで提供されるすべてのサービスを実行するインフラを保護する責任を負っています。お客様は、AWS のインフラストラクチャ上に構築するソリューションに必要なすべてのセキュリティ設定を行う責任を負います。

本記事では、Amazon Location がお客様にデータプライバシーとデータ保護を提供するために提供するコントロールとガードレールについて説明しました。また、セキュリティ体制を強化するために使用できるその他のメカニズムについてもご紹介しました。

Amazon Location 開発者ガイドに従って、独自の安全なジオロケーションソリューションの構築を開始し、ガイドのセキュリティトピックを読んで、サービスがセキュリティを処理する方法についてもっと学んでください。

この記事に関するフィードバックがある場合は、以下のコメント欄でコメントを送信してください。本記事について質問がある場合は、Amazon Location Service フォーラムに新しいスレッドを立ち上げるか、AWS サポートにお問い合わせください。

この記事は、Best practices: Securing your Amazon Location Service resources を翻訳したのものです。
翻訳は Solutions Architect の 稲田大陸 が担当しました。