パーミッションの基礎
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
パーミッションは、AccelByte Gaming Service (AGS) リソースを使用するユーザーとアプリケーションにアクセス権を付与します。パーミッションは承認システムの基盤であり、以下の要素で構成されます。
-
パーミッション要件: ほとんどの AGS API エンドポイントはパーミッションを必要とします。
注記API エンドポイントドキュメント には、各エンドポイントにシステムが必要とするパーミッションが記載されています。
-
パーミッション付与: Admin Portal を使用して、IAM クライアント経由でアプリケーションに、およびロール経由でユーザーにパーミッションを割り当てることができます。
この記事では、AGS パーミッションとその使用方法について詳しく説明します。IAM クライアントとロールを通じてユーザーに割り当てることができるパーミッションを示す関連ガイドへのリンクも提供しています。
構文
パーミッションは_パーミッションリソース_と_パーミッションアクション_で構成されます。
パーミッションリソース
AccelByte Gaming Services (AGS) には RESTful API 設計を使用しています。RESTful API では、主要なデータ表現は_リソース_です。AGS では、パーミッションリソースはコロンで区切られた複数のトークンを含む文字列です。パーミッションが適用される namespace とユーザーの詳細、および保護されたオブジェクトの名前を含めることができます。
パーミッションアクション
パーミッションアクションは、パーミッションがユーザーまたはアプリケーションにリソースに対して何を実行できるかを記述します。アクションは: 作成、読み取り、更新、削除です。
パーミッション要件
AGS エンドポイントのパーミッションを定義する際は、上記の一般的な構文に従ってください。例えば、4 つの別々のトークンを含む AGS エンドポイントのパーミッション要件のテンプレートを以下に示します。
[ADMIN:][NAMESPACE:<namespace>:][USER:<userId>:]<OBJECTNAME>
-
ADMIN: パーミッションが管理リソース用であることを示すオプションのトークンです。ADMIN エンドポイントのパーミッションにのみプレフィックスとして付ける必要があり、以下のシナリオで使用されます:- IAM クライアントが承認する AGS とアプリケーション間の信頼された内部 API 呼び出し。
- 正しいロールを持つ管理者ユーザーが Admin Portal(または別の適切な外部ツール)を使用して呼び出しを実行できる。
例えば、ユーザーはロール情報を検索するために使用するエンドポイントに管理者パーミッションが必要です。
エンドポイント パーミッション 説明 GET /iam/v3/admin/rolesADMIN:ROLE [READ]ロールはどの namespace またはユーザーにも属さないプラットフォームレベルのオブジェクトであるため、パーミッションには NAMESPACE:{namespace}またはUSER:{userId}は含まれません。- パブリックエンドポイントは常に非管理者パーミッションを使用します。有効なアクセストークンを持つ承認されたユーザーアカウントはこれらのエンドポイントを呼び出すことができます。
-
NAMESPACE:{namespace}: このオプションのトークンは、リソースが名前空間レベルにある場合にのみ使用します。IAM クライアント、ストア、その他のリソースが必要とします。パーミッションが適用される namespace を示します。構文は文字列 NAMESPACE: とそれに続く namespace 名プレースホルダー{namespace}です。例えば、特定の namespace 内に IAM クライアントを作成するエンドポイントには管理者パーミッションが必要です。エンドポイント パーミッション 説明 POST /iam/v3/admin/namespaces/{namespace}/clientsADMIN:NAMESPACE:{namespace}:CLIENT [CREATE]リクエストが POST /iam/v3/admin/namespaces/accelbyte/clients経由でリソースにアクセスしようとすると、パーミッションはADMIN:NAMESPACE:accelbyte:CLIENT [CREATE]になります。IAM クライアントは namespace レベルにありますが、ユーザー固有のリソースではないため、パーミッションに User:userId はありません。 -
USER:{userId}: このオプションのトークンはユーザー固有のリソースにのみ使用します。このトークンはNAMESPACE:{namespace}に似ており、パーミッションが適用されるユーザーを表します。構文はUSER:とそれに続くユーザー ID プレースホルダー{userId}です。例えば、特定の namespace の特定のユーザーに属するエンタイトルメントを検索するためのエンドポイントに必要な管理者パーミッションを示します。エンドポイント パーミッション 説明 GET /admin/namespaces/{namespace}/users/{userId}/entitlementsADMIN:NAMESPACE:{namespace}:USER:{userId}:ENTITLEMENT [READ]リクエストが GET /admin/namespaces/accelbyte/users/1234/entitlements経由でリソースにアクセスしようとすると、実際に必要なパーミッションはADMIN:NAMESPACE:accelbyte:USER:1234:ENTITLEMENT [READ]になります。 -
OBJECTNAME: このトークンは必須で、PROFILE や CURRENCY などの保護されたリソースオブジェクトを表します。例えば、namespace の通貨を検索するためのエンドポイントに対する管理者パーミッションです。エンドポイント パーミッション 説明 GET /admin/namespace/{namespace}/currenciesADMIN:NAMESPACE:{namespace}:CURRENCY [READ]パーミッションリソースにはコロンで区切られた複数のオブジェクト名を含めることができますが、推奨しません。
パーミッション付与
- AGS Shared Cloud
- AGS Private Cloud
Shared Cloud では、IAM クライアントへのパーミッション付与は事前定義されたパーミッションを必要に応じてトグルすることで簡単に行えます。詳細は、IAM クライアントの作成 と IAM クライアントパーミッションの追加と編集 を参照してください。
ただし、Extend Service Extension を使用してカスタム API を作成し、プレイヤーまたはゲームサーバーがアクセスできるようにしたい場合は、IAM クライアントまたはデフォルトユーザーロールにカスタムパーミッションを追加することもできます。Shared Cloud のカスタムパーミッションは、AGS 組み込みパーミッションとの競合やスタジオ間のアクセスを防ぐために事前定義された形式に従う必要があります。詳細は Shared Cloud のカスタムパーミッション を参照してください。
Private Cloud では、パーミッションリソースを提供することで IAM クライアントにパーミッションを手動で付与します。これを行うには、構文セクションで説明したパーミッションの適切な構文に従う必要があります。 詳細は、IAM クライアントの作成 と IAM クライアントパーミッションの追加と編集 を参照してください。
Shared Cloud と同様のトグルパーミッション機能は、Private Cloud でも近日中に利用可能になる予定です。
以下は 4 つの別々のトークンを含む付与されたパーミッションのテンプレートです。
[ADMIN:][NAMESPACE:<namespace>:][USER:<userId>:]<OBJECTNAME>
-
ADMIN: これは ADMIN エンドポイントのパーミッション要件と同じです。管理リソースのパーミッションにプレフィックスとして付ける必要があります。例えば、ロールの CRUD(作成、読み取り、更新、削除)に対する管理者パーミッションです。パーミッション 説明 ADMIN:ROLE [CREATE] | [READ] | [UPDATE] | [DELETE]アクション間のロジックはビット単位の OR(|)です。 -
NAMESPACE:{namespace}: オプション。リソースが namespace レベルにある場合にのみ使用します。構文は
NAMESPACE:とそれに続く namespace 名プレースホルダー{namespace}、*(ワイルドカード)、または特定の namespace 名です。-
{namespace}: この値はバックエンドにユーザーまたはアプリケーションから付与された namespace に動的に解決するよう指示します。対応するパーミッションを持つクライアントとユーザーは特定の namespace のリソースのみを使用できることを意味します。例えば、システムがユーザーアカウントとアプリケーションに付与する namespace で IAM クライアントを作成するためのアクセス権を付与するパーミッションです。パーミッション 説明 ADMIN:NAMESPACE:{namespace}:CLIENT [CREATE]システムはアスタリスク( *)をワイルドカードとして解釈し、すべての namespace のそのリソースへのアクセスを許可します。例えば、任意の namespace で IAM クライアントを作成するためのアクセス権を付与するパーミッションは:ADMIN:NAMESPACE:*:CLIENT -
特定の namespace 名: 特定の namespace を指定すると(例: NAMESPACE:namespace_A)、システムはその特定の namespace のリソースのみのパーミッションを付与します。スーパー管理者はこれを使用して、カスタマーサポートユーザーに特定のゲーム namespace のリソースに対する限定的な管理者アクセスを付与することができます。パーミッション 説明 ADMIN:NAMESPACE:namespace_A:CLIENT [CREATE]このパーミッションは特定の namespace(namespace_A)のみで IAM クライアントを作成するためのアクセス権を付与します。
-
-
USER:userId: オプション。ユーザー固有のリソースにのみ使用します。構文は
USER:とそれに続くユーザー ID プレースホルダー{userId}、またはワイルドカードのアスタリスクです。-
{userId}: この値はバックエンドにログインしたユーザーの ID に動的にバインドするよう指示し、{userId}をユーザーの実際の ID に置き換えます。これは対応するパーミッションを付与されたクライアントとユーザーが特定のユーザーに属するリソースを使用できることを意味します。例えば、任意の namespace のログインしたユーザーのエンタイトルメントを検索するためのアクセス権を付与するパーミッションです。パーミッション 説明 ADMIN:NAMESPACE:*:USER:{userId}:ENTITLEMENT [READ]システムはアスタリスク( *)をワイルドカードとして解釈し、任意のユーザーに属するリソースへのアクセスを許可します。例えば、任意の namespace の任意のユーザーのエンタイトルメントを検索するためのアクセス権を付与するパーミッションは:ADMIN:NAMESPACE:*:USER:*:ENTITLEMENT [READ]。
-
-
OBJECTNAME: これは ADMIN エンドポイントのパーミッション要件とほぼ同じです。構文は特定のオブジェクト名またはワイルドカードのアスタリスクです。-
特定のオブジェクト名: 保護されたリソースオブジェクトを表します。例えば、特定の namespace の特定のユーザーに属するプロフィールを検索するためのアクセス権を付与するパーミッションです。
パーミッション 説明 ADMIN:NAMESPACE:{namespace}:USER:{userId}:PROFILE [READ]すべてのリソースオブジェクトへのアクセスを付与したい場合は、オブジェクト名をワイルドカード( *)のアスタリスクに置き換えます。例えば、任意の namespace のログインしたユーザーの何でも検索するためのアクセス権を付与するパーミッションは:ADMIN:NAMESPACE:*:USER:{userId}:* [READ]
-
トラブルシューティング
このセクションでは、サービスの使用時に発生する可能性があるエラーと問題を一覧にしています。
各 AGS エンドポイントに必要なパーミッションを見つける方法
API エンドポイントドキュメント を検索してください。各エンドポイントに必要なパーミッションが記載されています。
パーミッション関連のエラーを解決する方法
リソースセクション のエラーと例外を確認してください。
次のステップ
ユーザーロールの管理 と IAM クライアントの管理 について学びましょう。