GDPR

GDPR Requests APIProcessing Restriction

GDPRコンプライアンス

「一般データ保護規則(GDPR)」は欧州連合圏における人々のデータ保護およびプライバシーに関する欧州発の法規制です。本法規制によると、個人データを管理する企業はクセス権、 データポータビリティの権利、訂正の権利、削除権のリクエストに一ヶ月以内に対応しなければなりません。 

モバイルアトリビューションにおいて、事前にどのユーザーが欧州経済領域の市民か否かはわからないため、全てのモバイルユーザーにGDPR対応が必要となりえます。

The GDPRイニシアチブ

GDPR遵守に向けて、データ主体からのリクエストを管理するためにmParticle、 AmplitudeBrazeと連携してAppsFlyerOpenGDPRプロトコルを構築しました。

OpenGDPRは統合されたオープンソース・フレームワークで、公平かつ透明化なデータ利用に関するテクノロジー企業間の連携協力をサポートします。データプライバシーに関するアクションを複数のシステムにて処理し、保管することができます。

イニシアチブに関してはこちらをご確認ください。仕様はGitHubをご参照ください。 

GDPR 例

データ主体 個人データ取得の対象となるモバイルアプリのエンドユーザー。
データ管理者 個人データの処理の目的と手段を決定する広告主。
データ処理者 管理者を代理して、個人データの処理を行うAppsFlyerおよび連携済みパートナー。

GDPR法的要件

GDPRは広告主が尊重すべきデータ主体の権利について詳しく述べています。

権利

GDPRの該当定義例

データ管理者へのAppsFlyerからのサポート 

アクセス権

  1. リクエストがあった場合、データ主体はデータ管理者が個人データを処理する理由や期間などを知る権利を有します。
  2. もしデータが第三者(AppsFlyer)に共有される場合、データ主体は第三者を知る権利を有します。
  3. どんな種類のデータが処理されているのか知る権利を有します。
  4. 影響を生じ得るような自動処理が有るのか。
 ‘access’ リクエストを送ると、データ管理者はデータ主体の処理された個人データのコピーを受け取ることができます。 

データポータビリティの権利

データ主体は自分に係る個人データを、構造化され、一般的に使用され、機械によって読み取り可能な形式、CSVファイルなどで受け取る権利が有します。

’portability’ リクエストを送ると、データ管理者はデータ主体の処理された個人データのコピーを受け取ることができます。 

訂正の権利

データ主体は不正確な自己の個人データに関する訂正を要求できます。データ管理者は削除するか、訂正しなければなりません。

データ管理者が‘rectification’ リクエストを提出すると、 AppsFlyerはデータ主体の過去のデータを削除し、新しいデータに更新されます。 

削除権(忘れられる権利)

削除権では、データ管理者は個人データを1ヶ月以内に削除しなければなりません。

‘erasure’ のリクエストで、広告主は収集されたデータ主体のデータを削除することができます。

GDPR_logo2.png

AppsFlyer's GDPR Requests API

AppsFlyerは上記の要件についてGDPR Requests API (2018年5月25日以前の依頼は処理されません)を介してサポートします。

  1. GDPR Request - 上記のPerform one of the above request types: 'access', 'portability', 'erasure' or 'rectification'.
  2. Status Request - Query the current status of a GDPR request
  3. Discovery Request - Inquire as to the supported API version and Data Format
  4. Cancellation - pending(保留中)の場合、GDPR requestをキャンセルする

エンドユーザーがこれらのリクエストを依頼できるように、GUIの変更を実装するのはデータ管理者次第です。

1. GDPR Request 

GDPR Requestフロー

全てのGDPR Requestタイプ、 'access'、 'portability'、'erasure' and 'rectification'、 は共通のフローとなります。

  1. データ主体 (エンドユーザー)がリクエストを依頼する。 
  2. データ管理者 (広告主)がGDPR Requestを構築(下記参照) し、AppsFlyerに送信する。
  3. データ処理者 (AppsFlyer)はリクエストを受け取り、有効なリクエストには「201 OK」を返す。 
  4. 48時間は、リクエストは pending (保留中)statusとなり、キャンセルは可能。
  5. その後、Request Statusはin_progressに変更し、AppsFlyerは 「status change」ポストバック を送信。リクエストはこれ以降キャンセル不可。
  6. a) AppsFlyerは28日間以内にリクエストを完了する。 
    ‘erasure’ / 'rectification'の場合 - エンドユーザーのデータは削除。
     ‘portability’ / ‘access’の場合 - エンドユーザーのデータはAppsFlyer管理画面上でGDPRセクションにてアクセス可能。
    b) Request Statusはcompletedに変更し、AppsFlyer は「status change」のポストバックを送信。

GDPR Requestフォーマット

GDPR Request APIはHTTP POSTを介して次のエンドポイントに送信してください。

[TBD]/gdpr/opengdpr_requests[subject_request_id]?api_token=[api token]

次のプロパティをご利用ください。

プロパティネーム 必須/任意 Description
subject_request_id 必須 UUID v4 String - 管理者より処理者へリクエストを送信する際に必ず生成する必要があります。
subject_request_type 必須 GDPR Requestのタイプを表すString Value - Supported values: "erasure", "portability", "access" and "rectification"
subject_identities 必須 Identity Objectsの配列 - type, value and format of the device ID (下記参照)
submitted_time 必須 データ主体よりオリジナルリクエストがあった時間帯を表すRFC 3339 Date String - 全てのタイムスタンプはUTCで送られます。
property_id 必須 リクエストの対象となるモバイルアプリを表すString
api_version 任意 Version String - GDPR Requests APIの望ましいバージョンを表します。
status_callback_urls  任意 Request Status変更に対してStatus Callbacksの送信のためのエンドポイントの配列 - https endpointsのみサポート。

