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) 情報の収集と利用がプライバシー通知と適用されるすべての法律に準拠している。

    エンドユーザーから個人情報を収集するスキルの認定を申請する前に、Alexaアプリのスキルの詳細ページにエンドユーザーに対して表示されるプライバシーポリシーを提供する必要があります。