LoginSignup
3
1

More than 3 years have passed since last update.

Azure PlayFab の API アクセスポリシーを設定してよりセキュアに運用する

Last updated at Posted at 2020-04-12

前書き

PlayFab の CDN の利用を検討したときにこんな話がありました。

  • ユーザーに CDN 上のファイルに自由にアクセスされたくない
  • PlayFab の CDN 上にアップロードしたファイルは GetContentDownloadUrl API で取得した署名付き URL からしかアクセスできないので、普通に使っていても意図しないリソースにアクセスされる可能性は低い
  • しかし TitleId と LoginId を解析されてしまえばゲームを通さなくても PlayFab SDK から GetContentDownloadUrl を総当り的に叩いて意図しないリソースにアクセスすることも不可能ではないのでこれを禁止したい

PlayFab ではタイトルごとに API のアクセスポリシーを細かく制御することが可能ですので、今回はこれを試してみました。

ちなみに一部の API は GameManager 上でチェックボックスにチェックを入れるだけでポリシーを変更できます。
image.png

しかしながら GetContentDownloadUrl は GameManager でポリシーを変更できない API なので、 Admin API を使用してポリシーを変更します。

Admin API を使って API のアクセスポリシーを変更する

C# のコンソールアプリケーションを作成して以下のコードを実行します。

async Task Main()
{
    PlayFabSettings.staticSettings.DeveloperSecretKey = "your title secret";
    PlayFabSettings.staticSettings.TitleId = "your title id";

    await PlayFabAdminAPI.UpdatePolicyAsync(new UpdatePolicyRequest
    {
        PolicyName = "ApiPolicy",
        OverwritePolicy = false,
        Statements = new List<PermissionStatement>
        {
            new PermissionStatement
            {
                Action = "*",
                ApiConditions = new ApiCondition
                {
                    HasSignatureOrEncryption = Conditionals.False
                },
                Comment = "Do not allow clients to this api",
                Resource = "pfrn:api--/Client/GetContentDownloadUrl",  // ←ポリシーを変更する API 名
                Effect = EffectType.Deny,
                Principal = "*"
            }
        }
    });
}

この状態で Client API から GetContentDownloadUrl を実行すると 403 エラーになりました。
image.png

Client API から実行できなくした GetContentDownloadUrl は、Server API で実行することができます。

クライアント(Unity 等)からは Cloud Script を実行し、Cloud Script 側で Server API を使用して GetContentDownloadUrl を実行してその結果をクライアントに返せば困らないですね。

API アクセスポリシーを設定してよりセキュアにゲームを運用する一例でした。

参考ドキュメントなど

API access policy

Content Delivery Network quickstart

UnityでPlayFabのFileContentをDownloadしてSaveする

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1