ミクシィのアプリケーションセキュリティの代表的な取り組みについて
こんにちは、opera 大好き 松岡 剛志 です。今日は部長職ではなくて、セキュリティチームリーダー立場でブログを書いています。
今回は弊社の様々なアプリケーションセキュリティの取り組みのうち、以下の4つのコンテンツについて書きます。この内容はほとんどが弊社のセキュリティイベントである Scrap Challenge で使われたスライドの焼き直しです。
- トレーニング
- セキュリティレビュー
- コードレビュー
- セキュリティチェック
トレーニング
現在ミクシィでは新卒エンジニアに対して1カ月程度の缶詰の教育を行っています。そのコンセプトは以下です。
- 関係各所、チーム、チーム横断でのタスクに関して 迷惑をかけずに自分で判断できる/あるいは正しく判断を仰げる状態までの成長。
- 現状の技術的問題点や課題を把握し、改善策や改善のためのプランニングができる。
- 各項目への知識体系の羅針盤を提供して、自学自習によってより高度な領域まで発展することができる。
このため面白い特徴として「ミクシィでしか使えないこと」の教育は最小限にしています。この辺りはいずれtakaiやyuzuemonが書いてくれるでしょう。
この研修の中に以下のセキュリティのメニューがあります。
どれも可能な限り座学だけではなく、手を動かすことを意識しています。
セキュリティレビュー
私達は自分たちの企画が安全なはずないと考えています。
ミクシィでは社内で規定された一定の情報レベル以上を取り扱う時や担当者が鼻を利かせたとき、社内のセキュリティチームにレビューを行うというルールがあります。我々のサービスはお客様の大切な情報をお預かりしているので、かなり気をつけているところです。しかしながら多くの問題を起こしていることを恥ずかしくも思っております。
セキュリティレビューはマイクロソフト様のSTRIDEの視点で見ることが多いです。違う視点としては以下のような視点で見ることが多いです。
- 処理するところ、保持するところの確認。
- 通信経路の確認
- プライバシーは守られているか?
- 入出力情報は必要最低限か?
- アビューズについて考えたか?
- 3rd partyは絡んでいるのか?
- etc
セキュリティレビューはJIRA(issue tracking systemの一種)で管理されています。ミクシィのその他のレビューもすべてJIRAで管理されています。これにより案件の漏れや期限の遅れを減らし、一つ一つの判断を判例として残しています。 このセキュリティレビューの重要な点として、必ずセキュリティ担当者が2名以上でチェックして全員がokしないと進めません。私達は自分たち自身(セキュリティ担当者)も信用していないのです。
コードレビュー
私達はミクシィのエンジニアの作るコードを信用しません。ゆえにミクシィのコードはすべてレビューを受けないと本番に反映されることが無いようにしています。悪意あるコードが混入するリスクのほかにコードの品質、統一感も重視します。 このレビューには様々なチェックポイントがあるのですが、セキュリティ面ではたとえば以下です。
- CSRF対策のためのトークンを(付与|検証)しているか?
- SQL文生成はプレースホルダを利用しているか?
- 変数はエスケープして画面出力を行っているか?
- 不要なパラメータは受け取らないか/出力しないか?
これはチェックしてないの?という指摘があると思います。それらはすでにフレームワークなどで対応して、開発者がいちいち気を配らなくてよいようにしています。近い将来3番目の要素はテンプレートエンジンの変更に伴い、コードレビューからは無くなるでしょう。
セキュリティチェック
私達はこの枠組みを信用しません。このためミクシィでは一定以上の条件を超えるものについて、たんぽぽのエンジニアや外部のセキュリティ会社による監査を受けています。 その条件とは以下です。
- 課金やポイントに関するもの
- 第三者と情報をやり取りするもの
- 新規、大規模な変更
ものつくりの都合上、試験できる日程は良く変更になります。付き合ってくださっているセキュリティ会社様に日々感謝です。
その他
今回はあげませんでしたが、ほかにも様々な取り組みをミクシィでは行っています。たとえば運用よりのセキュリティとして、開発と運用の分離や情報レベルの高いものはセキュアネットワークに置くなどです。
まとめ
ミクシィではお客様の安全を守る一つの取り組みとして、このようなことを行っております。いたらぬことも多いですが、一つ一つ問題を解決し、皆様が安心して楽しむことのできるサイトを運営したいと考えています。
ここまで読んでいただきありがとうございました。