堅牢なアプリケーション開発を目指して / First steps to build a robust and secure application

堅牢なアプリケーション開発を目指して / First steps to build a robust and secure application

クラウドサインの開発当初に、堅牢性やセキュリティを保つためどのように進めてったかについてお話してます。

B7b632270bbebb6466f0ad9f2d19710c?s=128

Koichi Wada

July 18, 2019
Tweet

Transcript

  1. 堅牢なアプリケーション開発を目指して B2B SaaS Tech vol.2 避けては通れぬセキュリティ 和田浩一 wada@bengo4.com 2019-07-31

  2. 登壇者紹介 和田浩一 弁護士ドットコム株式会社 クラウドサインエンジニアチーム Tech Lead兼ラボコーディネーター wada@bengo4.com Twitter: @Koichi

  3. カプラ クラウドサイン公式キャラクター オスの若いヤギ 白ヤギとして生まれたものの、 書類を食べすぎたことが原因で 体が黒くなってしまいました。 おまけ

  4. クラウドサインとは

  5. クラウドで契約を簡単に


  6. None
  7. 開発開始にあたって

  8. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 8 当初の要件 契約書を預かるサービスのため、セキュリティを保ち、堅牢

    であること 受信側はアカウントを作らずとも使えるように 電子署名を使用する 開始にあたってMVPをなるはやで
  9. 開発において気をつけたこと

  10. バグを少なく クラウドサイン公式キャラクター:カプラ

  11. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 11 設計: 状態遷移によるデータ管理

  12. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 12 使用言語: Goの採用

    ・静的型付け/コンパイル ➞ Syntax Error なし ・GC ➞ メモリリークが起きにくい ・CGO ➞ 外部C/C++の呼び出しが比較的簡単 ・gofmt ➞ コーディングスタイルがそろう
  13. 安心して使えるように クラウドサイン公式キャラクター:カプラ

  14. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 14 設計: 安定運用できるように

    ・こまめにサーバーにデータを保存して、できるだけブラウ ザ側にデータを残さない ・万一アプリが落ちても再起動で、前のところから継続でき る ➞ プロセス監視により落ちたら自動起動 ➞ ブラウザ側はリロードにより処理を継続できる
  15. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 15 データ保全: AWS

    ・RDS ・S3 ・自動バックアップ ・MultiAZ (後日)
  16. 漏洩を防ぐ クラウドサイン公式キャラクター:カプラ

  17. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 17 設計: 不要な情報が外に出にくくする

    ・IDにUUID V4 ➞ 推測できないURLを構成する ・受信側には期限付きの推測できないURLを発行する ・ステータスコードは、400/404/500 だけ返す ・APIの戻りデータも極力少なく ・Passwordはもちろんハッシュ化する(bcrypt)
  18. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 18 ネットワーク対策/不正侵入対策 ・HTTPS

    ・VPC ・WAF ・OSSEC
  19. 脆弱性を作り込まない クラウドサイン公式キャラクター:カプラ

  20. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 20 Escapeを忘れない HTMLはGoのhtml/templateで大丈夫

    • <!-- --> も消してくれちゃう jQuery.html() を使わない • jQuery.text() • 今後はVue.js を使うことで直接のDOM操作はしない SQLを極力書かない • できるだけORMでやる • どうしようもないときは、PreparedStatementを使う
  21. Copyright (c) 2019 Bengo4.com,Inc. All Rights Reserved 21 自分たちが知らない脆弱性もあるはず ・フレームワークの使用:

    Revel セキュリティ上必要なHTTPヘッダなど設定済み ・VAddyによる脆弱性診断 ・外部機関による脆弱性診断
  22. 最後に

  23. We are Hiring! クラウドサイン公式キャラクター:カプラ 一緒に世界を変えていく仲間を募集しています!

  24. ご静聴 ありがとうございました クラウドサイン公式キャラクター:カプラ