Play Integrity API は、アプリとユーザーを保護するための不正使用対策戦略の一環として使用できます。デバイスの呼び出しは Play Integrity API の新機能で、ユーザーのプライバシーを保護しながら、アプリで特定のデバイスに関連付けられているカスタムデータを保存したり呼び出したりできます。このデータは Google のサーバーに保存されるため、アプリを再インストールしたりデバイスをリセットしたりした後でも、各デバイスのデータをアプリで確実に呼び出すことができます。たとえば、デバイスで価値の高い特典(無料トライアルなど)がすでに利用されていたり、不正使用の目的で新しいアカウントが繰り返し作成されていたりなど、悪質な不正使用の証拠が見つかった場合に、この機能を使用してデバイスを呼び出すことができます。デバイスの呼び出しでは、リクエスト元のアプリはデバイスに関連付けられている限られたデータのみを呼び出し、デバイスやユーザーの識別子を使用しないため、ユーザーのプライバシーは保護されます。
デバイスの呼び出しの仕組み
早期アクセス プログラムに参加しているデベロッパーは、Play Integrity API レスポンスのデバイスの呼び出しを有効にできます。デバイスの呼び出しを有効にすると、アプリで各デバイスのカスタム値または「ビット」を最大 3 つ読み取り、変更できるようになります。これらの値は独自に意味を定義できます。たとえば、その値をデバイスのオン / オフのフラグとして個別に扱ったり、8 つのカスタムラベルとして組み合わせたりできます。この値はサーバーサイドに保存されるため、デバイスの値が変更されても値は保持され、アプリのアンインストールや再インストール、またはデバイスの初期状態へのリセットが行われても引き続き呼び出しできます。つまり、デバイスに関連付けられている値をアプリで変更し(例: デバイスで無料トライアルが利用済みであることを表す)、その後同じデバイスにアプリがインストールされた場合に、変更した値をすぐに読み取るように設定できます(例: 2 回目の無料トライアル提供を許可しない)。デバイスの呼び出しを有効にすると、以下のことが可能になります。
- 各デバイスのデータ読み取り: 完全性判定の結果を取得するたびに 3 つの値をすべて読み取ることができます。デバイスの呼び出しは、Play Integrity API のクラシック リクエストと標準リクエストの両方で機能します。標準リクエストでは、デバイスの呼び出しはウォームアップ呼び出しで更新されます。つまり、各デバイスのデータ変更後に更新された値を確認するには、もう一度ウォームアップを実行する必要があります。
- 各デバイスのデータ変更: 完全性トークンを取得した後に、そのトークンを使用して Google Play のサーバーに対してサーバーサイド呼び出しを行い、1 つまたは複数の値を変更できます。トークンの使用期限は 14 日間です。たとえば、最初に完全性の確認を実施してから 2 週間以内に不正使用が証明された場合にのみ値の変更が可能ということです。値を変更すると、変更を行った年月も保存されます。
デバイスの呼び出しに関する考慮事項
デバイスの呼び出しに関する前提条件と考慮事項は次のとおりです。
- デバイスの呼び出しは、Android 13(API レベル 33)以降を搭載しており、チップセットがリモートキーのプロビジョニングに対応し、かつ最初の出荷で Android 12 以降を搭載していたデバイスでサポートされています。デバイスの呼び出しが利用可能でない場合、各デバイスの値と日付は空になります。
- デバイスの呼び出しは、スマートフォン、タブレット、折りたたみ式デバイス、TV、自動車、Wear OS で使用できます。Wear の場合、デバイスの呼び出しは Wear OS 5 以降を搭載したデバイスでのみ利用可能です。
- デバイスの呼び出しを使用するには、Google Play ストアと Google Play 開発者サービスの両方の最新バージョンをデバイスにインストールし、有効にする必要があります。
- デバイスの呼び出しでは、ユーザー アカウントに Play ライセンスが必要です。ライセンスを取得していない場合、判定は行われません。
- Google Play デベロッパー アカウントのすべてのアプリで、デバイスごとに同じ 3 つの値を利用できます。つまり、1 つのアプリで値を 1 つ変更すると、同じデバイス上にインストールされているすべてのアプリで変更した値が読み取られます。
- あるデベロッパー アカウントから別のアカウントにアプリが転送されると、デバイスの呼び出しによって、古いデベロッパー アカウントの各デバイスのデータではなく、新しいデベロッパー アカウントの各デバイスのデータが反映されます。
デバイスの呼び出しのおすすめの使い方
不正使用対策戦略の一環としてデバイスの呼び出しを使用する
デバイスの呼び出しは、全体的な不正使用対策戦略の一環として他のシグナルと併用するのが最適で、単独で不正使用対策メカニズムとして使用するものではありません。このシグナルと他の Play Integrity API シグナルを、アプリに適した他のセキュリティに関するおすすめの方法と組み合わせて使用してください。
デバイスの呼び出しのデータの使用方法を決定する
デバイスの呼び出しのデータを構成する 3 つの値には、独自の意味を定義できます。
- 最大 3 つの個別のフラグやブール値として使用できます。たとえば、デバイスでアカウントを作成したかしていないか、無料トライアルは利用済みかそうでないか、悪質な不正使用として認知されているかいないかなどを値で表すことができます。
- または、値のあらゆる状態を最大 8 つのカスタムラベルにまとめることもできます。たとえば、3 つの値がいずれも変更されていない場合にデフォルト状態を示す 1 つのラベルと、カスタムの意味を持つ 7 つのラベルを作成できます。これにより、定義した動作やアクションに基づいてすべてのデバイスを最大 8 つのグループにセグメント化できます。このシナリオでは、3 つの
writeDates
のうち直近で更新されたものが、最後にラベルを更新した日付となります。
デベロッパー アカウントのすべてのアプリでデバイスごとに 3 つの同じ値を使用するため、デバイスの呼び出しを使用するアプリ全体で合理的に使用できるようにデータの意味を定義します。
デバイスの持ち主が変更された場合のために、タイムスタンプを考慮する
デバイスの呼び出しにはタイムスタンプが含まれているため、かなり前に変更されたデータよりも最近変更を行ったデータを優先的に考慮できます。デバイスの持ち主変更、再生品化、再販を考慮して、一定の期間が経過したデータは無視するかリセットすることを検討してください。
データの削除戦略を検討する
デバイスに関連付けられているデータをすべて削除する必要がある場合、アプリでデバイスの 3 つの値をすべて false
にリセットできます。これにより、タイムスタンプは自動的にリセットされます。
Play Integrity API に関する既存の推奨事項に従う
前述のおすすめの方法に加えて、Play Integrity API に関するセキュリティ上の考慮事項をお読みください。
デバイスの呼び出しへの早期アクセス
デバイスの呼び出しを使用開始するには、以下の手順に沿って操作してください。
ステップ 1: 以下の重要な考慮事項を確認する
- デバイスの呼び出しを使用すると、Google Play デベロッパー販売 / 配布契約および Play Integrity API 利用規約の各条項に同意したことになります。
- デバイスの呼び出しは、アプリのセキュリティを保護し、不正使用、不正行為、不正アクセスのリスクを軽減する目的でのみ情報を保存、呼び出すために使用することもできます。
- デバイスの呼び出しを使用して、個々のユーザーやデバイスに対してフィンガープリントを適用したりトラッキングしたりすることはできません。
- 性別、年齢、位置情報などのユーザーやデバイスの機密情報を追跡するためにデバイスの呼び出しを使用してはなりません。
- Google Play のデータ セーフティ セクションの要件を満たすには、Play Integrity API によるデータ処理方法に記載の情報をご覧ください。
- 早期アクセス プログラムに参加するデベロッパーには、デバイスの呼び出しを評価し、評価結果に関するフィードバックと情報を Google Play に提供することが求められます。
- 早期アクセス プログラムの間に、デバイスの呼び出しは変更される可能性があります。
ステップ 2: デバイスの呼び出し EAP への参加をリクエストする
アカウントがデバイスの呼び出しの早期アクセスに選出されると、Google Play Console の [Integrity API] ページに新しいオプションが表示され、ステップ 3 に記載されている手順で Play Integrity API レスポンスにデバイスの呼び出しを含められるようになります。
デバイスの呼び出しをまだ利用できず、早期アクセス プログラムへの参加をご希望の場合は、次の情報を記載して integrity-api-eap@google.com までメールでご連絡ください。
- 会社名または組織名と役職
- デベロッパー アカウント ID とアプリ
- Play Integrity API をすでに統合済みか、または統合予定か
- デバイスの呼び出しで予定している使用方法
早期アクセス プログラムへの参加を承認されたデベロッパーには、Google Play Console でデバイスの呼び出しを有効にするためのアクセス権が付与されます。
ステップ 3: Google Play Console で Integrity API レスポンスのデバイスの呼び出しを有効にする
早期アクセス プログラムへの参加が承認されると、Google Play Console の [Integrity API] ページに新しいオプションが表示され、Play Integrity API レスポンスにデバイスの呼び出しを含められるようになります。準備ができたら、Google Play Console でデバイスの呼び出しをオンにします。
- Google Play Console にログインします。
- デバイスの呼び出しを使用するアプリを選択します。
- 左側のメニューの [リリース] セクションで、[アプリの完全性] に移動します。
- [Play Integrity API] の横にある [設定] をクリックします。
- そのページの [レスポンス] セクションで [レスポンスを変更] をクリックします。
- [デバイスのリコール] をオンにします。
- [変更を保存] をクリックします。
デバイスの呼び出しのオン / オフを切り替えると、Google Play Console で設定した Play Integrity API テスト レスポンスがすべて削除されるため、再度作成する必要があります。
ステップ 4: Integrity API をアプリとアプリのバックエンド サーバーに統合する
まだ統合していない場合は、ドキュメントを参照して Play Integrity API の標準リクエストまたはクラシック リクエストをセットアップし、アプリとアプリのバックエンド サーバーに統合します。
ステップ 5: デバイスの呼び出しを使用する
次の手順に沿ってデバイスの呼び出しの値を読み取り、変更します。
ステップ 5a. デバイスの呼び出しの値を読み取る
デバイスの呼び出しを有効にすると、Play Integrity API ペイロードの deviceIntegrity
フィールドにデバイスの呼び出しに関する情報が含まれます。
"deviceIntegrity": {
"deviceRecognitionVerdict": ["MEETS_DEVICE_INTEGRITY"],
"deviceRecall": {
"values": {
"bitFirst": true,
"bitSecond": false,
"bitThird": true
},
"writeDates": {
// Write time in YYYYMM format in UTC.
"yyyymmFirst": 202401,
// Note that yyyymmSecond is not set because bitSecond is false.
"yyyymmThird": 202310
}
}
}
deviceRecall
は、2 つのフィールドに分かれています。
values
: サーバー間 API を介して前に設定したビット値を呼び出します(ステップ 5b 参照)。writeDates
: ビットの書き込み日(UTC)の正確な年月を呼び出します。呼び出すビットの書き込み日は、ビットがtrue
に設定されるたびに更新され、ビットがfalse
に設定されると削除されます。
デバイスの呼び出しの情報が利用できない場合、デバイスの呼び出しの値は空になります。
"deviceIntegrity": {
"deviceRecognitionVerdict": ["MEETS_DEVICE_INTEGRITY"],
"deviceRecall": {
"values": {},
"writeDates": {}
}
}
ステップ 5b. デバイスの呼び出しの値を変更する
サーバー間 API 呼び出しを完全性判定の結果のデコードと同様にすると、デバイスの呼び出しの値を変更できるようになります。ビットを true
に設定すると、書き込み日も更新され(すでに true
に設定されている場合でも)、false
に設定すると、書き込み日はリセットされて空になります。リクエストで指定されていないビットはいずれも変更されません。ビットの書き込みと判定で読み戻しができるようになるまでの間に伝播にわずかな遅延が発生します。30 秒間の遅延が発生する場合がありますが、通常はこれよりも短い時間です。
playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \ '{ "integrityToken": "INTEGRITY_TOKEN", "newValues": { "bitFirst": true, "bitThird": false } }'
ステップ 6: Google Play に早期アクセス プログラムのフィードバックを提供する
早期アクセス プログラムの参加者は、問題の報告やフィードバックの提供を行う必要があります。デバイスの呼び出しや完全性判定の結果に関する技術的問題を報告するには、イシューを作成し、要求されている情報をすべて提供してください。また、integrity-api-eap@google.com へのメールで、デバイスの呼び出しに関するフィードバックを提供することもできます。
関連コンテンツ
アプリやゲームで意図したとおりのユーザー エクスペリエンスを実現できるように、Google Play の完全性と署名のサービスをご覧ください。