2020-07-21 MySQLのコードを読みはじめたのとtcprivを使ってUIDを認証に使う場合のシステム設計

  • tcprivを使った認証をMySQLに実装して評価するためにコード読みはじめた
    • TCP_SAVE_SYNとかはlisten()とかの前にfdに対してやらないといけないのでそういうフックポイントがあるか
    • accept()後のfdに対してTCP_SAVED_SYNでパケットを取り出す必要があるのでそういうフックポイントがあるか
    • ID/PASS認証時に別の条件を認証に加えるフックポイントはあるか -> 普通ありそう
      • auto_socketあたりを読んでみよう
  • というあたりをみていくのだけど、fd操作できるフックまであるかなぁというところがポイントでそこが少しむずかしいようであれば直接コードに手をいれる
    • とりあえず今回は評価をしたいだけなので、細かい実装はあとからやる
  • apt sourceコマンド初めてつかったかも...!

  • 今日は九大とのMTGがあったのでtcprivの話をした
    • 研究の概要や設計の話はすでにしていた
    • 特に実装面の工夫など
    • TCP_SAVE_SYNあたりの情報は先生たちも大喜び(楽になった的な意味で)
    • コードベースでもお話した

  • 評価についてはやっぱり正しいuidをサーバ側で別の管理DBから取り出すときにどのようにやるか、その時のオーバヘッドはどうか、みたいなところを検証するとよいかも
    • 例えばSTNSで管理されたuser/uidをMySQLの認証プラグイン側でとるとか
      • とはいえ事前にしかるべきid/passに対応したuidをどう取得してどう保存しておくかとか
      • userテーブルにもう一個カラム追加できたりするのかな
      • 動的にというよりは静的にやっておくので良さそう?
      • でもそういうことをし始めると、システムのオーバーヘッドの話に行き過ぎて、提案自体の評価と遠くなるし、とはいえ結局リアルシステムに導入するとなってそれが妥当な構成であるならばそれで評価すべき
    • そもそもマルチテナントなので、データベース名がかぶらないように命名しているとすると、データベース名を例えばhogehoge-uidとかfugafuga-usernameとかにしているなら、それをパースしてuidを取得してid/passと比較するのが簡単だしシンプルそう?
      • これそもそもわりとあり得る構成だし自分もやっていたから、これはそこそこ妥当な構成と言えそう
    • それでええやん!!!!!!!!!!

  • 7/24からのポケモン大会の準備をそろそろしていくぞ