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



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

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

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

Lambda関数ではリクエストがサービスに向けて行われたものであることを確認する必要があります。詳細については、Alexaから送信されたリクエストを処理するの「サービスに対するリクエストの妥当性を検証する」セクションを参照してください。

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

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

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

  • サービスでは受信するリクエストがサービスに向けて行われたものであることを確認する必要があります。詳細については、Alexaから送信されたリクエストを処理するの「サービスに対するリクエストの妥当性を検証する」セクションを参照してください。

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

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

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

  • スキルはユーザーがAlexaアプリを使ってスキルを有効にするときに、ユーザーをログインページまたはランディングページにリダイレクトさせ、Amazonのアカウントリンク機能を使用します。
  • Alexaアプリに表示されるスキルのプライバシーポリシーと利用規約のリンクから、それぞれ有効なウェブページに移動できる必要があります。
  • 認証システムの所有者の場合、スキルは以下の基準を満たす必要があります。
    • ログインページを表示するドメインを所有する必要があります。
    • ログインページは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) 情報の収集と利用がプライバシー通知と適用されるすべての法律に準拠している。

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

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