Alexaスキルのセキュリティのテスト

Alexaスキルのセキュリティのテスト

スキルのクラウドベースのサービスは、ユーザーデータを保護するためにAmazonのセキュリティ要件を満たしている必要があります。具体的な要件は、ホスティングにAWS Lambdaを使っているか、独自のエンドポイントを使っているかによって異なります。AWS Lambdaは、Amazon Web Servicesによって提供されるサービスです。

2.1. Lambda関数としてホスティングされたスキル

Lambda関数ではリクエストがサービスに向けて行われたものであることを確認する必要があります。詳細については、スキルから受け取ったリクエストを確認するを参照してください。

2.2. 独自のエンドポイントでウェブサービスとしてホスティングされたスキル

  • ウェブサービスは、接続の確立時に有効な信頼できる証明書を提示する必要があります。また、対応する秘密鍵を保持していなければなりません。Amazonは、Amazon認定の認証局が署名した証明書のみを信頼します。
  • 公開中のスキルに自己署名証明書は使用できません。
  • サービスは受信するリクエストがAlexaサービスから送信されたものであることを確認する必要があります。これは、リクエストの署名を検証することで行います。詳細については、Alexaから送信されたリクエストを検証するを参照してください。

    注:Alexa Skills Kitで提供されるJavaライブラリにあるSpeechletServletクラスのdisableRequestSignatureフラグをテストに使用できます。テスト中にこのフラグを使った場合、認定を申請するときにfalseに戻すようにしてください。

  • 受信するリクエストが該当するサービスを対象としていることを確認する必要があります。詳細については、スキルから受け取ったリクエストを確認するを参照してください。

2.3. アカウントリンクを使用するスキル

スキルでエンドユーザーのIDを他のシステムのユーザーに結び付ける(アカウントリンク)必要がある場合、スキルが以下のいずれかに定義されたすべての手順に従っていることを確認してください。

スキルの申請時には、認定チームがスキルのアカウントリンクと機能を検証できるよう、テスト手順の説明とともに有効なアカウント資格情報を提出します。また、スキルは以下のアカウントリンク基準も満たす必要があります。

  • スキルはユーザーがAlexaアプリを使ってスキルを有効にするときに、ユーザーをログインページまたはランディングページにリダイレクトさせ、Amazonのアカウントリンク機能を使用します。
  • Alexaアプリに表示されるスキルのプライバシーポリシーと利用規約のリンクから、それぞれ有効なウェブページに移動できる必要があります。
  • 認証システムの所有者の場合、スキルは以下の基準を満たす必要があります。
    • ログインページを表示するドメインを所有している必要があります。
    • ログインページのメインドメインURLは、ブランド、スキル、または開発者名を反映している必要があります。つまり、スキルのURLがhttps://www.example.com/xyzの場合、URLのexample.comの部分にブランド、スキル、または開発者名を反映させる必要があります。
    • ログインページでは、ブランド、スキル、開発者名をテキストまたはアイコンで示す必要があります。
    • ログインページはHTTPS経由で提供される必要があります。
  • 認証システムの所有者でない場合、スキルは以下の基準を満たす必要があります。
    • スキルを有効にするときに、ユーザーがリダイレクトされるランディングページを所有している必要があります。このランディングページに、サードパーティ(3P)アカウントがスキルにアカウントをリンクする必要がある旨を明記する必要があります。
    • ランディングページはユーザーをOAuthプロバイダーが所有するドメインのログインページにリダイレクトし、そのランディングページはHTTPS経由で提供される必要があります。
    • ユーザーに代わって認証情報を直接処理、格納、転送することはできません。
  • Login with Amazonを使用している場合、スキルは以下の基準を満たす必要があります。
    • ログインページのURLはamazon.comドメインのものであり、HTTPS経由で提供される必要があります。
    • このログインページに、サードパーティ(3P)アカウントがスキルにアカウントをリンクする必要がある旨を明記する必要があります。
    • スキルが収集して使用するユーザー情報を明示する必要があります。ログインページに直接記載するか、プライバシーポリシーページに記載します。
  • カスタムスキルでは、ユーザーが認可の必要なインテントを呼び出したがアカウントがまだリンクされていない場合、スキルはLinkAccountカードに戻ります
  • コネクテッドカースキルについては、アカウントのリンクフロー中にユーザーに安全ガイドラインを目立つように示す必要があります。この要件を満たすために、次の警告をアカウントリンクページに追加し、詳細な安全情報へのリンクをオプションとして追加できます。 「警告: このスキルを使用すると、リモートでの車両の始動や車内温度の調節など、自動車内の特定の機能を音声を使用してトリガーできます。詳細については、こちらクリックしてください。」

2.4. ロック解除や制限解除が可能なスキル

ユーザーがデバイスのロック解除や制限解除を行える機能がスキルにある場合、開発者は、その機能を使用する前に、ユーザーに最低4桁の音声コードを設定させるようにしなければなりません。ただし、ユーザーが音声コードを設定した後で、コードを使用しないというオプションを開発者が追加することもできます。音声コードを設定しないユーザーには、ユーザーが実行できるスキルの機能を制限することもできます。

