APIの作成
APIの作成アクセス制御の定義

アクセス制御の定義

アクセス制御リストを通じて、スキーマ内のすべてのフィールドとディレクティブにアクセスできるユーザーを管理できます。

Gato GraphQL には、以下のアクセス制御ルールが付属しています:

  • アクセスを無効にする
  • ユーザーがログイン中またはログアウト中の場合にアクセスを許可する
  • ユーザーが特定のロールを持っている場合にアクセスを許可する
  • ユーザーが特定のケイパビリティを持っている場合にアクセスを許可する
  • 訪問者が許可された IP アドレスからアクセスしている場合にアクセスを許可する

リクエストされたクエリ(カスタムエンドポイントを通じて実行されるか、パーシステッドクエリとして実行されるかにかかわらず)に、アクセス制御リストに追加されたフィールドまたはディレクティブが 1 つ以上含まれている場合、対応するルールが評価されます。いずれかのルールが満たされない場合、そのフィールドまたはディレクティブへのアクセスは拒否されます。

設定はアクセス制御リスト(ACL)を通じて作成され、スキーマ設定を介してカスタムエンドポイントおよびパーシステッドクエリに適用されます。

すべてのアクセス制御リストへのアクセス

プラグインのメニューで「Access Control Lists」をクリックすると、作成済みのすべてのアクセス制御リストが表示されます:

管理画面のアクセス制御リスト
管理画面のアクセス制御リスト

新しいアクセス制御リストの作成

「Add New Access Control List」ボタンをクリックして WordPress エディターを開きます:

アクセス制御リストの作成

アクセス制御リストにタイトルを付け、オペレーション・フィールド・ディレクティブを含むエントリを追加し、適用するルールを設定して、可視性(公開または非公開)を定義します:

アクセス制御リストの作成

準備ができたら、Publish ボタンをクリックしてください。これにより、新しいアクセス制御リストがスキーマ設定で利用可能になります。

アクセス制御エントリ

すべてのアクセス制御リストには 1 つ以上のエントリが含まれており、各エントリには以下の要素があります:

  • アクセスを許可または拒否するオペレーション
  • アクセスを許可または拒否するフィールド
  • アクセスを許可または拒否するディレクティブ
  • 検証するルールのリスト

アクセス制御エントリ

インターフェイスからのフィールドの選択

タイプのフィールドに加えて、インターフェイスからフィールドを選択することもできます。この場合、アクセス制御の検証はそのインターフェイスを実装するすべてのタイプで実行されます。

インターフェイスからフィールドを選択
インターフェイスからフィールドを選択

公開/非公開モード

「Public/Private Schema」モジュールが有効な場合、特定のフィールドまたはディレクティブへのアクセスが拒否されたときに、API が動作する方法が 2 つあります:

  • 公開モード:アクセスが拒否された理由を示すエラーメッセージをユーザーに提供する
  • 非公開モード:フィールドまたはディレクティブが存在しないことを示すエラーメッセージを表示する

このモジュールが有効でない場合、デフォルトの動作は公開になります。

詳細な公開/非公開モード

「Public/Private Schema」モジュールの「Enable granular control?」オプションon の場合、エントリには追加の要素があります:

  • Public/Private Schema:アクセス拒否時の動作
個別の Public/Private スキーマモード
個別の Public/Private スキーマモード

アクセス制御リストの説明

ドキュメント設定パネルの「Excerpt」フィールドを使用して、アクセス制御リストに説明を付けてください。

詳細については、ガイド「API への説明の追加」をご参照ください。

アクセス制御リストの使用

ACL を作成した後、対応するスキーマ設定を編集し、「Access Control Lists」ブロックの下のリストから ACL を選択することで、カスタムエンドポイントまたはパーシステッドクエリでそれを使用できます。

スキーマ設定でのアクセス制御リストの選択
スキーマ設定でのアクセス制御リストの選択

設定をカスタマイズしない場合、設定ページの「Access Control」タブで定義されたデフォルトのアクセス制御リストが使用されます:

設定ページでのデフォルトのアクセス制御リストの選択