Supabase の storage RLS 設定

Supabase の storage に関する情報は storage.objects テーブルに集約されており、ここに RLS を設定することで、アクセス制限をかけることができる。

問題は、storage スキームは superuser の所有になっていて、postgres ユーザからは RLS が設定できないことである。

仕方がないので、storage スキームのみ、supabase の storage ⇨ policies で RLS を設定する。

例えば、作成ユーザと batch で DB ログインした場合のみアクセス許可する場合は

CURRENT_USER = 'batch'
OR
owner_id IN (SELECT id FROM user WHERE auth.uid() = id)

とする。設定が SELECT/UPDATE, INSERT/UPDATE 用が分かれていることに注意する。

DB 設定が development, preview, production に分かれている場合はそれぞれに設定が必要なので面倒だが、この操作は自動化できないようだ。最初の1回のみ設定すれば終わりなので、良しとする。

投稿者について
みのしす

小さいときは科学者になろうとしたのに、その時にたまたま身に着けたプログラミングで未だに飯を食っているしがないおじさんです。(年齢的にはもうすぐおじいさん)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です