PlayFab GDPR - 플레이어 데이터 삭제 및 내보내기

PlayFab은 일반 데이터 보호 규정(GDPR)을 준수하고 서비스 공급자로서 플레이어가 자신에 대해 저장된 데이터를 보거나 삭제할 수 있도록 하는 데 필요한 후크를 제공하기 위해 최선을 다하고 있습니다.

법률 자문을 제공할 수는 없지만(GDPR을 준수할 수 있도록 법률 자문을 구하는 것이 좋습니다) GDPR에 따른 의무를 이행할 수 있도록 도와드리겠습니다.

PlayFab에서는 플레이어 데이터 요청에 응답하는 데 도움이 되는 세 가지 API를 사용할 수 있습니다.

  • GetPlayedTitleList - 지정된 플레이어와 연결된 데이터가 있는 TitleId 목록을 가져오려면 이 API를 호출합니다. 이 목록은 PublisherID로 범위가 지정되며 이 플레이어의 데이터를 삭제하거나 내보낼 경우 영향을 받는 타이틀 세트를 나타냅니다.
  • DeleteMasterPlayerAccount - 특정 플레이어의 레코드를 삭제하려면 이 API를 호출합니다.
  • ExportMasterPlayerData - 특정 플레이어의 연결된 모든 데이터 및 레코드를 내보내려면 이 API를 호출합니다.

모든 데이터를 찾았는지 확인

DeleteMasterPlayerAccount 또는 ExportMasterPlayerData API를 사용하기 전에 플레이어가 스튜디오에서 여러 마스터 플레이어 계정을 만들었을 수 있다는 점을 염두에 두는 것이 중요합니다.

이 상황은 플레이어가 다른 장치 또는 다른 자격 증명을 사용하여 타이틀을 재생할 때 발생할 수 있습니다. 서로 다른 관련 없는 자격 증명(예: 다른 이메일 주소 또는 소셜 미디어 계정)을 제공하기 때문에 고유한 플레이어로 해석합니다.

플레이어에게 여러 개의 마스터 플레이어 계정이 있을 수 있는 또 다른 방법은 스튜디오에서 여러 개의 퍼블리셔 ID를 사용하도록 구성한 경우입니다. 단, 여러 개의 퍼블리셔 ID를 소유하는 것이 일반적이지는 않습니다.

PlayFab 게임 관리자의 각 타이틀의 설정 메뉴의 API 기능 탭에서 타이틀의 퍼블리셔 ID를 확인할 수 있습니다.

PlayFab - 설정 - API 탭

여러분의 타이틀과 타이틀에서 플레이어를 인증하는 방법을 알고 있습니다. DeleteMasterPlayerAccount 또는 ExportMasterPlayerData를 호출하기 전에 플레이어의 올바른 장치 ID 및/또는 자격 증명 집합을 수집해야 합니다.

이러한 자격 증명을 통해 각각의 마스터 플레이어 계정에 대한 PlayFabId를 식별할 수 있습니다.

다음 API는 자격 증명에서 PlayFabId로 변환하는 데 도움이 됩니다.

  • GetUserAccountInfo - 이 API는 이메일, TitleDisplayName, PlayFabId 또는 PlayFabUsername로 플레이어를 찾는 데 도움이 됩니다.
  • GetPlayerIdFromAuthToken - 이 API를 사용하면 플레이어가 로그인할 때 부여되는 특정 AuthToken에서 플레이어를 찾을 수 있습니다.
  • GetPlayFabIDsFromFacebookIDs - 이 API는 하나 이상의 FacebookId로부터 플레이어의 PlayFabId를 파생합니다.
  • GetPlayFabIDsFromSteamIDs - 이 API는 하나 이상의 SteamIds로부터 플레이어의 PlayFabId를 파생합니다.

참고 항목

이러한 모든 API는 타이틀별로 다릅니다. 첫 번째 두 API는 관리 API이며 마지막 두 API는 서버 API입니다.

플레이어에게 PlayFabId가 하나만 있는 경우에도 해당 ID로 둘 이상의 타이틀을 플레이했을 수 있습니다. 즉, 데이터 요청이 여러 타이틀에 걸쳐 있을 수 있습니다.

이 타이틀 목록을 가져오려면 각 PlayFabId에 대해 GetPlayedTitleList를 호출합니다. 플레이어에게 요청이 반환된 타이틀 목록에 영향을 미칠 것이라고 알릴 수 있습니다.

또한 GetPlayedTitleListTitleIds를 반환하지 않습니다Title Names. 이러한 ID를 확인 페이지에 표시하기 전에 Title Names(으)로 변환하는 것이 좋습니다.

여기 의미한 것을 더 잘 나타내는 의사 코드가 있습니다...

//Here you would iterate through a request of known Ids, Emails, linked accounts  
//or other PlayFab searchable info on the player that you have.
//and store it in user credentials for that player.
user {
  credentials: (email/ids/linked accounts)
}

//create a variable to hold a list of all the PlayFabIds you want to remove.
PlayFabIdList

//create a list of affected titles
AffectedTitles


//Keep track of all your titles, this is important
//and should include all titles across all your namespaces.
foreach(title in <all my titles>){

    //each user record you have for the player, you should have a list of credentials for that player
    //so you can find them in PlayFab
    foreach(cred in user.credentials){
      //There are a few helper Admin and Server API's that help you do this part.
      //See below this pseudo code block for some tips!
      pfid = <find PlayFabId in Title using the credential>
      PlayFabIdList.add(pfid)
    }

    //go through the list of PlayFabIds that you have and fine all titles that
    //performing the action would affect
    foreach(pfid in PlayFabIdList){
      AffectedTitles = title.GetPlayedTitleList(pfid)
    }
}

다음은 GetPlayedTitleList를 사용하는 방법에 대한 간단한 예입니다.

public static async void StartFindTitlesExample(Action<PlayFabError> callback)
{

    var task = await PlayFabAdminAPI.GetPlayedTitleListAsync(new GetPlayedTitleListRequest() {
        PlayFabId = PlayFabId
    });

    if(task.Error != null)
    {
        callback(task.Error);
        return;
    }

    var TitleList = task.Result.TitleIds;
    foreach (var title in TitleList)
    {
        Console.WriteLine(string.Format("Title Found: {0}", title));
    }
    callback(null);
}

이 시점에서 공유한 자격 증명에 따른 이 플레이어의 PlayFabIds 목록과 각 PlayFabId의 타이틀 목록이 있습니다. 이제 무엇을 해야 할까요?

이제 삭제하거나 내보낼 준비가 되었습니다.

기타 고려 사항

이러한 API로 피해를 입히기 쉽습니다. 잘못된 플레이어의 데이터를 내보내거나 삭제하면 큰 피해를 입을 수 있으며 이런 피해는 영구적입니다!

자격 증명이 플레이어 데이터 내보내기 또는 삭제를 요청하는 플레이어와 일치하는지 확인하는 것은 게임 개발자의 책임입니다. PlayFab에서는 이러한 API를 사용할 때 어떠한 확인 유형도 제공하지 않습니다.

그러나 PlayFab에서는 전자 메일 확인 기능을 제공합니다. 그러나 Microsoft의 해결책이 검증을 위한 유일한 옵션은 아닙니다. 고유한 절차를 만들 수도 있습니다.

사용하는 기술에 관계없이 이러한 작업을 수행하기 전에 일부 확인 방법을 수행할 것을 권장합니다.