0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgRESTことはじめ

Last updated at Posted at 2025-07-15

PostgRESTはPostgreSQLでデータベースを作成すると、自動でREST APIを生成してくれるOSSツールです。
公式チュートリアルをフォローすることで、最低限の使い方が理解できます。
その大まかな流れと分かりづらい点についてまとめました。

大まかな手順

  • まず、PostgreSQLでスキーマを作る。
  • 次にロール(todo_user)を作成して適当な権限を付与。
  • さらに、authenticatorロールを作成してこれに権限付与する。
  • .confファイルを引数に指定して、postgrestコマンドを実行。

ユーザー認証の詳細

authenticatorユーザーをパスワード付で作成

create role authenticator noinherit login password 'mysecretpassword';

PostgRESTにアクセスするロールをnologinで作成し、authenticatorロールに権限付与

create role todo_user nologin;
grant todo_user to authenticator;

そのロールにスキーマ、テーブル等の権限を付与。なお、authenticatorユーザーのロール名は任意で、.confファイルのdb-uriで指定できる。

{"role": ロール名}の情報を入れてJWTトークンを発行することで(jwt.ioなどで可能)、Authorizationヘッダーに設定して認証可能になる。その際、JWTトークン発行に使った秘密鍵は.confファイルにjwt-secret として設定。

export TOKEN="<paste token here>"

curl http://localhost:3000/todos -X POST \
     -H "Authorization: Bearer $TOKEN"   \
     -H "Content-Type: application/json" \
     -d '{"task": "learn how to auth"}'

これにより、裏ではauthenticatorロールがSET ROLEを使って、指定されたロールへ成り代わって操作を実行するので、todo_userでログインしなくてもDB操作が可能になっている。

上記のユーザーロールの他、認証なしでのAPIアクセスを担うロールとしてanonymousロールが使える。ロール名は任意で、.confファイルのdb-anon-roleで指定可能。anonymousロールもnologinで作成し、authenticatorへ権限付与を行う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?