ユーザーデータのポータビリティと削除の管理
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services(AGS)のGDPRサービスは、EUの一般データ保護規則(GDPR)およびカリフォルニア州のカリフォルニア消費者プライバシー法(CCPA)にゲームが準拠していることを保証します。これらのデータプライバシー法は、お客様とユーザーが個人情報をどのように使用および管理できるかを規定しています。
ユーザーが自分のデータに対して持つ最も基本的な2つの権利は、そのデータにアクセスする権利とそれを削除する権利です。以下のシーケンス図は、これらのリクエストが当社のサービスによってどのように処理されるかを示しています。
データ保護とコンプライアンスの技術的側面についてはお手伝いできますが、法的助言を提供することはできません。特定の法的規制への準拠を確実にするために、法律専門家に相談することをお勧めします。
GDPRサービス機能は、AGS Shared Cloudではまだサポートされていません。
アクセス権
ユーザーは、ユーザープラットフォームを通じて自分の個人データへのアクセスをリクエストできます。個人データリクエストは28日以内に処理される必要があります。
個人データの取得
以下のチャートは、個人データリクエストが移行する可能性のあるさまざまなステータスと、リクエストが期限切れになるかキューから削除されるまでに処理できる期間を示しています。
これらは、個人データリクエストをリクエストする際に発生するすべてのステータスです。
- Pending: リクエストは処理待ちです。
- In-progress: リクエストの処理が開始されました。
- Retrying: リクエストが失敗した場合、自動的に再試行されます。デフォルトでは、リクエストは最大3回再試行されます。
- Failed: 3回目の再試行が成功しなかった場合、リクエストは失敗としてマークされます。ユーザーと管理者の両方にこの失敗が通知され、ユーザーポータルまたは管理者ポータルからリクエストを再送信できます。
- Expired: このステータスは、関連サービスに問題がある場合にのみ発生します。リクエストが期限切れになった場合、ユーザーまたは管理者は新しいリクエストを行う必要があります。
- Removed from queue: 残りのリクエストは、サービスを最適化するために56日後に自動的に削除されます。
成功した個人データリクエスト

キャンセルされた個人データリクエスト

失敗した個人データリクエスト

削除権
ユーザープラットフォームを通じて、または手動で個人データの削除をリクエストできます。ほとんどのリクエストは28日以内に処理されます。
個人データの削除
以下のチャートは、データ削除リクエストが移行する可能性のあるさまざまなステータスを示しています。また、リクエストが失敗するまでに処理できる期間も示しています。
以下は、個人データの削除中のリクエストステータスです:
- Request: これは、リクエストが行われたばかりで、ユーザーのアクセストークンがまだ取り消されていないことを示します。
- Pending: これは、ユーザーのアクセストークンがすでに取り消されていることを示します。有効期限まで削除リクエストをキャンセルすることは可能です。
- In Progress: これは、リクエストの有効期限が切れた後、スケジューラーがユーザーのアカウントの削除を開始したことを示します。
- Failed: これは、削除プロセスが失敗したことを示します。このような場合、管理者にメールで通知されます。管理者はアカウントを削除するリクエストを再送信でき、ステータスが保留中に戻ります。
ユーザーによる成功したデータ削除

ユーザーによるキャンセルされたデータ削除

ユーザーに代わって管理者によるデータ削除

リクエスト有効期限後の削除プロセス

失敗したリクエストの再試行プロセス

Admin Portalでのgdpr管理
個人データの取得
管理者は、アカウントシステムの問題をトラブルシューティングしたり、アカウントに加えられた変更を追跡したりするために、ユーザーのアカウントデータをリクエストできます。Player PortalまたはLauncherのユーザーは、自分の個人データへのアクセスをリクエストできます。
Admin Portalのスーパー管理者機能を使用すると、他のユーザーに関する個人データをリクエストできます。管理者は、リクエストしたユーザーに代わってのみ取得できます。個人データリクエストのステータスに関するメールがユーザーに送信されます。
以下の機能は、パブリッシャーネームスペースでのみ利用可能です。
-
Admin Portalのサイドバーで、Lookup Usersに移動します。
-
手元にあるプレイヤーの認証情報を使用して、データを取得したいプレイヤーを検索します。

-
検索結果が表示されます。リストを参照して探しているアカウントを見つけ、アカウントリストのAction列のViewをクリックして開きます。

-
OverviewタブのDetailsウィンドウで、Personal Data Requestの横にあるSend Requestボタンをクリックします。

