この記事の内容
実際に
開発者に よる セキュリティツールと プロセスの 導入を 促進する ベストプラクティス
開発者に よる セキュリティの 導入入門
現代の
話を
開発者のセキュリティには、文化、プロセス、ツールが必要
文化
1. 開発チームの
変化に
対する チームの 全般的な 受容度を 把握する。 最新の
テクノロジーや 開発プロセスを 導入しやすい チームや プロジェクトと、 変化に 抵抗が ある チームや プロジェクトを 把握する。 プロジェクトの
オーナーシップと 責任の 所在が どの 程度 明確かを 確認する。 デリバリーに
加え、 パフォーマンスや 信頼性など、 ほかの 業務に チームが どれだけ 対応できるかを 把握する。
2. 経営主導で
優先順位が
ビジネス側の 判断に よる ものだと 明確に 伝える。 セキュリティチームは、
開発チームの 負担を 増やすのではなく、 ビジネス上の セキュリティ優先事項への 対応を 支援する。
3. 開発者と
セキュリティチャンピオン
プログラムや セキュリティギルドを 設け、 連携しやすくする。 恐怖心に
頼るのではなく、 開発者と 協力して 信頼関係を 築く。 セキュリティチームと
開発チームが 共に 取り組む プログラムを 立ち上げ、 共通の 目標を 設定する。 開発チーム内の
担当者を 明確に し、 セキュリティチームからの 依頼が 適切な ものに なるようにする。
4. 教育を
プログラムを
展開する 前に、 チームに 教育を 行う。 教育内容に
よっては、 すべての チームに 関係するわけではない ことを 認識する。 過去の
インシデントを 例に、 各チームに 影響する 具体的な 脆弱性に ついて トレーニングする。 スコアカードで
教育の 進捗を 追跡する。 可能であれば、
教育に ゲーム要素を 取り入れる。
5. 報奨と
個人の
成果や セキュリティの 改善を 取り上げて 称える。 チームの
成功や プログラムの 導入事例を 紹介し、 進捗を 示すとともに、 ほかの チームでの 展開を 促す。 エンジニアリング部門の
リーダーが チームの 功績を 認め、 セキュリティが 重要である ことを 示すようにする。 認知向上の
ために、 グッズや ギフト、 セキュリティカンファレンスへの 参加機会などを 提供する。
プロセス
1. プロセス変更の
開発チームが
現在 どのように セキュリティ対策を パイプラインに 組み込んでいるかを 把握し、 その ワークフローに 合わせる。 新しい
セキュリティルールや プロセスを 策定する 際は、 開発チームと 協力して しきい 値や 作業方法を 決める。 プロセスを
変更する 場合は、 ブログ、 ドキュメント、 学習ハブなどを 通じて、 変更内容の 教育と 周知を 十分前もって行う。
2. 正しい
プロセスを
複雑に しすぎない。 開発チームと 協力して、 シンプルに 保つ。 ほかの
チームの 作業方法や 各業務の 進め方を、 わかりやすく 文書化する。 開発者が
デフォルトで 正しい 判断を できるよう、 舗装された 道 (paved road)と なる 選択肢を 用意する。 新しい
ワークフローを 作ろうと するのではなく、 既存の ワークフローに プロセスを 組み込む。 プロセスや
ツールは、 問題の 指摘ではなく 解決に 重点を 置く。
3. チーム間の
スコアカードは、
組織に セキュリティの 進捗や 状況を 報告する うえで 有効です。 チームは
スコアカードの 結果に 責任を 持ち、 自チームの 状況や 計画に 基づいて セキュリティを 優先する 必要が あります。 開発者が
大切に している 価値観や ゲーム要素を 活用して、 スコアカードの データを 根拠に 作業を スプリントに 組み込む。
4. 展開の
順応性が
高く、 新しい セキュリティ プログラムの 導入に 前向きな チームを 特定する。 まずは
そうした チームに 展開し、 当初は 負担を 抑え、 状況の 可視化を 中心に 進める。 まずは
アプリケーションに 加えられる 小さな 変更の セキュリティに 焦点を 当て、 セキュアな 開発活動を 開発ワークフローに 追加する。 チームに
過度な 負担を かけず、 変化に 対応できる ペースで ガードレールを 段階的に 強化する。 早期
導入チームで 効果が 確認できたら、 次に 展開する チームを 特定する。 初期展開で
明らかに なった ベストプラクティスを 活用し、 導入を 促進する。
ツール
1. 開発者向けツールを
開発者向けセキュリティツールには、
簡単な オンボーディング、 直感的な ワークフロー、 わかりやすい ドキュメントなど、 優れた セルフサービス機能が 必要です。 ツールは、
IDE、 Git、 パイプラインなど、 既存の ワークフローに 統合できる 必要が あります。 ツールには
充実した APIが あり、 自動化に 対応している 必要が あります。 オープンソースコミュニティや
セキュリティコミュニティで 広く 採用されている ツールを 選ぶ。 自社開発コード、
サードパーティライブラリ、 コンテナ、 IaCなど、 アプリケーション全体を カバーする ツールを 選ぶ。 ツールは、
問題の 検出や 報告よりも、 修正や 修復を 重視すべきです。
2. 開発者に
組織や
チームに ツールを 導入する 際は、 まず 状況の 可視化に 活用する。 時間を
かけて ポリシーを 通じた ルールや ガードレールを 強化し、 セキュアな 開発プロセスを 改善する。 ツールの
変更に あたっては、 周知、 コミュニケーション、 理由の 説明、 適切な プロセス文書、 教育で 支える。 開発者の
負担を 軽減する ため、 まず 新規コードの デリバリーに ツールを 適用し、 その後 バックログの 問題に 対応する。
3. すべてを
チームに
合わせて 適切な 場所で ワークフローに 統合し、 自動化する。 ワークフロー内の
テストに 加え、 チケット管理、 レポート、 アラートなど、 ツールを 連携できる ほかの 仕組みも 検討する。 ツールから
レポート用の データを 取得できるようにする。 できれば APIを 利用し、 既存の ダッシュボードや スコアカードに 反映する。