リクエストに対応するため、GDPR Requestは必ず一つ以上のIdentity Objectsを含む必要があります。 

  1. identity_type - 必須 string value representing the form of identity. The supported Identity Types by AppsFlyer are ios_advertising_id, android_advertising_id, fire_advertising_id and microsoft_advertising_id
  2. identity_value - 必須 string value representing the identity.
  3. identity_format - 必須 string value representing the encoding of the identity. Currently raw is the only supported Identity Format by AppsFlyer.    

GDPR Erasure(削除) リクエストのサンプル

POST gdpr/opengdpr_requests?api_token={api token] HTTP/1.1
Host: example processor.com
Accept: application/json
Content Type: application/json
{
  "subject_request_id": "a7551968-d5d6-44b2-9831-815ac9017798",
  "subject_request_type": "erasure",
  "submitted_time": "2018-10-02T15:00:00Z",
  "subject_identities": [
  {
    "identity_type": "android_advertising_id",
    "identity_value": "a55684fd-j661-46df-9149-f7bfd652egge",
    "identity_format": "raw"
  }
  ],
  "api_version": "0.1",
  "property_id": "com.example",
  "status_callback_urls": [
    "https://examplecontroller.com/opengdpr_callbacks"
  ] }

2. Status Request 

subject_request_idを特定することにより、どのGDPR Requestも後でそのステータスをクエリで確認できます。Request Statusは4つに分類されます。

  1. pending - 有効なリクエストが受信され、キューに保留中。
  2. in_progress - リクエストは処理中。
  3. completed - リクエストは完了。
  4. cancelled - リクエストはキャンセル済み。

Status Requestフォーマット

Status RequestはHTTP GETを介して次のエンドポイントに送信してください。

[TBD]/opengdpr_requests/[subject_request_id]?api_token=[api token]

Statusレスポンスサンプル

HTTP/1.1 200 OK
Content Type: application/json
X-OpenGDPR-Processor Domain: example processor.com
X-OpenGDPR-Signature: kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=
{
"controller_id":"example_controller_id",
"expected_completion_time":"2018-11-01T15:00:01Z",
"subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798",
"request_status":"pending",
"api_version":"0.1"
}

Statusポストバック

上記の GDPR Request Flowのとおり、GDPR Requestのステータスは pendingから in_progress、 completed、と変更し、 AppsFlyerはGDPRポストバックをstatus_callback_urlsプロパティで特定されたthe requestingエンドポイントに送ります。

Statusポストバックサンプル:


POST /opengdpr_callbacks HTTP/1.1
Host: examplecontroller.com
Content Type: application/json
X-OpenGDPR-Processor Domain: appsflyer.com
X-OpenGDPR-Signature: kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=
{
"controller_id":"example controller id at the processor",
"expected_completion_time":"2018-11-01T15:00:01Z",
"status_callback_url":"https://examplecontroller.com/opengdpr_callbacks",
"Subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798",
"Request_status":"pending"
}

3. Discovery Request 

AppsFlyerのサポートするフォーマットを知るため、 Discovery RequestをHTTP GETを介して次のエンドポイントに送信してください。

[TBD]gdpr/discovery?api_token=[api token]

Discoveryレスポンスサンプル

HTTP/1.1 200 OK
Content Type: application/json
{
  "api_version": "0.1",
  "supported_identities": [
    {
      "identity_type": "android_advertising_id",
      "identity_format": "raw"
    },
  ],
  "supported_subject_request_types": [
    "erasure", "access", "portability", "rectification"
  ],
  "processor_certificate": "https://exampleprocessor.com/cert.pem"
}

4. Cancellation Request 

GDPR Requestはsubject_request_idに基づいてキャンセルできますが、pending(保留中)モード時のみ可能です 

そのためにはsubject_request_idとあわせてHTTP DELETEを送信してください。 
[TBD]gdpr/opengdpr_requests/[subject_request_id]?api_token=[api token]

Cancellationレスポンス

GDPR Cancellation Requestを受け取ると、 AppsFlyer はステータスコード202のHTTP responseを他のパラメータと一緒に返します。詳細については、GDPR "Cancellation Response Properties" をご参照ください。

キャンセルのリクエストが生じると、AppsFlyerはcancelled statusのポストバックを送ります。

5. GDPR Requests Test API 

このAppsFlyerのAPIはAppsFlyerのGDPR Requests APIのテスト用です。

How Does it Work?

テストAPIは次のように機能します。 

1. GDPR Requestを受けると、すぐにリクエストは ‘Pending’ statusになります。テスト用のため、ステータスの変更は30秒間隔となります。 

2. ステータスポストバックのエンドポイントがGDPR Requestに入ると、最初のポストバックはリクエスト後すぐに送られ、他のポストバックは30秒後ごとに送られます。

GDPR Request Test Endpoint:
https://hq1.appsflyer.com/gdpr/stub?api_token=[api token]

Status Request Test Endpoint:
https://hq1.appsflyer.com/gdpr/stub/[request id]?api_token=[api token]

Discovery Request Test Endpoint:
https://hq1.appsflyer.com/gdpr/stub/discovery?api_token=[api token]

Cancellation Request Test Endpoint:
https://hq1.appsflyer.com/gdpr/stub/[request id]?api_token=[api token]

注意

  • 有効なAPI tokenがリクエストには必要です。
  • ‘property_id’ プロパティでは、App IDはそのアプリの(API tokenに基づく)広告主アカウントである必要があります。 
この記事は役に立ちましたか?
2人中1人がこの記事が役に立ったと言っています