「セキュリティは開発が終わってから、テストフェーズで対処する」——そう考えている現場は、まだ多いのではないでしょうか。
しかし、後からセキュリティを「乗せる」アプローチには根本的な限界があります。設計段階ではなく実装後に欠陥が発覚すると、修正コストは数倍から数十倍に膨らむことが知られています。
この記事では、セキュリティバイデザインの考え方・5つの基本原則・中小企業の情シスが今日から実践できる具体的なアクションを解説します。
セキュリティバイデザインとは?
セキュリティバイデザイン(Security by Design)とは、システムや製品の「設計段階」からセキュリティ要件を組み込む考え方・設計思想です。後から追加する対策ではなく、最初から安全な仕組みを作ることを目指します。
この概念は欧米の標準化機関や規制当局が広く採用しており、EUの「GDPR」や「サイバーレジリエンス法(CRA)」でも設計段階のセキュリティが義務付けられています。日本でも経済産業省が「セキュア・バイ・デザイン」として産業界に普及を促しています。
セキュリティバイデザインと混同されやすい概念に「プライバシーバイデザイン(Privacy by Design)」があります。個人情報保護を設計段階から組み込む考え方で、GDPRの中核概念でもあります。両者は「後付けではなく設計段階で組み込む」という点で思想を共有しています。
| アプローチ | 特徴 | 問題点・課題 |
|---|---|---|
| 後付けセキュリティ | 開発完了後に脆弱性テストを実施・パッチを適用 | 修正コストが大きく、設計上の欠陥は根本対処が困難 |
| セキュリティバイデザイン | 設計段階からセキュリティ要件を定義・組み込む | 初期設計に時間がかかる(ただし総コストは大幅に低下) |
なぜ「後付けセキュリティ」では限界があるのか
IBMの調査では、バグの修正コストは「要件定義段階で発見した場合」を1とすると、「テスト段階では15倍」「運用段階では100倍」にも膨らむとされています。セキュリティの欠陥も同じ構造です。
後付けアプローチが抱える具体的な問題点を整理すると、こうなります。
・アーキテクチャレベルの欠陥は修正できない: 設計そのものに問題がある場合、パッチやWAFで塞げる範囲には限界があります。たとえば「全ユーザーが同じDBアカウントを使う設計」を後から最小権限に変えようとすると、システム全体の見直しが必要になります。
・開発者のセキュリティ意識が育たない: セキュリティを「別チームの仕事」と切り離すと、コードレビューやアーキテクチャ設計の段階で見えにくい脆弱性が潜入し続けます。
・パッチ対応が永遠に続く: 後付けのパッチ対応は「穴を塞ぐ」繰り返しです。根本的な設計を変えない限り、類似の脆弱性が別の箇所で繰り返し発覚します。
セキュリティバイデザインの5つの原則
実務でよく参照される代表的な5つの原則を解説します。
1. 最小攻撃面の原則(Attack Surface Reduction)
システムに不要な機能・サービス・インターフェースを持たせないことで、攻撃者が悪用できる「入り口」を最小化します。
Webサーバーであれば「管理用ポートを外部に公開しない」「使わないサービスはインストールしない」「外部からアクセス不要なAPIエンドポイントは非公開にする」といった設計判断がこれに当たります。
# 稼働中サービスを棚卸し(不要なものがないか確認) systemctl list-units --type=service --state=active # 不要なサービスを停止・無効化 sudo systemctl stop avahi-daemon sudo systemctl disable avahi-daemon # 現在のリスニングポートを確認 ss -tlnp
2. 安全なデフォルト値の設定(Secure Defaults)
設定変更せずにそのまま使っても「安全な状態」になるよう、デフォルト値を設計します。「使う人が設定を変えて初めて安全になる」では、設定変更を忘れた環境が脆弱なまま放置されます。
・デフォルト拒否(Default Deny): ファイアウォールのデフォルトをINPUT DROPにして、必要なポートだけ明示的に許可する
・デフォルト暗号化: データストアへの接続はデフォルトでTLS必須にする
・強制パスワード変更: 初期パスワードが設定されている場合、初回ログイン時に必ず変更させる仕組みを設ける
3. 最小権限の原則(Principle of Least Privilege)
ユーザーやプロセスには、業務に必要な最小限の権限だけを与えます。これにより、攻撃者がある権限を奪取しても、被害範囲を局所化できます。
Webアプリケーションのデータベース接続アカウントに「SELECT・INSERT・UPDATE」のみ付与し、「DROP TABLE」や「FILE」権限は与えないというのが典型的な実践です。
詳細な実装手順は「最小権限の原則とは?実装手順とチェックリストで理解する情報セキュリティの基礎」で解説しています。
4. 多層防御(Defense in Depth)
単一の防御策が突破されても、次の防御層で止められるよう、複数の独立した防御策を重ねます。「ファイアウォールを設置しているから安全」ではなく、ファイアウォール+IDS/IPS+エンドポイント対策+ログ監視を組み合わせることで、1つが破られても次で食い止められます。
詳細は「多層防御(ディフェンス・イン・デプス)とは?セキュリティの基本原則と中小企業でできる実装方法を解説」も参照してください。
5. フェイルセーフの設計(Fail Securely)
エラーや障害が発生したとき、システムが「安全な状態」に移行するよう設計します。「エラーが起きたら制限を緩める」実装は、障害を意図的に引き起こして権限を昇格させる攻撃の温床になります。
・認証エラー時: 「ユーザー名が間違っています」ではなく「ユーザー名またはパスワードが間違っています」とメッセージを統一し、ユーザー名の存否を漏らさない
・セッションタイムアウト時: 権限が落ちた状態(ログアウト状態)に確実に移行する
・例外処理時: スタックトレースや内部エラー情報を外部に露出しない
中小企業でも今日からできること
「セキュリティバイデザインは、大企業が開発するシステムの話では?」と感じるかもしれません。しかし考え方の本質は「後から対処するより、最初から考える」です。中小企業の情シスでも取り入れられる実践を紹介します。
1. 新しいシステム・クラウドサービス導入時のチェックリスト化
新しいSaaSやクラウドサービスを導入する際、セキュリティ要件をチェックリストで確認する習慣を作ります。「MFAは有効化できるか」「監査ログは取得できるか」「データは暗号化されるか」「サポート終了時のデータ移行は可能か」を導入前に確認することが、調達段階でのセキュリティバイデザインです。
2. 設定変更時の「セキュリティレビュー」を工程に追加
社内システムの設定変更やスクリプト追加の際、リリース前に最低1人がセキュリティ観点でレビューする工程を組み込みます。「誰でも書き込めるディレクトリに一時ファイルを置いていないか」「認証情報がコードにハードコードされていないか」をチェックするだけでも効果があります。
3. インフラ構成を「デフォルト拒否」から始める
新しくサーバーやネットワーク機器を設置する際、「すべてを拒否し、必要なものだけ許可する」という方針で設計を始めます。後から「ここを閉じる」より、最初から「ここだけ開ける」の方が見落としが少なくなります。
4. ベンダー選定基準にセキュリティ要件を明記する
システム開発やITサービスのベンダーを選定する際、「セキュリティ設計の実績・方針」を選定基準の一つに加えます。発注仕様書に「セキュリティバイデザインに基づいた設計を求める」と明記するだけで、ベンダー側の意識が変わります。
Linuxサーバーの具体的なセキュリティ設定については、姉妹サイトLinuxMaster.JPでも詳しく解説しています。
よくある誤解と注意点
【誤解1】セキュリティバイデザインはコストが高い
設計段階でセキュリティを考慮する初期コストは確かに発生します。しかし、後から発覚した脆弱性の修正コスト・インシデント対応コスト・信用失墜のコストと比べると、長期的には大幅に低くなります。「今払うか、後で高く払うか」という問題です。セキュリティを後回しにした分は、必ずどこかで精算されます。
【誤解2】セキュリティバイデザインがあれば脆弱性はゼロになる
セキュリティバイデザインは「脆弱性をゼロにする魔法」ではありません。設計段階で考慮できる範囲には限界があり、未知の脆弱性が後から発覚することはあります。あくまで「リスクを最小化し、発覚時の影響範囲を局所化する」ための設計思想です。100%安全なシステムは存在しないという前提のもとで活用する考え方です。
【誤解3】開発者だけの話だ
セキュリティバイデザインは開発部門だけのものではありません。「どんなシステムを調達するか」を決める購買・情シス・経営層も当事者です。調達仕様書にセキュリティ要件を明記することも、立派なセキュリティバイデザインの実践です。
本記事のまとめ
| 原則 | 内容 | 中小企業での実践例 |
|---|---|---|
| 最小攻撃面 | 不要な機能・サービスを持たせない | 不要ポートの閉鎖・不要サービスの無効化 |
| 安全なデフォルト値 | 初期状態が安全な設計にする | FWをデフォルト拒否・初期パスワードの強制変更 |
| 最小権限 | 必要な権限だけを付与する | DBアカウントに最小権限のみ設定 |
| 多層防御 | 複数の防御層を重ねる | FW+EDR+ログ監視の組み合わせ |
| フェイルセーフ | 障害時に安全な状態へ移行する | エラー時に内部情報を外部に露出しない |
セキュリティバイデザインの本質は「セキュリティは後から乗せるものではなく、最初から組み込むもの」という意識の転換です。大規模な開発プロジェクトだけでなく、中小企業がSaaSを選定するとき、サーバーを新規構築するとき、設定変更の承認をするとき——あらゆる場面でこの視点が活きます。
「今の設計に、最初からセキュリティが組み込まれているか?」を問い続けることが、攻撃者の先を行く防御の出発点です。
「セキュリティ基礎」の記事を読む
このテーマに関連する解説記事を一覧でまとめています。あわせてご覧ください。
