Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go×RLSで複数テナントのデータを安全に扱う/secure-data-access-with-go-rls-in-multi-tenant-environment

Sh0He1666
October 02, 2023

 Go×RLSで複数テナントのデータを安全に扱う/secure-data-access-with-go-rls-in-multi-tenant-environment

Sh0He1666

October 02, 2023
Tweet

Other Decks in Programming

Transcript

  1. データベース の Row-Level Security(RLS)機能 データの読み込み時にテーブルの行レベルでアクセスを制御するデータベースの機能 テナントID ID NAME tenant01 1000

    Bob tenant02 1000 Alice tenant03 1000 Taro tenant03 1000 Hanako SELECT ID, NAME FROM SOME_TABLE WHERE ID = ‘1000’ 「tenant02」が接続
  2. まとめ • Context経由でsql.Txを渡すことで、DBに依存しない形でユースケースで トランザクションの定義が可能に • 参考:https://qiita.com/arkuchy/items/659a11767912c2ec266d • データベースセッションの環境変数にセットしたテナントIDでアクセス権 を制御 •

    テナントのロールを追加する必要がなく、基本的にはテナント追加時の作業が不要 • sql.DBで管理するコネクションがスレッドセーフ • (感想)Goはマイクロサービス向きの言語であることを実感