-
ポップアップが表示され、Send Requestボタンをクリックして個人データリクエストを確認する必要があります。
リクエストが送信されると、同時に発生したリクエストの数に基づいて、承認プロセスには最大28日かかる場合があります。
-
管理者として、個人データリクエストのステータスを確認できます。Admin Portalのサイドバーで、Admin Task > GDPR > Personal Data Requestsに移動します。

-
ここでは、発生しているすべての個人データリクエストのリストを確認できます。これはすべて、ユーザーまたは管理者が個人データリクエストをリクエストしたときに発生します。リストの上部にあるフィルタリングシステムをクリックして、個人データリクエストが発生した時期でフィルタリングすることもできます。

サーバーSDKを使用してカスタムサービスをGDPRに接続する
SDKの初期化
SDKからGDPRサービスを使用する前に、サーバー側SDKを初期化して、作成、読み取り、更新、および削除アクションを実行する権限があることを確認する必要があります。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
-
IAM Clientを作成し、Matchmakingサービスにアクセスするために必要な権限を割り当てます。
-
SDKを使用してクライアントとしてログインします。
完了すると、C# Extend SDKを使用して、サーバーレスアプリからGDPRサービスを作成、読み取り、更新、または削除できます。
-
IAM Clientを作成します。
-
SDKを使用してクライアントとしてログインします。
-
以下の関数を使用してOAuth 2.0サービスを初期化します:
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
input := &data_retrieval.SaveAdminEmailConfigurationParams{
Body: []string{"foo"},
Namespace: "<namespace>",
}
err := dataRetrievalService.SaveAdminEmailConfigurationShort(input)
if err != nil {
return err
}完了すると、Go Extend SDKを使用して、サーバーレスアプリからGDPRサービスを作成、読み取り、更新、または削除できます。
GDPRサービスを使用する前に、いくつかの権限を設定する必要があります。以下のコードを使用して、GDPRサービスからDataRetrievalラッパーを初期化します:
DataRetrieval wGdprRetrieval = new DataRetrieval(sdk);
完了すると、SDKを使用してGDPRを作成、読み取り、更新、または削除できます。
-
IAM Clientを作成し、Matchmakingサービスにアクセスするために必要な権限を割り当てます。
-
SDKを使用してクライアントとしてログインします。
完了すると、Python Extend SDKを使用して、サーバーレスアプリからGDPRサービスを作成、読み取り、更新、または削除できます。
管理者メール設定の作成
GDPRプロセス通知を送信するための管理者メール設定を作成するには、以下の関数を使用します。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
sdk.Gdpr.Configuration.SaveAdminEmailConfigurationOp
.Execute(new List<string>
{
"dummy@example.com"
}, sdk.Namespace);
List<string>? emails = sdk.Gdpr.Configuration.GetAdminEmailConfigurationOp
.Execute(sdk.Namespace);
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
input := &data_retrieval.SaveAdminEmailConfigurationParams{
Body: []string{"foo"},
Namespace: "<namespace>",
}
err := dataRetrievalService.SaveAdminEmailConfigurationShort(input)
if err != nil {
return err
}
wGdprRetrieval.saveAdminEmailConfiguration(SaveAdminEmailConfiguration.builder()
.namespace(namespace)
.body(Arrays.asList(new String[] { emailToTest }))
.build());
from accelbyte_py_sdk.api.gdpr import save_admin_email_configuration
result, error = save_admin_email_configuration(
body=[
"foo"
]
)
if error:
print(error)
管理者メール設定の取得
GDPRプロセス通知を送信するための管理者メール設定を取得するには、以下の関数を使用します。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
List<string>? emails = sdk.Gdpr.Configuration.GetAdminEmailConfigurationOp
.Execute(sdk.Namespace);
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
input := &data_retrieval.GetAdminEmailConfigurationParams{
Namespace: "<namespace>",
}
// using the initiation, invoke the endpoint
ok, err := dataRetrievalService.GetAdminEmailConfigurationShort(input)
if err != nil {
return err
}
List<String> emails = wGdprRetrieval.getAdminEmailConfiguration(
GetAdminEmailConfiguration.builder()
.namespace(namespace)
.build());
from accelbyte_py_sdk.api.gdpr import get_admin_email_configuration
result, error = get_admin_email_configuration()
if error:
print(error)
管理者メール設定の更新
GDPRプロセス通知を送信するための管理者メール設定を更新するには、以下の関数を使用します。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
sdk.Gdpr.Configuration.UpdateAdminEmailConfigurationOp
.Execute(new List<string>() { "anotheremail@dummy.com" }, sdk.Namespace);
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
input := &data_retrieval.UpdateAdminEmailConfigurationParams{
Body: []string{"foo"},
Namespace: "<namespace>",
}
err := dataRetrievalService.UpdateAdminEmailConfigurationShort(input)
if err != nil {
return err
}
wGdprRetrieval.updateAdminEmailConfiguration(UpdateAdminEmailConfiguration.builder()
.namespace(namespace)
.body(Arrays.asList(new String[] { anotherEmailToTest }))
.build());
from accelbyte_py_sdk.api.gdpr import update_admin_email_configuration
result, error = update_admin_email_configuration(
body=[
"foo"
]
)
if error:
print(error)
管理者メール設定の削除
GDPRプロセス通知を送信するための管理者メール設定を削除するには、以下の関数を使用します。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
sdk.Gdpr.Configuration.DeleteAdminEmailConfigurationOp
.Execute(sdk.Namespace, new List<string>() { "anotheremail@dummy.com" });
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
input := &data_retrieval.DeleteAdminEmailConfigurationParams{
Emails: []string{"foo"},
Namespace: "<namespace>",
}
err := dataRetrievalService.DeleteAdminEmailConfigurationShort(input)
if err != nil {
return err
}
wGdprRetrieval.deleteAdminEmailConfiguration(DeleteAdminEmailConfiguration.builder()
.namespace(namespace)
.emails(Arrays.asList(new String[] { anotherEmailToTest }))
.build());
from accelbyte_py_sdk.api.gdpr import delete_admin_email_configuration
result, error = delete_admin_email_configuration(
emails=[
"email@email.foo"
]
)
if error:
print(error)
ユーザーのアカウント削除のリクエスト
ユーザーのアカウント削除のリクエストを送信するには、以下の関数を使用します。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
ModelsRequestDeleteResponse? delResp = sdk.Gdpr.DataDeletion.AdminSubmitUserAccountDeletionRequestOp
.Execute(sdk.Namespace, "<user id>");
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
input := &data_deletion.AdminSubmitUserAccountDeletionRequestParams{
Namespace: "<namespace>",
UserID: "<user-id>",
}
// using the initiation, invoke the endpoint
ok, err := dataDeletionService.AdminSubmitUserAccountDeletionRequestShort(input)
if err != nil {
return err
}
DataDeletion dataDeletionWrapper = new DataDeletion(sdk);
ModelsRequestDeleteResponse deleteResponse = dataDeletionWrapper.adminSubmitUserAccountDeletionRequest(
AdminSubmitUserAccountDeletionRequest.builder()
.userId("<user_id>")
.namespace("<namespace>")
.build());
from accelbyte_py_sdk.api.gdpr import admin_submit_user_account_deletion_request
result, error = admin_submit_user_account_deletion_request(
user_id="<user-id>"
)
if error:
print(error)
ユーザーの個人データリクエストの取得
ユーザーの個人データリクエストを取得するには、以下の関数を使用します。
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
ModelsUserPersonalDataResponse? reqResp = sdk.Gdpr.DataRetrieval.AdminGetUserPersonalDataRequestsOp
.SetLimit(10)
.SetOffset(0)
.Execute(sdk.Namespace, "<user id>");
import (
...
"github.com/AccelByte/accelbyte-go-sdk/gdpr-sdk/pkg/gdprclient/data_retrieval"
)
limit := int64(10)
offset := int64(0)
input := &data_retrieval.AdminGetUserPersonalDataRequestsParams{
Namespace: "<namespace>",
UserID: "<user-id>",
Limit: &limit,
Offset: &offset,
}
// using the initiation, invoke the endpoint
ok, err := dataRetrievalService.AdminGetUserPersonalDataRequestsShort(input)
if err != nil {
return err
}
DataRetrieval dataRetrievalWrapper = new DataRetrieval(sdk);
ModelsUserPersonalDataResponse deleteResponse = dataRetrievalWrapper.adminGetUserPersonalDataRequests(
AdminGetUserPersonalDataRequests.builder()
.limit(10)
.offset(0)
.userId("<user_id>")
.namespace("<namespace>")
.build());
from accelbyte_py_sdk.api.gdpr import admin_get_user_personal_data_requests
result, error = admin_get_user_personal_data_requests(
user_id="<user-id>"
)
if error:
print(error)