アクセス制御
Control access to Unity Gaming Services by creating rules to restrict service APIs.
読み終わるまでの所要時間 3 分最終更新 23日前
Access Control サービス を介して、Cloud Code を含む Unity Gaming Services (UGS) へのアクセスを制御できます。 Access Control を使用すると、ルールを作成して、プレイヤーに対して使用可能にしないサービス API へのアクセスを制限できます。
Cloud Code モジュールへのプレイヤーのアクセスを制御する例
以下の例は、Cloud Code サービス API へのアクセスを拒否するポリシーに基づいてプロジェクトを作成する方法を示します。プレイヤーからの直接リクエストを拒否する一方で Cloud Code C# モジュールをトリガーに関連付けて、ゲームのセキュリティを向上させます。UGS CLI ツール でアクセスポリシーを作成できます。前提条件
最初に、必要なアクセスロールでサービスアカウントを作成し、UGS CLI を設定する必要があります。サービスアカウントを使用した認証
Scheduling および Triggers サービスを呼び出す前に、サービスアカウントを使用して認証する必要があります。- Unity Cloud Dashboard に移動します。
- Administration (管理) > Service Accounts (サービスアカウント) を選択します。
- New (新規) ボタンを選択し、サービスアカウントの名前と説明を入力します。
- Create (作成) を選択します。
- Manage product roles (製品ロールの管理) を選択します。
- 以下のロールをサービスアカウントに追加します。
- LiveOps ドロップダウンから、Triggers Configuration Editor (Triggers 設定編集者)、Triggers Configuration Viewer (Triggers 設定閲覧者)、Scheduler Configuration Editor (Scheduler 設定編集者)、Scheduler Configuration Viewer (Scheduler 設定閲覧者) を選択します。
- Admin (管理者) ドロップダウンから、Unity Environments Viewer (Unity 環境閲覧者)、Project Resource Policy Editor (プロジェクトリソースポリシー編集者)、Project Resource Policy Reader (プロジェクトリソースポリシー閲覧者) を選択します。
- Save (保存) を選択します。
- Add Key (キーの追加) を選択します。
- base64 エンコードを使用して Key ID (キー ID) と Secret key (秘密鍵) をエンコードします。形式は "key_id:secret_key" です。この値をメモしておきます。
UGS CLI の設定
以下のステップに従って、UGS CLI の使用を準備します。- UGS CLI をインストール します。
-
以下を使用して、プロジェクト ID と環境を設定します。
ugs config set project-id <your-project-id>
ugs config set environment-name <your-environment-name> - 前に作成したサービスアカウントを使用して認証します。詳細については、認証の取得 を参照してください。
モジュールエンドポイントの作成
プロジェクト内のすべての接続済みプレイヤーにメッセージをブロードキャストする Cloud Code モジュールを 作成 します。 詳細については、プッシュメッセージの送信 を参照してください。モジュールをデプロイします。 モジュールのデプロイ方法を学習するには、Hello World のデプロイ を参照してください。using Microsoft.Extensions.DependencyInjection;using Unity.Services.CloudCode.Core;using Unity.Services.CloudCode.Apis;namespace HelloWorld{ public class HelloWorld { [CloudCodeFunction("SendProjectMessage")] public async Task SendProjectMessage(IExecutionContext context, PushClient pushClient, string message, string messageType) { await pushClient.SendProjectMessageAsync(context, message, messageType); } } public class ModuleConfig : ICloudCodeSetup { public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(PushClient.Create()); } }}
アクセスを制限するアクセス制御プロジェクトポリシーの作成
以下のコンテンツでproject-policy.jsonUGS CLI ツールを使用して、このポリシーをプロジェクトに適用します。{ "statements": [ { "Sid": "DenyPlayerAccessForSendingMessageToProject", "Resource": "urn:ugs:cloud-code:/v1/projects/*/modules/HelloWorld/SendProjectMessage", "Principal": "Player", "Action": ["*"], "Effect": "Deny" } ]}
ugs access upsert-project-policy project-policy.jsonSendProjectMessageポリシーが正常に適用されている場合、このリクエストはcurl 'https://cloud-code.services.api.unity.com/v1/projects/<PROJECT_ID>/players/<PLAYER_ID>/modules/HelloWorld/SendProjectMessage' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer <BEARER_TOKEN>' \--data '{"params": {"message": "hello"}}'
403同じリクエストでサービスアカウントを認証するときに Cloud Code モジュールが実行できることをテストします。続行するには、ステートレストークンを取得し、リクエストでそれを Bearer トークンとして使用する必要があります。 詳細については、Cloud Code Client API Bearer 認証 を参照してください。{ "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}
リクエストに成功した場合、Cloud Code はcurl 'https://cloud-code.services.api.unity.com/v1/projects/<PROJECT_ID>/modules/HelloWorld/SendProjectMessage' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer <BEARER_TOKEN>' \--data '{"params": {"message": "hello"}}'
200{ "output":null}
Scheduling と Triggers の設定
スケジュールとトリガーを設定して、SendProjectMessageスケジュール設定の作成
new-file以下の設定でugs scheduler new-file schedule-config
schedule-config.sched{ "$schema": "https://ugs-config-schemas.unity3d.com/v1/schedules.schema.json", "Configs": { "send-project-message": { "EventName": "announcement", "Type": "one-time", "Schedule": "2024-08-28T00:00:00Z", "PayloadVersion": 1, "Payload": "{\"message\": \"hello\"}" } }}
トリガー設定の作成
new-fileugs triggers new-file triggers-config
announcementSendProjectMessagetriggers-config.tr{ "$schema": "https://ugs-config-schemas.unity3d.com/v1/triggers.schema.json", "Configs": [ { "Name": "announcement-trigger", "EventType": "com.unity.services.scheduler.announcement.v1", "ActionUrn": "urn:ugs:cloud-code:HelloWorld/SendProjectMessage", "ActionType": "cloud-code" } ]}
設定のデプロイ
UGS CLI ツールを使用してファイルをデプロイします。正しく設定されている場合、トリガーはugs deploy <path-to-config-files>
announcementSendProjectMessage