DevOpsDays Tokyo 2023に参加して、特に気になったキーワードは「DevSecOps」なので、DevSecOpsについてまとめてみました。

DevSecOpsとは

名前通り、DevOpsの考え方にセキュリティ(Sec)を組み込んだものになります。
DevOpsとは、開発(Development)と運用(Operations)の連携を強化することで、ソフトウェアの品質やスピードを向上させる方法論です。
しかし、DevOpsではセキュリティが後回しになりがちで、脆弱性や攻撃に対して十分な対策ができない場合があります。
そこで、DevSecOpsでは、開発から運用までのライフサイクルにセキュリティを組み込み、セキュリティチームと開発チームが協力してソフトウェアを作ることを目指します。

DevSecOpsのメリット

DevSecOpsのメリットは何でしょうか?
まず、セキュリティを早期に考慮することで、脆弱性の発見や修正が容易になります。
また、セキュリティチームと開発チームが連携することで、セキュリティの知識やベストプラクティスが共有され、ソフトウェアの品質や安全性が向上します。
さらに、セキュリティを自動化することで、手動で行うよりも効率的にセキュリティチェックやテストができます。これらのメリットにより、DevSecOpsはソフトウェアの開発や運用におけるコストやリスクを削減することができます。

DevSecOpsの実践

DevSecOpsはメリットがあるものの、現実世界(現場)でDevSecOpsを実践するにはどうすればいいでしょうか? 
もちろんDevSecOpsは一朝一夕にできるものではありません。
まずは、組織やチームの文化やマインドセットを変える必要があります。セキュリティは全員の責任であるという意識を持ち、セキュリティチームと開発チームがコミュニケーションや協力を密にすることがとても重要です。
次に、セキュリティを自動化するためのツールやプロセスを導入する必要があります。例えば、コード解析ツールや脆弱性スキャナーなどを使って、開発段階からセキュリティチェックやテストを行うことです。
具体的な例をあげると

  • コード解析ツール:開発中のコードに対して静的解析や動的解析を行い、コードレベルの脆弱性やバグを検出し、修正することができます。 (最近リリースされたCodeWhispererなど)
  • 脆弱性スキャナー:デプロイされたソフトウェアに対して定期的に脆弱性スキャンを行い、既知の脆弱性や攻撃パターンを検出し、対策することができます。 (GitHub Advanced Securityなど)
  • コンテナ:ソフトウェアの実行環境を隔離し、環境ごとにセキュリティ設定やポリシーを適用することができます。

最後に、セキュリティを継続的に改善するための定期的なフィードバックの仕組みも必要です。例えば、インシデントや監査の結果をもとにして、セキュリティの課題や改善点を特定し、対策を実施することです。

以上がDevSecOpsについてのまとめでした。
セキュリティを開発から運用までのライフサイクルに組み込むことで、ソフトウェアの品質や安全性を高めることができます。
たしかに、DevSecOpsを実現するには組織やチームの文化やマインドセットを変えることから始める必要があるため、簡単なものではありません。しかし、長期的な視点から見るとチャレンジする価値があると思います。

プロフィール

祁鋭
祁鋭
Web広告事業→AWSクラウドエンジニア→フルスタックエンジニア
最近SaaSの開発、Rustとtauri絶賛勉強中です。