ドキュメント

​
​

Development

User Acquisition

Monetization

産業

Cloud Code

Open Unity Dashboard

Cloud Code

LiveOps
​
​
Cloud Code
  • Overview
  • Get started
  • Server authority
  • Cloud Code C# modules
    • Overview
    • Get started
    • Concepts
    • Tutorials
      • Run modules
      • Write modules
      • Development essentials
      • Automate deployment
      • Integrate services
        • Integrate with other Unity Services
        • Interact with cross-player data
        • Integrate with external services
        • Use Access Control
        • Send push messages
      • Advanced configuration
      • Use Cases
    • Reference
  • Cloud Code JavaScript scripts
  • Logging
  • Use-case samples
  • Privacy and consent
  1. Cloud Code

アクセス制御

Control access to Unity Gaming Services by creating rules to restrict service APIs you want to protect.
読み終わるまでの所要時間 7 分
最終更新 5ヶ月前

Access Control サービス を介して、Cloud Code を含む Unity Gaming Services (UGS) へのアクセスを制御できます。
Access Control では、ルールを作成して、プレイヤーに対して使用可能にしないサービス API へのアクセスを制限できます。
注
プレイヤーにモジュールへのアクセスを許可すると、ゲームのセキュリティが低下します。詳細については、サーバー主導 を参照してください。

Cloud Code でプレイヤーの経済をコントロールする例

以下の例は、Economy サービス の increment/decrement API へのアクセスを拒否するポリシーに基づいてプロジェクトを作成する方法を示します。プレイヤーは自分の残高を直接には操作できないため、プレイヤーに代わってこれらのリクエストを 信頼できるクライアント として行う Cloud Code モジュールを作成できます。
UGS CLI ツール でアクセスポリシーを適用できます。

前提条件

例に進む前に、プロジェクトが以下の前提条件を満たしていることを確認します。
  1. Economy サービス に 公開された通貨 がある。
  2. UGS CLI がコマンドを実行するように設定されている。詳細については、使用の準備 ガイドを参照してください。
  3. プロジェクトレベルのプロジェクトリソースポリシーエディター、プロジェクトリソースポリシーリーダー、および Unity 環境閲覧者のロールが、CLI ツールでの認証に使用するサービスアカウントに付与されている。

アクセスを制限するアクセス制御プロジェクトポリシーの作成

以下のコンテンツで
project-policy.json
ファイルを作成して、プレイヤーによる Economy サービス内の increment および decrement API への直接アクセスを拒否するポリシーを作成します。
{ "statements": [ { "Sid": "DenyPlayerAccessForEconomyIncrementAndDecrement", "Resource": "urn:ugs:economy:/*/*crement", "Principal": "Player", "Action": ["*"], "Effect": "Deny" } ]}
UGS CLI ツールを使用して、このポリシーをプロジェクトに適用します。
ugs access upsert-project-policy project-policy.json
プレイヤーとして認証 されている場合にプレイヤーの
increment
API エンドポイントへの直接リクエストがポリシーによって正常に拒否されたことをテストします。
curl 'https://economy.services.api.unity.com/v2/projects/<PROJECT_ID>/players/<PLAYER_ID>/currencies/<CURRENCY_ID>/increment' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer <BEARER_TOKEN>' \--data '{ "amount": 10}'
ポリシーが正常に適用された場合、このリクエストは
403
HTTP ステータスコードとともにレスポンスを返します。
{ "status": 403, "title": "Forbidden", "type": "https://services.docs.unity.com/docs/errors/#56", "requestId": "b815d154-91f5-470e-a8ef-76c3c8ec7c13", "detail": "Access has been restricted", "code": 56}

モジュールエンドポイントの作成

最新の Economy SDK バージョンを含む Cloud Code モジュールを 作成 して残高増加リクエストを行います。モジュール関数は、パラメーターとして
currencyId
を受け取って、残高更新を適用する通貨を定義します。これが Economy 通貨設定のリソース ID と一致することを確認します。
using Microsoft.Extensions.DependencyInjection;using Unity.Services.CloudCode.Apis;using Unity.Services.CloudCode.Core;using Unity.Services.CloudCode.Shared;using Unity.Services.Economy.Model;namespace Sample;public class EconomySample{ [CloudCodeFunction("IncrementBalance")] public async Task<ApiResponse<CurrencyBalanceResponse>> IncrementPlayerBalance(IExecutionContext ctx, IGameApiClient gameApiClient, string currencyId) { try { return await gameApiClient.EconomyCurrencies.IncrementPlayerCurrencyBalanceAsync(ctx, ctx.ServiceToken, ctx.ProjectId, ctx.PlayerId, currencyId, new CurrencyModifyBalanceRequest(currencyId, 10)); } catch (ApiException ex) { throw new Exception($"Failed to get increment {currencyId} currency for player: {ctx.PlayerId}. Error: {ex.Message}"); } } public class ModuleConfig : ICloudCodeSetup { public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(GameApiClient.Create()); } }}
重要
重要: Economy SDK のデフォルト認証は、バージョン 2.4 以上の Cloud Code サービスアカウントを使用します。これは、バージョン 2.3 以下を使用している場合はプレイヤーとして認証します。
プレイヤーとして認証するときに Cloud Code モジュールが残高を増やせることをテストします。
curl --request POST 'https://cloud-code.services.api.unity.com/v1/projects/<PROJECT_ID>/modules/<MODULE_NAME>/<FUNCTION_NAME>' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer <BEARER_TOKEN>' \--data '{ "params": { "currencyId": <CURRENCY_ID> }}'
残高更新リクエストに成功した場合、Cloud Code は
200
HTTP ステータスコードと新しい残高値を含む増加リクエストの結果で応答する必要があります。
{ "result": { "balance": 10, "created": { "date": "2023-06-30T09:12:54Z" }, "currencyId": "GOLD", "modified": { "date": "2023-06-30T09:12:54Z" }, "writeLock": "1" }}

モジュールの検証

Player Management を使用して Unity Dashboard で、または Economy サービス API を介して残高をリクエストすることで、プレイヤーの通貨残高を確認できます。
curl 'https://economy.services.api.unity.com/v2/projects/<PROJECT_ID>/players/<PLAYER_ID>/currencies' \--header 'Authorization: Bearer <BEARER_TOKEN>'
Cloud Code がプレイヤーの残高をコントロールするように正常に設定されたら、プレイヤーの残高が期待される場合にのみ更新されるようにする追加のロジックを挿入できます。

Copyright © 2026 Unity Technologies
法規事項プライバシーポリシークッキーDocumentation Terms of Use私の個人情報を販売または共有しないプライバシーに関する選択 (クッキー設定)

"Unity" の名称、Unity のロゴ、およびその他の Unity の商標は、米国およびその他の国における Unity Technologies またはその関係会社の商標または登録商標です (詳しくはこちら)。その他の名称またはブランドは該当する所有者の商標です。

一部のページは利便性向上のため機械翻訳を使用しており、内容に不正確な表現が含まれる場合があります。内容に齟齬または不一致が生じた場合は、英語版を正本とします。

  • このページ
    • Cloud Code でプレイヤーの経済をコントロールする例

      • 前提条件

      • アクセスを制限するアクセス制御プロジェクトポリシーの作成

      • モジュールエンドポイントの作成

      • モジュールの検証


このページの問題を報告する