なぜ エンジニアに特化したセキュリティ研修が必要か
エンジニアが作るシステムやコードは、直接的な攻撃対象となる。
1つの脆弱性が、大きな情報漏洩やサービス停止につながる可能性がある。
「機能要件」だけでなく「非機能要件」としてのセキュリティの重要性
自分は大丈夫、このくらいならという油断が最も危険
開発プロセスにおけるセキュリティの基本
-
セキュアコーディングの考え方
-
入力値は常に疑う
- ユーザーからの入力、外部APIからのデータなど、あらゆる入力値は不正なものである可能性を考慮し、必ず検証(バリデーション)と無害化(サニタイズ)を行う
-
出力する情報は適切に処理
- HTMLやJavaScriptとして解釈される可能性のあるデータを出力する際は、必ずエスケープ処理を行う
-
エラーハンドリング
- エラーメッセージにシステムの詳細情報を含めない。攻撃者にヒントを与えない
-
ライブラリ・依存関係の管理
- 利用しているライブラリやframeworkに脆弱性がないか常に確認し、必要に応じてアップデートする。脆弱性のある古いバージョンを使い続けない。
機密情報の適切な管理
- コードに秘密を書かない: APIキー、パスワード、データベース接続情報などをソースコードに直接記述しない(ハードコーディングの禁止)。
- 管理方法: 環境変数、設定ファイル、社内で指定されたシークレット管理ツールなどを利用する。
-
バージョン管理システム(Gitなど)への混入防止:
.gitignore
を適切に設定し、機密情報を含むファイルがコミットされないようにする。万が一コミットしてしまった場合の対処法(履歴からの削除など)を知っておく。(※対処法は複雑な場合もあるため、まずは混入させない意識を強調)
-
入力値は常に疑う
インフラ・運用・開発環境における注意点
-
アクセス権限は最小限に
- サーバー、データベース、クラウドサービスなど、担当業務に必要な最小限の権限の身を使用・要求する(最小権限の原則)
- SSHキーやパスワードは厳重に管理し、絶対に共有しない。推測されにくい複雑なパスワードを設定し、定期的に変更する。可能であれば多要素認証(MFA)を利用する。
-
設定ミスによる脆弱性を防ぐ
- サーバーOS,ミドルウェア、クラウドサービスなどの設定において、デフォルトのパスワードは必ず変更する
- 不要なポートやサービスは停止・無効化する。
- クラウドストレージ(AWS S3など)のアクセス権設定ミスによる情報漏洩事例などを紹介し、公開範囲の設定には細心の注意を払うよう促す。
-
開発環境のセキュリティ
- 開発用PC自体のセキュリティ対策(OS・ソフトウェアのアップデート、ウイルス対策ソフトの導入、ディスク暗号化など)を徹底する。
- テストデータとして、本番環境の個人情報や機密情報を使用しない。必要な場合はマスキング処理などを行う。
- テスト環境と本番環境は明確に分離する。
ISMS(情報セキュリティマネジメントシステム)
ISMS
とは、「
I
nformation
S
ecurity
M
anagement
S
ystem」の頭文字を取ったもので、日本語では「
情報セキュリティマネジメントシステム
」といいます。
一言でいうと、「
会社が持っている大切な情報(情報資産)を、様々な脅威(悪いこと)から守り、きちんと活用していくための組織的な仕組み(ルールや体制)
」
情報を扱う上でのルールを決め、それを守るための体制を作り、教育を行い、定期的に見直し改善していくといった、組織全体での継続的な活動そのものを指します。
何故大切なのか
-
お客様や社会からの信頼を得るため
「この会社は情報をしっかり管理している」という安心感は、お客様からの信頼に繋がり、会社のブランドイメージ向上にも貢献します。 -
法律やルールを守るため
個人情報保護法など、情報を扱う上で守らなければならない法律や社会的なルールがあります。ISMSはこれらを遵守するためにも役立ちます。 -
万が一の時に備えるため
情報漏洩やサイバー攻撃などのセキュリティ事故が起きてしまった場合でも、被害を最小限に抑え、速やかに事業を復旧できるように備えることができます。
国際規格に基づく認証制度がある
ISMSが国際的な基準に沿って適切に構築・運用されていることを示すものとして、「
ISO/IEC 27001
」という国際規格に基づく認証制度があります。
この認証を取得することは、会社が情報セキュリティに対して高い意識を持ち、しっかりとした管理体制を整えていることの客観的な証明となり、対外的な信頼性を高める効果があります。