MySQLに行レベルセキュリティってやつ無いんですか?

8
そーだい@初代ALF @soudai1025

MySQLになんで行レベルセキュリティってやつ無いんですか?代替のソリューションでも良いんだけど...

2020-11-02 18:18:23
こば -Koba as a DB engineer- @tzkb

@soudai1025 OracleでもPostgreSQLでも使ったことないんですけど、結構必要ですかね。

2020-11-02 18:21:26
そーだい@初代ALF @soudai1025

@tzkb マルチテナントをね、安全にね、設計したいんですよ

2020-11-02 18:24:29
こば -Koba as a DB engineer- @tzkb

@soudai1025 なるほど。MySQLならではのノウハウがありそうな感じですね。

2020-11-02 18:35:42
yoku0825 @yoku0825

@soudai1025 1テーブル1行…さすがそーだいさんスケールが壮大()

2020-11-02 18:34:00
yoku0825 @yoku0825

@soudai1025 マジメな代替策を考えると、「アクセスして良い行がだけのビュー」をSQL SECURITY DEFINERで作ってそれにSELECT権限を与え、ベーステーブルからはSELECT権限を剥奪したりします

2020-11-02 18:36:09
そーだい@初代ALF @soudai1025

@yoku0825 Viewって作り直すとき(alterでベースにtableが増えた後のリフレッシュ)の時って共有ロックですよね?(ベース、View共に) 単純なViewで主キーで更新を常にすればたしかにそれでも良い気がしてきたが…。

2020-11-02 18:39:41
そーだい@初代ALF @soudai1025

@yoku0825 あーでも更新、Viewで見えないidを指定してもUPDATEとかできるんですかね?(できそう

2020-11-02 18:40:50
yoku0825 @yoku0825

@soudai1025 なんとVIEWには昔からWITH CHECK OPTIONってのがあって、これはちゃんと仕事します… dev.mysql.com/doc/refman/5.6…

2020-11-02 18:53:21
そーだい@初代ALF @soudai1025

@yoku0825 > 更新可能なビューに対して WITH CHECK OPTION 句を指定すると、select_statement 内の WHERE 句が true である行を除く行への挿入または更新を回避できます。 試してみるっ!!!

2020-11-02 19:00:24