セキュア・バイ・デザイン | マイナビブックス

セキュア・バイ・デザイン 安全なソフトウェア設計

  • mixiチェック
  • このエントリーをはてなブックマークに追加

内容紹介

プログラミングの質を高めセキュリティを向上させよう

プログラミングの質を高めることで、セキュリティを向上させることができる― 著者らの考えを様々な形で試し検証を行い、本書「セキュア・バイ・デザイン(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章: 最後に:セキュリティを忘れるべからず!

商品を選択する

フォーマット 価格 備考
書籍 4,686
PDF 4,686 ※ご購入後、「マイページ」からファイルをダウンロードしてください。
※ご購入された電子書籍には、購入者情報、および暗号化したコードが埋め込まれております。
※購入者の個人的な利用目的以外での電子書籍の複製を禁じております。無断で複製・掲載および販売を行った場合、法律により罰せられる可能性もございますので、ご遠慮ください。

電子書籍フォーマットについて

  

備考

Dan Bergh Johnsson氏、Daniel Deogun氏、Daniel Sawano氏の3人は数十年に渡ってセキュリティと開発の分野に従事してきた経験を持つ人たちです。彼らはエンジニアであり、開発においてセキュリティが二の次となりがちなことを理解しています。そこで彼らは設計の質を高めることに意識を向けセキュリティの向上が期待できるシステム開発の習慣をまとめ上げていきました。これらの習慣はエンジニアが日々の作業を行う際に簡単に心掛けられるものになっています。著者らはそれぞれ国際的なスピーカーとしての地位を確立し、質の高い開発やセキュリティが主題となるカンファレンスによく登壇しています。

[翻訳]須田智之(すだともゆき)
10年以上おもにSI企業にシステムエンジニアとして携わり、それ以降はフリーランスに。企業向けのシステム開発のかたわら、個人での開発、および、記事や書籍の執筆や翻訳も行っている。

関連ページ

目次

第1部 導入編
第1章 なぜ、設計がセキュリティにおいて重要なのか?
1.1 セキュリティを機能(feature)ではなく心配事(concern)として捉えること
1.2 設計(design)とは何か?
1.3 セキュリティにおける従来のアプローチとその欠点
1.4 設計(design)による安全性の向上
1.5 文字列、 XML、 そして、 Billion Laughs 攻撃への対応

第2章 ちょっと休憩『: ハムレット』の悲劇
2.1 ビジネス・ルールの観点における完全性(integrity)の問題
2.2 浅いモデリング(shallow modeling)
2.3 深いモデリング(deep modeling)


第2部 基礎編
第3章 ドメイン駆動設計の中核を成すコンセプト
3.1 深い理解を得るためのツールとしてのモデル
3.2 モデルをコード上で表現するための構成要素
3.3 境界づけられたコンテキスト(bounded context)
3.4 異なるコンテキスト間でのやり取り

第4章 安全性を確立する実装テクニック
4.1 不変性(immutability)
4.2 契約(contract)を使った速やかな失敗(fail-fast)
4.3 妥当性確認(validation)

第5章 ドメイン・プリミティブ(domain primitive)
5.1 ドメイン・プリミティブ(domain primitive)と不変条件(invariant)
5.2 Read-Onceオブジェクト(一度しか読み込めないオブジェクト)
5.3 ドメイン・プリミティブによってもたらされるセキュリティ
5.4 汚染解析(taint analysis)

第6章 状態の完全性(integrity)の保証
6.1 エンティティを使った状態の管理
6.2 正しい状態で生成されるエンティティ
6.3 エンティティの完全性(integrity)

第7章 状態の複雑さの軽減
7.1 部分的不変エンティティ(partially immutable entity)
7.2 状態オブジェクト(state object)
7.3 エンティティ・スナップショット(entity snapshot)
7.4 エンティティ・リレー(entity relay)

第8章 セキュリティを意識したデリバリ・パイプライン
8.1 デリバリ・パイプラインの利用
8.2 設計をより安全なものにする単体テスト
8.3 機能トグル(feature toggle)のテスト
8.4 セキュリティに関するテストの作成と自動化
8.5 可用性(availability)のテスト
8.6 設定の妥当性確認(validation)

第9章 安全性を考えた処理失敗時の対策
9.1 処理が失敗したときの対応に使われる例外
9.2 例外を使わない処理失敗時の対応
9.3 可用性(availability)の設計
9.4 不正なデータの対応

第10章 クラウド的考え方によるメリット
10.1 Twelve-Factor App とクラウド・ネイティブの2つのコンセプト
10.2 環境に格納された構成情報(configuration)
10.3 状態のない(stateless)独立したプロセスとしてのアプリケーションの稼働
10.4 ログをファイルに残すことの危険性
10.5 システム管理(administration)プロセス
10.6 サービス検出(service discovery)と負荷分散(load balance)
10.7 エンタープライズ・セキュリティの3つの「R」

第11章 ちょっと休憩:保険料の支払いなしに成立してしまった保険契約
11.1 店頭での保険販売(デジタル化の前)
11.2 複数のサービスへの分割
11.3 新たな種類の支払い方法の追加
11.4 交通事故、未払いの保険料、そして、裁判
11.5 何が間違いだったのかを理解する
11.6 全体像の把握
11.7 マイクロサービス・アーキテクチャにおける注意点


第3部 応用編
第12章 レガシー・コードへの適用
12.1 レガシー・コードのどの部分にドメイン・プリミティブを適用するのか?
12.2 メソッドやコンストラクタの曖昧な引数
12.3 ログにおける未検査の文字列
12.4 過保護な実装
12.5 DRY (Don’t Repeat Yourself)原則の誤解
12.6 ドメイン固有の型における不十分な妥当性確認(validation)
12.7 テストだけで十分なのか?
12.8 不完全なドメイン・プリミティブ

第13章 マイクロサービスでの指針
13.1 マイクロサービスとは何か?
13.2 境界づけられたコンテキスト(bounded context)を表すサービス
13.3 異なるサービスを行き来する機密性の高いデータ
13.4 マイクロサービスにおけるログ

第14章 最後に:セキュリティを忘れるべからず!
14.1 セキュリティを意識したコード・レビュー
14.2 最新のセキュリティに関する情報の把握
14.3 侵入テスト(penetration test)の実施
14.4 セキュリティの分野についての学習
14.5 セキュリティ・インシデントに対する仕組み

この商品を買った人はこんな商品も買っています


最近チェックした商品

Tポイント利用手続き

         Tポイント利用手続きに関する同意事項

                                株式会社マイナビ出版

株式会社マイナビ出版が提供するマイナビBOOKSにおいてTポイントご利用続きをされる方は、以下に掲げるお客様の個人情報の取り扱いについてご確認の上、ご同意下さい。

マイナビBOOKSにおいてTポイントサービスをご利用いただいた場合に、当社から、次に掲げる<提供情報>を、<提供目的>のためにカルチュア・コンビニエンス・クラブ株式会社(以下「CCC」といいます)へ提供します。

  <提供目的>:CCCの定める個人情報保護方針及びマイナビBOOKSにおけるT会員規約第4条に定める利用目的で利用するためTポイントサービスを利用するため
  <提供情報>:
   1)お客様が【マイナビBOOKS】の正当な利用者であるという情報
   2)ポイント数・利用日
   3)その他、Tポイントサービスを利用するにあたり必要な情報

  <提供方法>: 電磁的記録媒体の送付またはデータ通信による。ただし、提供するデータについては暗号化を施すものとする。

なお、CCCに提供された、以下の情報の利用については、CCCの定める個人情報保護方針及びT会員規約 に沿って取り扱われます。
上記の情報提供の停止をご希望される場合には、【マイナビBOOKS】におけるTポイント利用手続きの解除を実施していただく必要があります。
Tポイント利用手続きの解除、およびTポイントサービスにおける個人情報に関するお問い合わせ先は、以下のとおりです。
お客様お問い合わせ先:Tサイト(http://qa.tsite.jp/faq/show/22612)

 なお、Tポイント利用手続きの解除が完了しますと、マイナビBOOKSにおけるTポイントサービスをご利用いただけなくなりますので、予めご了承ください。

Tポイント利用手続きを行いますか?