GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

リソースレベルのアクセス制御ができるようになりました

はじめに

GS2-Identifier は GS2 のAPI呼び出しのための権限管理をするためのサービスです。
プロジェクトに対して複数のクレデンシャル(APIキー)を発行でき、それぞれに呼び出し可能なAPI権限を設定できます。

機能追加の背景

これまでは、呼び出し可能なAPIの種類のみが制御可能でした。
今回のアップデートでは、そこから更にリソース単位でのアクセス制御が可能となりました。

例えば、クレデンシャルAは 「GS2-Account でアカウントを作成する権限がある」 というような設定しかできなかったのが
「GS2-Account のネームスペース1 にアカウントを作成する権限がある」というような設定が可能となりました。

機能追加の詳細

今回の機能追加により、これまでであればチートに繋がる恐れがあるため推奨できなかった
クライアントアプリケーションから GS2-Script をプレイヤーが任意のタイミングで実行しても問題ないように実装されたスクリプトスクリプトのみをAPIの呼び出し権限に加えることができます。

制限の適用方法

{
  "Version": "2016-04-01",
  "Statements": [
    {
      "Effect": "Allow",
      "Actions": [
        "Gs2Inbox:*"
      ],
      "Resources": [
        "*"
      ]
    }
  ]
}

これまで Resouces セクションには "*" しか指定できませんでした。
しかし、今回のアップデートで操作を許可または拒否する grn を指定できるようになりました。

Actions と同様にワイルドカード(*)を先頭または末尾に追加できます。

例えば、GS2-Script に 「namespace1」 と 「namespace2」 があり、namespace2 のスクリプトのみをクライアントから直接呼び出せるように設定したい場合は

{
  "Version": "2016-04-01",
  "Statements": [
    {
      "Effect": "Allow",
      "Actions": [
        "Gs2Script:InvokeScript"
      ],
      "Resources": [
        "grn:gs2:ap-northeast-1:your-owner-id:script:namespace2:*"
      ]
    }
  ]
}

と指定したポリシーをクレデンシャルに割り当てることで、実現ができます。
GRNの値はマネージメントコンソールで確認したり、権限がない状態でAPIを呼び出すことでエラーメッセージで権限の不足しているGRNの確認が可能です。

より詳しいドキュメントは以下を参照してください。

docs.gs2.io

(C) Game Server Services, Inc.