hasura-rest-hands-on/docs/permissions.md
2022-03-09 15:30:06 +09:00

5.9 KiB

アクセス権の設定

アクセス権の設定を行います。Hasuraはテーブルの行単位でアクセス制御を行うことが可能です。このハンズオンでは秘密鍵を持たずとも誰でもREST APIを利用できるようにします。

注: セキュアではないので本番環境ではJWT等で認証・認可しましょう

[Data Manager] > [View Database] > pages テーブル > [Permissions]パネルから、テーブル内のデータのアクセス件を設定可能です。

認証・認可していない利用者のために、ここでは例として anonymous ロールを割り当てます。

insert (データの挿入) 権限の設定

anonymous ロールの行 > insert の列を選択し、データの挿入の権限の設定を行います。

下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。

  • Row insert permissions > Without any checks
  • Column insert permissions > id content ([Toggle All]ボタンを押す)

select (データの取得) 権限の設定

anonymous ロールの行 > select の列を選択し、データの取得の権限の設定を行います。

下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。

  • Row select permissions > Without any checks
  • Column select permissions > id content ([Toggle All]ボタンを押す)

update (データの更新) 権限の設定

anonymous ロールの行 > update の列を選択し、データの取得の権限の設定を行います。

下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。

  • Pre-update check > Without any checks
  • Post-update check > Without any checks
  • Column update permissions > id content ([Toggle All]ボタンを押す)

anonymous ロールのinsert、select、updateにマークが入っていれば完了です。

環境変数 HASURA_GRAPHQL_UNAUTHORIZED_ROLE=anonymous の設定

Hasuraの環境変数として HASURA_GRAPHQL_UNAUTHORIZED_ROLE=anonymous を与えることで、認証・認可していない利用者に割り当てられるロールを設定します。

Hasura Cloudのプロジェクトの画面に戻り、[Env vars]にアクセスします。

[+ New Env Var]ボタンを押して、環境変数を追加します。

環境変数 説明
HASURA_GRAPHQL_UNAUTHORIZED_ROLE 認証・認可されていない利用者に割り当てるロール anonymous

入力後、[Add]ボタン押して追加します。

REST APIエンドポイントの確認

実際にHasuraのREST APIエンドポイントにアクセスできるか確認してみましょう。

  • プロトコル: HTTPS
  • ドメイン名: {Hasura Cloudのプロジェクト名}.hasura.app
名称 HTTPメソッドとパス 説明
ページの取得 GET /api/rest/page/:id 割り当てられた識別子 id をもつページを取得します。ページが存在する場合、レスポンスボディには data.page.content プロパティを含みます。
ページの更新 PUT /api/rest/page/:id 割り当てられた識別子 id をもつページを更新します。リクエストボディには content プロパティを与えます。

例: id1 のページにアクセスする https://memo-demo.hasura.app/api/rest/page/1

Hasura Cloudで作成したREST APIエンドポイントにアクセスするには、Hasura Cloudのプロジェクト名の直後に .hasura.app を加えたドメイン名でアクセスできます。 たとえば、Hasura Cloudのプロジェクト名が memo-demo の場合、ドメイン名は memo-demo.hasura.app となります。プロジェクトによって異なるので、自分の作成したプロジェクトに合わせて書き換えましょう。

これで、REST APIエンドポイントをWebアプリから利用する準備が整いました。