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

生成AI×マルチテナントSaaSな新規事業を立ち上げる上でテックリードとして気を使った点の紹介

lunastera
October 24, 2024

 生成AI×マルチテナントSaaSな新規事業を立ち上げる上でテックリードとして気を使った点の紹介

toittaは生成AIを活用した事業+マルチテナントSaaSという、データの取り扱いが難しく、事業立ち上げ時点では社内でもそこまで知見が多くなくチャレンジ要素の強いプロダクトでした。このtoittaをリリースするまでの過程でテックリードとして特に注意した点や苦労した点などをお話させていただきます。

lunastera

October 24, 2024
Tweet

More Decks by lunastera

Other Decks in Technology

Transcript

  1. 生成AI関連 • 処理フローの公式ドキュメント等を確認して学習され ない保証を得る ◦ Data, privacy, and security for

    Azure OpenAI Service - Azure AI services | Microsoft Learn • あるいは我々が遵守しなければならないことの確認等 ◦ Code of Conduct for Microsoft Generative AI Services | Microsoft Learn 10
  2. Row Level Security(RLS)の例 ALTER TABLE tenant ENABLE ROW LEVEL SECURITY;

    CREATE POLICY tenant_isolation ON tenant USING ("id" = current_setting('tenant_id', TRUE)); 14
  3. Row Level Security(RLS)の例 ALTER TABLE tenant ENABLE ROW LEVEL SECURITY;

    CREATE POLICY tenant_isolation ON tenant USING ("id" = current_setting('tenant_id', TRUE)); 15 1行目でRow Level Securityを使うことを宣言
  4. Row Level Security(RLS)の例 ALTER TABLE tenant ENABLE ROW LEVEL SECURITY;

    CREATE POLICY tenant_isolation ON tenant USING ("id" = current_setting('tenant_id', TRUE)); 16 2行目でセキュリティポリシーを設定。 set_config によって ’tenant_id’ を設定し、 それが tenant.id カラムと一致しなければ操作できない (SELECT, INSERT, UPDATE, DELETE)
  5. Row Level Security(RLS)の例 CREATE POLICY tenant_isolation ON users USING (users.id

    IN ( SELECT tm.user_id FROM tenant_membership AS tm WHERE tm.tenant_id = current_setting('tenant_id', TRUE)::TEXT )); 18
  6. Row Level Security(RLS)の例 CREATE POLICY tenant_isolation ON users USING (users.id

    IN ( SELECT tm.user_id FROM tenant_membership AS tm WHERE tm.tenant_id = current_setting('tenant_id', TRUE)::TEXT )); 19 tenant_membership の tenant_id カラムと set_config された ‘tenant_id’ が一致するレコードの user_id を引く
  7. Row Level Security(RLS)の例 CREATE POLICY tenant_isolation ON users USING (users.id

    IN ( SELECT tm.user_id FROM tenant_membership AS tm WHERE tm.tenant_id = current_setting('tenant_id', TRUE)::TEXT )); 20 引いてきた user_id と一致する users レコードだけが引ける