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

一時URLとKVS #TechLunch

一時URLとKVS #TechLunch

一時URLとKVS
2012/08/01 (水) @ Livesense TechLunch
発表者:福田 慎太郎

Livesense Inc.

April 21, 2014
Tweet

More Decks by Livesense Inc.

Other Decks in Technology

Transcript

  1. 2 Copyright © Livesense Inc. All rights reserved. はじまり •

    ジョブセンス派遣において、セキュリティガイドラインのうち、パ スワード保存とアカウント管理の一部を適用開始
  2. 3 Copyright © Livesense Inc. All rights reserved. はじまり •

    そのうち、パスワード再設定機能については、下のようにルー ルが記述されています • 以下のようなトークンを使用する手順でパスワード再設定機能を 用意すること – パスワードを忘れたユーザーにメールアドレスを入力してもらう – トークンを生成し、トークン付きのパスワード再設定画面へのURLをユー ザーの登録メールアドレスに送付する – ユーザーが指定されたURLへ遷移し、パスワードの再設定を行う – パスワード再設定が行われたトークンは破棄する – パスワード再設定が行われた旨をユーザーの登録メールアドレス宛に通 知する – パスワード再設定が1日経過しても行われなかった場合は、そのトークン も破棄する
  3. 4 Copyright © Livesense Inc. All rights reserved. はじまり •

    「トークン付きのパスワード再設定画面」ってさらっと書いてあ るけども・・・ • トークンの生成方法 • トークンの保持方法 • URLの形式 • 等が書かれていません
  4. 5 Copyright © Livesense Inc. All rights reserved. トークンの生成 •

    そこで、まずどうすれば良いトークンが作れるかを考えました • トークンに求められるのは • 安全な乱数 • 十分な長さ • 安全な乱数を作るために使ったのは • https://github.com/ircmaxell/PHP-PasswordLib • このおじさんが作ってくれたみたいです • https://github.com/ircmaxell • 十分な長さは • とりあえず40に – 参考:googleは247、amazonは162.固定長かは未調査 – 本当に40でいいか心配になってきた
  5. 6 Copyright © Livesense Inc. All rights reserved. トークンの保持方式 •

    memcacheに保存。 • しようと思ったら、うちのサーバー構成↓みたいなので • アクセスするたびに読み込むmemcacheサービスが変わる可 能性がある Web Server memcache apache Web Server memcache apache ロードバランサ
  6. 7 Copyright © Livesense Inc. All rights reserved. トークンの保持方式 •

    しょうがないので、DBにKVS型のテーブル作成して、そこに保 存する key value expired_at
  7. 8 Copyright © Livesense Inc. All rights reserved. URLの形式 •

    http://haken.j-sen.jp/password/reset_{企業ID}_{token}.htm にしました • トークンだけにしなかった理由 – URLを再発行するたびに、以前発行した生きている再設定URLを破棄し たいという要件を満たしたかったため – つまり、KVSに保存する方法が – の形式だと、URLはトークンだけをパラメータで渡せば済むが、古い再設 定URLを削除するには、全表走査して同一企業IDを探す必要が出てきて しまう – ので、keyに企業ID、valueにトークンを格納することにし、新たに再設定 URLが発行されたら、トークンと有効期限を上書きすることにしました key value expired_at トークン 企業ID 日時 key value expired_at 企業ID トークン 日時
  8. 9 Copyright © Livesense Inc. All rights reserved. 今日の結論 •

    canpassとかでredisを入れるという噂を聞いたので、導入事例 をさくっと作って、memcacheに代わるインメモリなKVSが欲し いな
  9. 10 Copyright © Livesense Inc. All rights reserved. 今日の疑問 •

    インメモリKVSっていっぱいあるけど、それぞれ何が違うのか よくわからない • Redis • Oracle Coherence • EADs • Red Hat JBoss Data Grid 6 • VMware vFabric GemFire
  10. 12 Copyright © Livesense Inc. All rights reserved. い ち

    ろ ー い ち ろ ー 内質 容問 をで 膨発 ら表 ま