Supabase : 認証されたユーザーだけをアクセス可能にする設定

要約
Supabase の Row Level Security (RLS) を使って、認証されたユーザーの ID が、対象データの `user_id` と一致するかどうかをチェックします。
意見はこのエリアに表示されます

フロントエンドの知識しかない私は会員制のアプリケーションを Supabase を使って開発できています。もう、本当にこれ一択かなと思っています。

Supabase とは

Supabase は、エンジニアの味方みたいなオープンソースの Firebase の代替サービスです。リアルタイムデータベース、認証、ストレージ機能など、開発に必要なものを全部揃えてくれています。

PostgreSQL をベースにしているので、強力なアクセス制御や拡張性を持ちつつ、設定がとってもシンプルなんです。特に、RLS(行レベルセキュリティ)を使うと、データのアクセス制御をきめ細かく、しかも簡単に設定できます。フロントエンドからバックエンドまで、一気に開発を進められるのが Supabase のいいところですよね。

RLS とは?

RLS(Row Level Security、行レベルセキュリティ)は、データベース内の各行に対するアクセス権を制御する仕組みです。簡単に言うと、ユーザーが見たり編集したりできるデータを特定の条件で制限することができます。

で、こういった面倒な設定も管理画面でサクッとできるんですね。

例えば、ログインしているユーザーが自分のデータだけにアクセスできるようにしたり、管理者には全データへのアクセスを許可したりと、細かなアクセス制御が可能になります。Supabase の RLS を使うと、SQL のシンプルなクエリでこれらのルールを設定できるので、セキュリティ強化と便利さが両立できるんです。

認証されたユーザーだけをアクセス可能にする

まずは認証されたユーザーだけが自身のデータにアクセスできるようにする方法から。これ、よく使いますよね。例えば、ユーザーが自分のプロファイルだけを見られるようにしたいときなんかに便利です。以下のクエリを使って、認証されたユーザーの ID が、対象データの user_id と一致するかどうかをチェックします。

管理者ユーザーだけがアクセス可能にする

次に、管理者だけに特定のデータへのアクセスを許可する方法です。これは、例えば運営者だけが閲覧できる管理画面を作るときなどに使います。以下のクエリを使って、認証されたユーザーが管理者(is_admin = true)であるかどうかをチェックします。

認証されたユーザーと管理者の両方がアクセス可能にする

次は、認証されたユーザー自身と管理者の両方がデータにアクセスできるようにするケースです。ユーザーが自分のデータにアクセスできる一方で、運営側もアクセスできるようにしたい、そんなシーンで役立ちます。以下のクエリを使って、ユーザーが認証済みかつ自身のデータにアクセスするか、または管理者であるかを確認します。

おわりに

Supabase の RLS を使えば、データベースのアクセス制御が驚くほど簡単に行えます。ユーザーごとのデータ管理もスムーズにできるし、管理者だけの特別アクセスも簡単に設定可能です。RLS のクエリをうまく活用して、ユーザーに合った適切なアクセス権を設定してみましょう。開発が一段と楽しくなりますよ!

Explore More
関連記事はありません。