概要
「セキュア・バイ・デザイン」を(途中から斜め読みで)読了しました。
感想について記述していきます。
感想
セキュリティを設計(デザイン)の観点から向上させる実装方法について記述された本です。 タイトルに「セキュリティ」という名前がついていますが、セキュリティバグ、セキュリティ要件などの脆弱性について詳細に触れられることはないです。 6、7 割がドメイン駆動設計(以下、DDD)の内容で、残りが例外、クラウド、マイクロサービスなどの設計についての内容でした。
自分がこの本によって 2 つの得られたことがあります。 1 つ目は DDD によって得られるメリットについて再定義(再認識?)したこと、2 つ目は設計(DDD に限らず)でセキュリティの観点から意識するべき知識を得られたことです。
この本の前半では、開発者はセキュリティよりも設計の方が強い関心があるため、より良い設計によって意識せずにセキュリティを向上させたり、セキュリティの専門家と同じ知識を持つ必要がなくなったり、脆弱性を把握しなくてよくなったりすることから、設計によるセキュリティ向上方法について紹介されます。 実装テクニックとして、不変生(immutability)、速やかな失敗(fail-fast)、妥当性確認(validation)が紹介され、DDD による、安全性の向上方法として、ドメイン・プリミティブ(不変で完結した概念を持つ)、Read-Once オブジェクト、ドメイン・プリミティブの応用が紹介されています。 どれも、設計の観点による実装方法であり 戦略的、戦術的 の両方の観点から DDD の意識を高めることができました。
本書の後半には、例外、マイクロサービス、クラウドの観点からセキュリティを向上させる方法について記述されています。 例外についてはビジネス例外と技術的例外を意識して実装したり、マイクロサービスは境界づけられたコンテキストを意識して分割するべきでコンテキストを超えるやりとりには気をづけること、クラウドの考え方ではエンダープライズ・セキュリティの3つの「R」(Rotate、Repave、Repair)について、解説がされています。 どれもセキュリティと関連させずに考えていたので、セキュリティについて新しい観点を得ることができました。
本書ほ日本語訳も文章構成も非常に優れているため読みやすかったです。 章ごとに前提知識(DDD、Twelve-factor、など)についてのわかりやすい説明があります。 そのため予習は不要な内容です。 しかし、 DDD と一部の基本的な脆弱性について知った方がいいと思います。 それらを知らないと、セキュリティに観点から何が拡張されたかわかりづらいからです。
まとめると、セキュリティの観点から設計についてまとめられた良書でした。 セキュリティの専門知識は不要で、セキュリティ向上の方法がまとめらているので、DDD を意識した実装の際に、実践しようと思いました。 他にも戦略的にも戦術的にも DDD のやることやメリットなどを再認識できたので DDD の理解を深めることができたと思います。 他の設計の箇所は理解が浅いので、今後読み返したいと思います。