株式会社Berry
😸

Supabaseでアプリをリリースする前に確認すること

2024/06/12に公開

株式会社Berryの名越です!
我々、Berryは赤ちゃん向けの頭蓋形状矯正ヘルメットを提供する医療機器メーカーです。

Berryでは、ヘルメット治療を効率的に実現させるため、

  • 医療機関と3Dデータのやり取りをしながらヘルメット治療に関する情報管理を行うWebシステム(Vue, vercel)
  • 患者さんが日々の装着時間記録や医療機関での治療情報を確認できるアプリ(flutter)

などのサービスも提供しております。

先日公開したブログの中で、医療機関向けのアプリのバックエンドはSupabaseを利用していることをお伝えしましたが、弊社で提供しているアプリもバックエンド(認証・データベース等)はSupabaseを採用しております。

※Berryのシステムアーキテクチャについて、詳しくはこちらに書いておりますので、もし興味がある方いらっしゃいましたら、ご一読ください。
https://zenn.dev/berry_blog/articles/51bea2441c5f0e

今回は、Supabaseを使って本番で様々なアプリを運用する際の注意などについて、整理してまとめてみます。

Supabaseの公式ドキュメントにて、アプリ公開時のチェックリストを提供してくれています。
今回はそちらの記事を参考にしつつ、実際に運用していて気になった点や注意点を肉付けしながら、Suapabaseを利用してアプリをローンチする際の注意点についてご紹介させていただきます。
https://supabase.com/docs/guides/platform/going-into-prod

①セキュリティー関連の注意点

まずは、セキュリティ面についての注意点をいくつかまとめてみます。

RLSが有効になっていることを確認

SupabaseではPostgreSQLのRLS(Row Level Seculity)によるセキュリティ設定が可能です。
この機能は、データベースの各テーブルに対して、行ごとにSELECT/UPDATE/DELETE/INSERTといった操作を制限できる機能です。特定のユーザーだけSELECT操作させたい場合などに、そのルールを事前に設定しておくことで、簡単にセキュアなデータベースを構築することができます。その設定はテーブルごとに自由に設定可能で、非常に便利な機能になっています。
ただ注意点として、プロジェクト開始時は、RLSがDisableになっており、誰でもデータアクセスできる設定になっていますので、リリース前に有効化(Enable)されているか確認してください。
※詳しくはこちら
https://supabase.com/docs/guides/database/postgres/row-level-security

SSL有効化

セキュリティ強化のため、SSLを使用していないクライアントが接続できないようにすることができます。CLIまたはダッシュボードから設定が可能です。
※詳しくはこちら
https://supabase.com/docs/guides/platform/ssl-enforcement

データベースのネットワーク制限を有効化

データベースにアクセスできるIPアドレスを制限することができます。
Dashboard上で表示が見つからない場合は、Postgresを最新にする必要があります。(※なおPostgresを最新にする場合、1時間程度データベースが止まるようなので注意)
※詳しくはこちら
https://supabase.com/docs/guides/platform/network-restrictions

Githubの2FAを有効化

Githubのアカウントが流出すると、連携されているSupabaseのアカウントも流出する恐れがありますので、2段階認証は必ず設定が必要です。
※詳しくはこちら
https://docs.github.com/ja/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication

Supabaseプロジェクトのアカウント管理

Teamプランからはユーザーごとに権限設定が可能です。例えばTeamプランでは、Administrator, Developer, Owner, Read-onlyの権限付与が可能です。不要なユーザーは招待しない、権限不要はなるべく最低限にするなどして、データ流出のリスクを最小限にできるよう対策することができます。

②運用上の注意点

続いて、運用にあたっての注意点についてです。
現時点(2024年6月現在)での注意点について、以下に書いてみます。

リージョンの設定

商用版のSupabaseの裏側はAWS上でホストされているようです。そのため、プロジェクト設定時にregionの設定が可能になっており、現在は以下のregionで使えるようです。東京(ap-northeast-1)も選択可能です。サービス提供先に合わせて設定が必要です。
ap-northeast-1
ap-northeast-2
ap-south-1
ap-southeast-1
ap-southeast-2
ca-central-1
eu-central-1
eu-west-1
eu-west-2
eu-west-3
sa-east-1
us-east-1
us-west-1
us-west-2
ただ、supabase自体は、オープンソースの Firebase 代替製品という位置付けで、セルフホストなども可能です。
※詳しくはこちら
https://supabase.com/docs/guides/self-hosting

カスタムSMTP設定は忘れずに

Supabaseにもメールプロバイダーの機能がありますが、デフォルトのレートリミットが1時間3通に設定されています。Supabaseで提供されているメールサービスはあくまで開発用的位置付け(1時間3通だと開発用としても厳しい...?)なので、メール送信が絡むサービスを提供する場合は、必ずカスタムSMTPプロバイダーの設定を行う必要があります。SendGrid、AWS SESなどを使って提供する必要があります。
※カスタムSMTPの設定はこちら
https://supabase.com/docs/guides/auth/auth-smtp

その他、レートリミットは以下ページにまとまっていますので、リリース前にチェックして、気になったものは変更しておく必要があります。
https://supabase.com/docs/guides/auth/rate-limits

フリープランに注意

運用上フリープランで問題ないということで、プランをアップグレードをしていない場合、7日間で1回以上クエリが実行されないと、プロジェクト自体が一時停止されてしまいますので注意が必要です。(※数分で復元は可能です)
フリープランでも十分な機能を提供しており、Supabaseすごいです。

スケールアップの設定

Supabaseではホストしているインスタンスをスケールアップすることができます。提供するサービスによっては、初期設定のインスタンスだと不足する場合もありますので、その場合は適宜スケールアップが必要です。
※詳しくはこちら
https://supabase.com/docs/guides/platform/compute-add-ons

また、日々のデータベース使用量は、各プロジェクトのレポート画面から見ることができますので、サービスグロースに合わせてスケールアップさせることができます。
https://supabase.com/docs/guides/platform/exhaust-cpu

バックアップ設定

Pro、Team、Enterpriseプランにすると、毎日データベースのバックアップが可能です。プランによって、その方式(Logical BackupsまたはPhysical Backups)や保管期間が異なります。

Logical Backups: データベースのデータとスキーマをSQL形式でエクスポートする方法
Physical Backups:データベースのファイルシステム全体をバックアップする方法
※詳しくはこちら
https://supabase.com/blog/postgresql-physical-logical-backups

サービス提供にあたってデータベースのバックアップは重要になると思いますので、以下ドキュメントなどを確認されると良いかなと思います。
https://supabase.com/docs/guides/platform/backups

以上、簡単ではありますが、アプリをローンチする際の注意点についてご紹介させていただきました。(2024年6月時点の情報です)

Suapabaseは機能追加の頻度がとても多い!!

Supabaseではローンチウィークなどを開催し、定期的に機能追加が行われるようです。いつも楽しみにしながら、Xを見ています(笑)
https://x.com/supabase
Supabaseでは新しい機能が頻繁に加わる一方、例えばレートリミットが変更され従来の運用だと問題が出るような変更があったりもします。
そのため、Xや公式ドキュメントは定期的にウォッチするようにすると、良いかなと思います。

応募待ってます!まずはカジュアル面談から

最後に、株式会社Berryでは幹部候補エンジニア募集中です!一緒に、このアーキテクチャを更に使い倒したい、発展させたい方、大歓迎です。

医療業界での経験や3Dの知見は問いません。Berryの考え方や製品に少しでも興味が持てた方はお気軽に応募下さい!
https://www.wantedly.com/projects/1594426

株式会社Berry
株式会社Berry

Discussion