Chapter 02

ローレベルセキュリティとは?

JboyHashimoto
JboyHashimoto
2023.03.07に更新

https://supabase.com/docs/guides/auth/row-level-security
きめ細かい認証ルールが必要な場合、PostgreSQLのRow Level Security (RLS)に勝るものはありません。

ポリシーはPostgreSQLのルールエンジンです。非常に強力で柔軟性があり、独自のビジネスニーズに合った複雑なSQLルールを記述することができます。

これは、Firestoreのセキュリティールールと同じものだと思ってもらえれば良いです。


ローレベルセキュリティを使用する方法ですが、最近Udemyで学んだ割と簡単な方法で設定するのをやってみます。完成済みのデモアプリに、Supabaseのプロジェクトを新規作成して作られたURLとAnon Keyを使用して、チュートリアルを進めていきます。

こちらがデモアプリです
こちらのデモアプリに.envファイルを作成して、ご自身のURLとAnon Keyを設定してください。
https://github.com/sakurakotubaki/RowLevelSecurityLesson
以下のコードを参考に.envに設定をしてください。

SUPABASE_URL = https://mikkqqij*****************
SUPABASE_KEY = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp************

Table editorのページで、notesテーブルを作成します。ここが重要な工程です。user_idというカラムがないと、ローレベルセキュリティーを適用することができません。
リアルタイムにデータが取得できるように、スクリーンショットと同じ箇所にチェックをつけて、設定を変えてください。その後にテーブルのカラムの定義をします。


表示を許可するルールを設定する

テーブルを作成したら、Authenticationのページで、Pliciesを選択して、先ほど作成したnotesの情報が記載されいるので、こちらでローレベルセキュリティーの設定を行います。


New Policyのボタンを押します。

Get started quicklyを選択します。その後にスクリーンショットと同じ操作をすると、アプリにデータを表示することを許可することができます。



以下の設定をすると、アプリにデータを表示するのを許可することができます。

auth.id() user_id::uuid

データの追加を許可する

次は、データの追加を許可する設定をしましょう。



編集を許可する設定をする

編集の設定をするときは、deleteの箇所を修正して行います。


削除を許可する設定をする

deleteと書かれている一番下の項目を選択して、ルールの設定をする。


これでローレベルセキュリティーの設定は完了です。お疲れ様でした。