テスト 想定される結果

1.

スキルを有効にしてアカウントリンクプロセスを完了します。アカウントリンクフローに機能のロック解除を行うための音声コード設定が含まれること、音声コードがセキュリティ要件を満たすことを確認します。

  • 音声コードの長さは4桁以上である必要があります。
  • フローは、60日ごとにユーザーに音声コードリセットのリマインダーを通知する必要があります。

2.

音声コードが設定されないとスキルの機能を限定する場合、スキルを無効にするか、スキルをまだ有効にしていないAlexaユーザーとしてAlexaアプリにログインします。スキルを有効にします。このとき音声コードを設定しないか、プロンプトが出たら音声コードを使わないことを選択します。デバイスのロック解除または制限解除を行えるインテントを呼び出せるか試してみます。

  • デバイスのロック解除または制限解除を行うリクエストが実行されません。ユーザーに対して、これらの機能を使うには音声コードを設定するよう指示が出ます。
  • ロック解除/制限解除以外の機能は、音声コードなしでも正常に機能します。

3.

音声コードを使わない選択をしないで、ユーザーがデバイスのロック解除または制限解除を行える各インテントを呼び出します。

デバイスのロック解除または制限解除を行う各リクエストは、ユーザーに音声コードを言うように依頼します。

4.

ユーザーがデバイスのロック解除または制限解除を行える各インテントを呼び出します。音声コードを求めるプロンプトが出たら、間違った音声コードを言います。間違った音声コードを3回以上言います。

  • スキルは間違った音声コードを却下し、ロック解除または制限解除のリクエストを実行しません。
  • 3回連続して間違った音声コードを言った後、スキルは音声コードをリセットするようユーザーに指示します。4回目のリクエストで元の正しい音声コードを言ってもリクエストはエラーになります。

2.5 プライバシーの要件

スキルでは以下の行為は禁止されています。

  1. フィッシングやトロイの木馬など、悪意のあるハッキングへの参照を含む、またはこれらを含むこと。これには、デバイスのルート権限取得、Amazonや開発者のデジタル著作権管理(DRM)ソフトウェアの回避なども含まれます。
  2. スキルやスキルのメタデータに、ストーキングを含む、悪意のあるユーザーへのスパイ行為や追跡行為への参照を含む、またはこれらを含むこと。
  3. ユーザーの個人を特定できる情報や機密性の高い個人情報を悪用する行為。
  4. 以下のすべてを実施することなく、エンドユーザーから個人情報を収集する行為。

    (i) スキルの詳細ページでエンドユーザーに表示される、法的に適切なプライバシー規約を提供する
    (ii) エンドユーザーが同意した方法で情報を利用する
    (iii) 情報の収集と利用がプライバシー通知と適用されるすべての法律に準拠している
    (iv) スキルが提供する機能とサービスのサポートおよび向上に必要な場合にのみ、データを収集して使用する

    個人情報の例:姓名、自宅住所、Eメールアドレス、生年月日、電話番号が含まれますが、これらに限定されません。

  5. 機密性の高い個人情報を音声で収集したり、読み上げる行為。これにはパスポート番号、マイナンバー、住民票コード、銀行口座番号、クレジットカード番号(またはその他の国で同等のもの)が含まれますが、これらに限定されません。
  6. アカウントリンク処理中に、ユーザーに4桁の音声セキュリティコードを設定できるオプションを提供することなく、以下の情報のいずれかを読み上げる行為。(i) 生年月日、(ii) 運転免許証番号、(iii) 車両登録番号、(iv) 保険証券番号
  7. スキルの説明で情報源を提供することなく、一般に公開されているスキルユーザー以外の個人情報を読み上げる行為。

2.6 音声コードの要件

金融スキルや1万円を超える購入を可能にするスキルなど、特定の種類のスキルでは、エンドユーザーに音声コードを設定する機会を提供する必要があります。音声コードは、次の要件に準拠している必要があります。

  • アカウントリンクフロー中に音声コードを作成する機会をエンドユーザーに提供する必要があります。アカウントリンクページでは、ほかのアカウントやサービスで使用されるコードとは異なる音声コードを設定することを推奨する必要があります。
  • 音声コードは4桁以上である必要があります。
  • 新しいスキルセッションごとに、取引が完了する前およびエンドユーザーの機密情報が読み上げられる前に、音声コードの提供をエンドユーザーに求める必要があります。
  • 誤った音声コードを3回連続して試行した後、スキルはエンドユーザーにアカウントを再リンクし、新しい音声コードを作成するよう求める必要があります。
  • スキルは、エンドユーザーからの「音声コードがわからない」、「音声コードを忘れた」、「音声コードを持っていない」などの質問を受け付けて、音声コードをリセットする方法に関する情報を音声とホームカードで応答する必要があります。
  • どのような場合でも、音声コードをホームカードや画面に表示してはいけません。