セキュアなアーキテクチャ、設計、実装を行うためのデザインパターン情報が公開

2009年7月1日

JPCERT コ-ディネーションセンター

政府機関や企業から独立した組織として情報セキュリティ対策活に取り組んでいるJPCERTコーディネーションセンターが、ソフトウェアの脆弱性を減じるための資料「ソフトウエア設計工程における脆弱性低減対策 「セキュアデザインパターン」(日本語版)」(pdf)を公開したと、ITmediaエンタープライズの記事「ソフトウェア設計の安全性を高める技術資料、JPCERT/CCが日本語公開」が伝えています。

ソフトウェアのデザインパターンとは、ソフトウェアの設計をするときに使える設計ノウハウをまとめたものです。有名なものに「ギャング・オブ・フォー」と呼ばれる4人の専門家によってまとめられた書籍「オブジェクト指向における再利用のためのデザインパターン」で紹介された23種類のパターンなどがあります。

この資料ではどんなデザインパターンが紹介されているのか、のぞいてみることにしましょう。

アーキテクチャ、設計、実装に関するデザインパターン

セキュアデザインパターンの表紙

この資料の目的は、ソフトウェア開発のアーキテクチャ、設計、実装のそれぞれのフェーズでのセキュリティ上の課題を解決することだ、というのが「本書の目的」の項目に書かれています。そのため、

セキュアデザインパターンは、システムの上位レベルの設計にかかわるアーキテクチャレベルのパターンから、関数やメソッドの部品を実装する方法のガイダンスを提供する実装レベルのパターンまで、特徴の異なる幅広いレベルのセキュリティ問題に対応する。

と、この資料にはさまざまなレベルのデザインパターンが含まれていることが説明されています。ただし、この資料に書かれたものがセキュリティのためのデザインパターンのすべてではなく、

セキュアデザインパターンのカタログは、将来拡充される予定である。

と、さらに新しいデザインパターンがあってもおかしくないとのこと。以下に、資料に含まれるデザインパターンの紹介を引用します。

アーキテクチャレベルのパターン : アーキテクチャレベルのパターンは、システムの異なる構成要素間の責任配分を抽象度の高いレベルで扱い、構成要素間のやり取りを定義する。本報告書で定義するアーキテクチャレベルのパターンは以下のとおりである。

  • Distrustful Decomposition(相互信頼を前提としないシステム構成要素の分解)
  • PrivSep(Privilege Separation:権限分離)
  • Defer to Kernel(カーネルに委任)

設計レベルのパターン : 設計レベルのパターンは、システム構成要素をいかに設計し実装するかを記述する。つまり、単一のシステム構成要素の内部設計における問題を対象とする。本報告書で定義する設計レベルのパターンは以下のとおりである。

  • Secure State Machine(セキュアステートマシン)
  • Secure Visitor(セキュアビジター)

実装レベルのパターン : 実装レベルのパターンは、抽象度の低い実装寄りのセキュリティ上の課題を対象とする。このクラスにおけるパターンは、一般にシステム内の特定の関数やメソッドの実装に適用できる。実装レベルのパターンは、CERT Secure Coding Standards [CERT 2009a] が対象とする問題と同種の問題を取り上げ、多くの場合、対応するセキュアコーディングのガイドラインに関連付けられている。本報告書で定義する実装レベルのパターンは以下のとおりである。

  • Secure Directory(セキュアディレクトリ)
  • Pathname Canonicalization(パス名正規化)
  • Input Validation(入力検査)
  • Resource Acquisition Is Initialization(リソースの確保は初期化時に行う)

関連記事 on Publickey

参考記事 on the Web

Tags: セキュリティ プログラミング言語 システム開発

このエントリーをはてなブックマークに追加
ツイート
follow us in feedly





タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本