Public Cloud のカスタムパーミッション
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
カスタムパーミッションは、主に Extend Service Extension を使用してカスタム API を作成し、そのカスタム API に対してプレイヤー(Game Client 経由)や Game Server からアクセスさせたいと考える AGS Public Cloud のお客様を対象としています。
AGS サービス API が提供する組み込みの パーミッション とは別に、Public Cloud のスタジオ管理者はプレイヤーや Game Server に対して任意のパーミッションを自由に追加することはできません。カスタムパーミッションは、以下を目的として定義済みの形式に従う必要があります。
- AGS の組み込みパーミッション文字列との衝突を防ぐこと。
- 意図しないアクセスを防ぐ — スタジオ管理者が意図したスコープ外の AGS リソースや他スタジオが所有するリソースへのアクセスを許可できないようにすること。
Private Cloud をご利用の場合、カスタムパーミッションを利用する必要はありません。Private Cloud には同様のマルチテナント制限がないため、本記事で説明するカスタムパーミッション形式に従わずに、パーミッションを自由に定義できます。
カスタムパーミッションの形式
カスタムパーミッションは、パーミッションの基礎 ガイドで説明されているものと同じパターンおよび基本的な仕組みに従いますが、1 つ重要な違いがあります。カスタムパーミッションは定義済みのプレフィックスで始まる必要があるという点です。Extend App が公開するエンドポイントの目的に応じて、管理者パーミッション形式とパブリックパーミッション形式の 2 つの形式が用意されています。
パーミッションリソース
- Admin permission format
- Public permission format
Extend App が管理者用ユーティリティエンドポイント(例: クライアントクレデンシャルトークンを使用して Game Server やカスタムバックエンドサービスから呼び出される)を公開する場合は、管理者形式を使用します。
CUSTOM:ADMIN:NAMESPACE:{namespace}:<OBJECTNAME>
-
<OBJECTNAME>は、ご自身の実装に基づいて定義するプレースホルダーであり、Extend App が公開するカスタムリソースを表します。例:CUSTOM:ADMIN:NAMESPACE:{namespace}:PROGRESSION:CLAIMS
CUSTOM:ADMIN:NAMESPACE:{namespace}:USER:{userId}:PROGRESSIONS
Extend App がプレイヤー向けエンドポイント(例: Game Client からのプレイヤーアクセストークンを使用して呼び出される)を公開する場合は、パブリック形式を使用します。
CUSTOM:NAMESPACE:{namespace}:<OBJECTNAME>
-
<OBJECTNAME>は、ご自身の実装に基づいて定義するプレースホルダーであり、Extend App が公開するカスタムリソースを表します。例:CUSTOM:NAMESPACE:{namespace}:PROGRESSION:CLAIMS
CUSTOM:NAMESPACE:{namespace}:USER:{userId}:PROGRESSIONS
最終的にどのパーミッション形式を選択するかは実装によって異なりますが、この管理者/パブリック形式の分離に従うことをベストプラクティスとして推奨します。これにより、パーミッション設計を AGS 自体の組み込みパーミッションの構造と整合させることができます。
パーミッションアクション
パーミッションアクションは、そのパーミッションによってユーザーまたはアプリケーションがリソースに対して何を実行できるようになるかを表します。カスタムパーミッションは、AGS の組み込みパーミッションと同じアクション(Create、Read、Update、Delete)をサポートします。
カスタムパーミッションの付与
Extend App でカスタムパーミッションを定義したら、適切なプリンシパルにそのカスタムパーミッションを付与できます。
- プレイヤーにカスタムパーミッションを付与する場合(デフォルトユーザーロールのオーバーライド経由): デフォルトユーザーロールへのカスタムパーミッションの追加 を参照してください。
- Game Server またはカスタムバックエンドにカスタムパーミッションを付与する場合(機密 IAM クライアント経由): IAM クライアントパーミッションの追加と編集 を参照してください。