セキュア・バイ・デザイン(セキュア バイ デザイン)
安全なソフトウェア設計
- 著者:
- Dan Bergh Johnsson/Daniel Deogun/Daniel Sawano/須田智之
- 出版社:
- マイナビ出版
- 出版日:
- 2021年09月24日頃
- ISBN:
- 9784839975999
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
プログラミングの質を高めることで、セキュリティを向上させることができるー 著者らの考えを様々な形で試し検証を行い、本書「セキュア・バイ・デザイン (Secure by Design) ・安全なソフトウェア設計」にまとめました。
本書は Eric Evans 氏のドメイン駆動設計 (Domain-Driven Design: DDD) に関する考えの影響を大きく受けています。設計の中心にセキュリティを取り込む考え、ドメイン駆動セキュリティ (Domain-Driven Security) という名のコンセプトを生み出しこの考えを実際に開発に導入し、発展させてきました。
対象読者はソフトウェア開発者 (C 言語、 Java や C#など基本的なプログラミング技術を習得済みの方) ですが、特定の言語やフレームワークに依存しすぎないよう、主にセキュリティにおいて重要だと思うものだけを含めるようにしています。全体的なプログラミング・スキルを向上したかったり、既存のプログラムをさらに「安全」なものにしなくてはならなかったりするのであれば、本書はまさにあなたにとっての一冊となることでしょう。
第 1 部: 導入編
セキュア・バイ・デザインについて実例と共に見ていきます。セキュリティと開発についてどのように考え、それらが組み合わさるのか。あわせてどこで問題が起こりやすいのかと何ができるのかを分析します。
第 2 部: 基礎編
ソフトウェアの作成におけるセキュア・バイ・デザインの基盤を構築する設計の原則、考え、コンセプトについて学んでいきます。
第 3 部: 応用編
多くの開発者は「セキュア・バイ・デザイン」をレガシー・コードに適用することが難しいと感じる傾向があります。レガシー・コードの改善、モノリシック・アーキテクチャでよく起こる問題、マイクロサービス・アーキテクチャについて見ていきます。
第 1 部: 導入編
第 1 章: なぜ、設計がセキュリティにおいて重要なのか?
第 2 章: ちょっと休憩: 『ハムレット』の悲劇
第 2 部: 基礎編
第 3 章: ドメイン駆動設計の中核を成すコンセプト
第 4 章: 安全性を確立する実装テクニック
第 5 章: ドメイン・プリミティブ (domain primitive)
第 6 章: 状態の完全性 (integrity) の保証
第 7 章: 状態の複雑さの軽減
第 8 章: セキュリティを意識したデリバリ・パイプライン
第 9 章: 安全性を考えた処理失敗時の対策
第 10 章: クラウド的考え方によるメリット
第 11 章: ちょっと休憩: 保険料の支払いなしに成立してしまった保険契約
第 3 部: 応用編
第 12 章: レガシー・コードへの適用
第 13 章: マイクロサービスでの指針
第 14 章: 最後に:セキュリティを忘れるべからず!
技書の森解説
セキュリティ対策というと、脆弱性スキャンや WAF のようなプロダクトの外側に張る防御層が思い浮かびがちです。本書はその発想を転換し、ドメイン駆動設計 (DDD) の手法を使ってコードそのものに安全性を織り込むアプローチを体系化しています。値オブジェクトで入力の正当性を型レベルで保証する、エンティティの不変条件で状態の不整合を構造的に排除するといった具合に、設計判断がそのままセキュリティ対策になる考え方を実例とともに示します。
読み手としては、 DDD の基本的な語彙 (エンティティ、値オブジェクト、集約) をある程度知っていると吸収が速いですが、セキュリティ視点から DDD に入門する読み方も成立します。設計の良し悪しとセキュリティの強度が別々の軸ではなく同一の軸であることを実感できるため、開発者がセキュリティを「自分ごと」として引き受けるきっかけになります。
注意すべき点として、本書はインフラ寄りのセキュリティ (ネットワーク、暗号、認証基盤の構築) はスコープ外です。あくまでアプリケーション設計の内側で安全性を高めるための本であり、プラットフォーム防御と補い合う関係にあります。セキュリティ専門書とソフトウェア設計書の両方を手に取る人にとって、その交差点をはっきり言語化してくれる一冊です。
言及 Qiita 記事 (9 件)
「防御的プログラミング」を学ぶ
♡ 19プログラミング, 設計ドメイン・プリミティブ / Domain Primitive を使って分かりやすく安全なプログラムを書こう!
♡ 14DDD, 値オブジェクト, ドメイン・プリミティブ, ドメインプリミティブセキュリティから始まるドメイン駆動設計
♡ 6DDD, ドメイン駆動設計「開発を加速するためのテスト講座」から得た学び
♡ 2テスト, アジャイル, QA2025/5/15主にITとかセキュリティの記事
♡ 0Security, ニュース2025/2/16主にITとかセキュリティの記事
♡ 0Security, ニュースミノ駆動さんのデータ破壊駆動を防ぐ設計のセミナーレポート
♡ 0DDD, #セミナー2024/2/23主にITとかセキュリティの記事
♡ 0Security, ニュースGoでRead-Onceオブジェクトを作ってみた
♡ 0Go
言及 Zenn 記事 (1 件)
この本に興味がある方におすすめ
この本に関連
関連記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。
技術書の中古本・古本の賢い買い方 - 安く手に入れて賢く学ぶ
技術書を中古で買うときの判断基準と注意点を解説します。中古で買っていい本と新品で買うべき本の見分け方、状態チェックのポイントを紹介。
関連用語
ドメイン駆動設計 (DDD)
ビジネスドメインの知識を中心に据え、ドメインエキスパートと開発者が共通言語で協働しながらソフトウェアを設計する手法
DevSecOps
開発・セキュリティ・運用を統合し、セキュリティをパイプラインに組み込むアプローチ
貧血ドメインモデル
ドメインオブジェクトがデータのみを持ち、ビジネスロジックが外部のサービスに散在するアンチパターン
DNS
ドメイン名を IP アドレスに変換するインターネットの名前解決システム
Security
情報やシステムを脅威から守り、機密性・完全性・可用性を維持する取り組み
Route 53
AWS のマネージド DNS サービスで、ドメイン登録、DNS ルーティング、ヘルスチェックを提供する