はじめに
こんにちは。株式会社Flatt Securityの @toyojuni です。
突然ですが、弊社Flatt Securityは「開発者に寄り添ったセキュリティ」を標榜しています。Webアプリケーションなどに脆弱性がないか調査する 「セキュリティ診断」 においても、セキュアコーディング学習プラットフォーム 「KENRO」 においても、いかに開発者フレンドリーなサービスを提供できるかという点を大事にしています。
そんな弊社はお客様からさまざまな開発におけるセキュリティのアドバイスを求められることも多いのですが、その中で「開発に役に立つセキュリティ」という切り口では、なかなかまとまっているリファレンス集がないという課題に気付かされました。
そこで、社内でアンケートを実施して「開発者にオススメのセキュリティ情報が得られる書籍 or Webサイト」をセキュリティエンジニアに聞いてみました。セキュリティエンジニアでありながら開発経験も豊富なメンバーが多く、また各自の得意分野も異なるのでなかなか独自性の高い情報が集まったのではないかと思います。
ユースケースごとにまとめましたので、是非日本中の開発現場で役立てて貰えれば幸いです。
また、Flatt Securityはブログ発信に力を入れています。昨日公開した記事はこちらです。 是非、あわせてご覧ください。
- はじめに
- 基礎から体系的に学習する
- SOP(Same-Origin Policy), CORS(Cross-Origin Resource Sharing) を理解する
- ハンズオンを通して学習する
- OAuth, OpenID Connect, SAMLをセキュアに実装する
- 技術スタックごとの有益なコンテンツを見つける
- 暗号技術を活用するための基礎知識を学ぶ
- 終わりに
基礎から体系的に学習する
多くの人にとってセキュリティは「何から始めたらいいかわからない」ものであり、そういった人々の助けになるのが「間違いのない第一歩が踏み出せる」基礎が体系的にまとめられた書籍だと思います。
そんなニーズに応える書籍を2冊紹介します。
体系的に学ぶ 安全なWebアプリケーションの作り方
言わずと知れた、通称「徳丸本」です。ここまでのボリュームで体系的に知識がまとまった書籍は他にないのではないでしょうか。入門書としても、困った時のリファレンスとしても活用可能です。
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理と対策の実践 | 徳丸 浩 | コンピュータ・IT | Kindleストア | Amazonwww.amazon.co.jp
あわせて、著者の徳丸さんのブログもオススメとの声も挙がっていました。
Webブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理する
弊社CTO米内の著書です。販売ページ の説明に
攻撃者とWebブラウザ開発者たちとのせめぎ合いの歴史から、Webセキュリティについての理解を深める一冊です。
とある通り、ブラウザのセキュリティ機構や脆弱性の原理に関して時系列のストーリーを追うことができるので、「なぜそれが必要なのか/発生するのか」という根本からしっかりと理解できます。
Webブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理する
マスタリングTCP/IP 情報セキュリティ編
上記の2冊は主にアプリケーションの実装を対象にしていますが、こちらはネットワーク・セキュリティについて、初心者向けに暗号技術やPKIなどといった種々の技術や概念を解説している一冊です。「セキュリティの勉強をしてみたいけど、どんなことからやればいいかわからない」と言うような方はまず通読してみるのをおすすめします。
SOP(Same-Origin Policy), CORS(Cross-Origin Resource Sharing) を理解する
SOPとCORSはWebセキュリティを考える上で最も基礎的で、かつ大事な概念の一つです。これらを理解する上でオススメのコンテンツとして2つのWebサイトが挙がりました。
なお個人的には、Webブラウザのセキュリティ機構とそれが果たす役割からわかりやすいストーリーで解説してくれている上述の『Webブラウザセキュリティ』も非常にオススメです。
MDN
MDNのドキュメントには皆さん様々な場面でお世話になっていると思いますが、MDNのCORSに関するページは弊社エンジニアとしても「これだけ読めばいい」と言わしめるほど非常にオススメとのこと。
簡単にSOP周辺を理解するページ
@kinugawamasato さんが「セキュリティ・キャンプ全国大会2015」の事前学習用に作成したコンテンツです。タイトルの通りSOPを理解するためのコンテンツであり、簡単なハンズオンを行いながらスムーズに読み進めていくことができます。
※セキュリティ・キャンプとは、情報処理推進機構(IPA)等が主催する学生を対象とした次代を担う情報セキュリティ人材育成事業です。
また、著者の @kinugawamasato さんのブログもオススメとの声も上がっていました。
ハンズオンを通して学習する
往々にして開発者が身につけなければならない知識は学習ハードルが高く、文章を読むだけでは理解が難しかったり、そもそも学習のモチベーションが湧かなかったりすることもありますよね。
そんな時、手を動かしながら学べるコンテンツは心強い味方になることでしょう。オススメとしてあげられたいくつかのコンテンツを紹介します。
Web Security Academy
Web Security Academyは世界的に有名なセキュリティ診断ツール「Burp Suite」を開発・提供するPortSwigger社が提供する学習コンテンツです。
全編英語ですが、Labと呼ばれるデモ環境でハンズオンを行いながら学習を進めることができます。
KENRO(ケンロー)
弊社Flatt Securityが提供する開発者向けのセキュリティ学習プラットフォームです。昨年4月の正式リリース以来、ベンチャーからエンタープライズ企業まで様々な開発現場でご導入いただいております。
最大の特徴は「堅牢化演習」というソースコード修正演習 + 自動採点の機能を備えていることです。受講者は脆弱なソースコードをダウンロードし、それを修正します。修正後に再度アップロードすると、KENRO独自のジャッジシステムが「脆弱性が修正されているか」「正常系が機能しているか」をチェックして自動で判定結果を返すようになっています。
無償・期間無制限のトライアルもあるので、興味を持った方は是非体験してみてください。 ※2022年3月現在、導入は法人でのみ可能です。
その他
これらはあくまで開発者向けとしてカウントしていませんが、セキュリティ技術を専門的に高めたい、もしくはセキュリティ技術を競うCTF(Capture The Flag)に興味があるという方はトライしてみてもいいかもしれません。
Hack The Box
picoCTF
OAuth, OpenID Connect, SAMLをセキュアに実装する
現代のプロダクト開発には不可欠とも言えるOAuth, OpenID Connect, SAMLの仕組みを理解し、セキュアに実装するためのオススメ書籍を3つ紹介します。
OAuth徹底入門
今日では至るところで使われているOAuth。なんとなくは分かったつもりでいるけど、いつもライブラリに頼っていてその仕組みはよく知らないという人におすすめです。本書ではOAuthの概念や仕組みについて、実際にローカルで動作するコードをもとにしてゼロから理解していくことが可能です。おかたい仕様書を黙々と読むのが嫌いという人でも、手を動かして実際にコーディングしながら読みすすめることで、自分で実装する際に注意するべきことを体感していくことができると思います。
OAuth徹底入門 セキュアな認可システムを適用するための原則と実践
OAuth、OAuth認証、OpenID Connectの違いを整理して理解できる本
OAuth, OIDC, OAuth認証など頭がこんがらがりそうなものをフロー図を交えてわかりやすく書かれています。実装する時には読んでおきたい本です。
SAML入門
Service ProviderとしてSAML認証を実装することになった時に欲しい知識が手に入ります。
SAMLはエンタープライズ向けのアプリケーションに多く使われるSSOですが、OAuth/OIDCに比べて日本語の資料が少ない状況です。
数少ないSAMLの仕組みや実装上の注意まで体系的に学べる良書だと思います。イラストとデザインがとても可愛いです。
技術スタックごとの有益なコンテンツを見つける
以下では技術スタックごとにオススメとして挙げられたドキュメントをまとめていきます。
公式ドキュメント
やや出落ち感がありますが、結局どこまで行っても一次情報にあたることを怠らないというのは大事なスタンスであり、また一種のスキルと言えると思います。
今回アンケートを実施しても「やはり公式ドキュメントでしょ」という声は複数上がりました。以下の公式ドキュメントは特にオススメとして名前が挙がりましたので、これらのフレームワーク等を利用しているがまだ読んでいないという方は、ぜひこの機会に読んでみるのはいかがでしょうか。(もちろん、ここに名前が挙がっていないからと言って非推奨なドキュメントというわけではありません。)
Django
Security in Django | Django documentation | Djangodocs.djangoproject.com
Ruby on Rails
Rails セキュリティガイド - Railsガイドrailsguides.jp
Vue.js
Electron
セキュリティ | Electronwww.electronjs.org
Cordova
Security Guide - Apache Cordovacordova.apache.org
Practical Cloud Security
クラウドの設定不備などが起因となるインシデントが散見される昨今、クラウドを利用するものとしてどのようなセキュリティ対策を行うべきか悩むことも多くなってきたと思います。そのような環境下でクラウドセキュリティの概念について体系的に学べる良い書籍だと思います。
AWSの薄い本 IAMのマニアックな話
AWS IAMなどの権限管理は少し複雑でとっつきにくい領域ではありますが、この書籍は分かりやすくIAMのポリシーなどについて書かれています。AWS の入門書を読み終わって、さらに一歩先に行きたい時にオススメです。
SPAセキュリティ入門〜PHP Conference Japan 2021
先ほど書籍を紹介した徳丸さんのスライド資料です。SPAの基礎からセキュリティ観点までを体系的に説明しています。SPAを構築する際に是非読んでおきたいスライドです。
www.slideshare.net
セキュリティ視点からのJWT入門
JWTを利用する際のセキュリティ観点と対策が網羅的にまとまっています。
最近Webアプリケーション開発におけるJWTの採用は増えており、実際に弊社がセキュリティ診断としてそういった観点を診断することも増えています。
OWASP MASVS
Webアプリケーションのセキュリティ基準としてOWASP(Open Web Application Security Project)が発行しているOWASP ASVSが有名ですが、OWASP MASVSはそのモバイルネイティブアプリケーション版です。
下記リンクより日本語翻訳版を読むことができます。
Android Security 安全なアプリケーションを作成するために
こちらもモバイルネイティブアプリケーションのセキュリティが学べる本です。発行年は古いものの、必要な知識が一通り学べると評判です。
Android Security 安全なアプリケーションを作成するために タオソフトウェア株式会社
実践Firestore
Firestoreの使い方について幅広く解説されている本です。内容の中心はセキュリティではありませんが、Firestore の使い方が述べられている中でセキュアに使うためのポイントにも言及しています。セキュリティを意識しつつFirestoreについて学びたい際に有用な本です。
実践Firestore (技術の泉シリーズ(NextPublishing)) 福田 雄貴
また、Firestoreのセキュリティルールのセキュアな記述に関しては弊社のブログも是非ご覧ください。
暗号技術を活用するための基礎知識を学ぶ
アプリケーション開発者が自ら暗号技術を開発するということは基本的にないと思いますが、それを正しく活用するというのはアプリケーションを開発し、そのユーザーや情報資産を守る上で欠かせないことです。
暗号技術の基礎を学ぶにあたってオススメのコンテンツが2つ挙げられました。
暗号技術入門 第3版 秘密の国のアリス
暗号技術の入門書として初心者向けのわかりやすい解説に定評がある書籍です。
Security and Cryptography - The Missing Semester of Your CS Education
The Missing Semester of Your CS Educationというのはマサチューセッツ工科大学で行われた講義であり、その内容はWeb上で無償公開されています。
全11回で構成されていますが、そのうちの9回目のテーマが "Security and Cryptography" となっています。この講義のテーマが「通常の講義では学ばない(Missing)コンピュータ操作ツールへの習熟」なので、やはりこの回も暗号技術の根本を学ぶというよりも、扱うにあたって必要な知識を身につけることが目的となっています。
有志による日本語翻訳版が存在しているのも嬉しいですね。
終わりに
いかがだったでしょうか。是非様々な開発現場でリファレンスとして活用いただければ幸いです。
本稿の中でもいくつか弊社のコンテンツを紹介しましたが、今後とも開発者向けにセキュリティの情報発信を行っていきますので、最新情報を見逃さないよう是非公式Twitterのフォローをぜひお願いします!
最後に、弊社Flatt Securityのセキュリティ診断サービスの紹介です。
Flatt Securityではセキュリティエンジニアが手動で検査を行うセキュリティ診断サービスを提供しています。Webアプリケーションやスマートフォンアプリケーションだけでなく、AWS・GCP・Azure等パブリッククラウド、FirebaseのようなmBaaSをセキュアに扱えているかも専門的な観点で診断することが可能です。
診断プランは柔軟に様々な形が組めますが、自動シミュレータでプロダクトごとにぴったりのプランを知ることができます。是非ご利用ください。
セキュリティ診断のサービス詳細は下記バナーよりご覧ください。
ここまでお読みいただきありがとうございました。