Developer Productivity室の @uncle__ko です。

サイバー攻撃のニュースなどが盛り上がり、セキュリティについて取り沙汰されることが多い昨今。

開発生産性においてもセキュリティ対策はとても重要です。

今回は開発生産性とSecurity Shift Leftについてまとめようかと思います。

DORAの定義するCapabilitiesにおけるSecurity

Fourkeysなどを提唱しているDORA(DevOps Research and Assessment)が、組織がソフトウェアの提供と組織のパフォーマンスの向上を促進するためにもつべきものを定義していたりします

DORA | Capabilities
DORA is a long running research program that seeks to understand the capabilities that drive software delivery and operations performance. DORA helps teams apply those capabilities, leading to better organizational performance.

DORAの提唱しているCore Modelがあり、このCapabilitiesを持つことによりFourkeysやReliabilityを向上させ、企業のOutcomeにつなげるという思想です

DORA | Research
DORA is a long running research program that seeks to understand the capabilities that drive software delivery and operations performance. DORA helps teams apply those capabilities, leading to better organizational performance.

このCapabilitiesの中にPervasive securityという項目が定義されており、DORAもセキュリティについては重要視していることがわかります。

DORA | Capabilities: Pervasive Security
DORA is a long running research program that seeks to understand the capabilities that drive software delivery and operations performance. DORA helps teams apply those capabilities, leading to better organizational performance.

DX CriteriaにおけるSecurity

DX Criteriaとは、日本CTO協会が策定している2つのDX(Degital TransformationとDeveloper eXperience)を企業が推進するための評価基準です。

DX Criteria (v202104)/企業のデジタル化とソフトウェア活用のためのガイドライン
クライテリア一覧

よく作り込まれていて、DORAのCapabilitiesと似たような内容も含まれていたりします。

この中でも、セキュリティシフトレフトの大切さが書かれていたりします。

セキュリティシフトレフト
文責:石川陽一 セキュリティシフトレフトはなぜ重要か ソフトウェアが完成したあとにセキュリティの課題が見つかると、そのための対応に追われたり、リリースが遅れたりと良いことがありません。 できる限り早い工程でセキュリティの課題を見つけ出す技術と文化を、DevSecOpsあるいはセキュリティのシフトレフトと言います。 サイ

Shift Left

DORA、DX Criteriaのどちらでも重要なのはSecurityのShift Leftだと記載されています。

このご時世、サービスを作ったあとにセキュリティ対策をしないということはないと思います。年々サイバー攻撃の件数も増加傾向にあるため、セキュリティ対策は必須としても、いままでのようにシステム開発を終えてから脆弱性検査を行い、弱い部分が発見されたら修正手当てをしていくと、かなり非効率な部分もあり手戻りが多くなってしまいます。

また、DevOpsの考え方も普及してきたことを考えると、デプロイサイクルが早まっているため、いままでのやり方では現状の開発手法に合わなくなってきているように思います。

ではShift Leftとはなにかというと、開発ライフサイクルの初期段階から脆弱性や課題を見つけることで、従来のソフトウェアが完成したあとにセキュリティ課題を見つけたときの手戻りや修正コストを下げようとする試みのことです。

DevSecOpsなどとも言われたりします。

既存のDevOpsのサイクルの中にセキュリティ対策も含めて、文字通りセキュリティチェックをShift Leftしていきます。

セキュリティのShift Leftに関する取り組みは下記と言われています。

  • 専任のセキュリティチームによる最新動向等に基づくレビュー
  • 定期的な脆弱性診断の実施
  • ソースコードの自動的セキュリティチェック(静的解析・動的解析)
  • 自動テストの中で脆弱性検査機能を含むものの適用
  • 開発企画段階におけるセキュリティレビューの実施

セキュリティのShift Leftを実施していくにあたり、実際にどのような対策をしていくのがいいのかを記載していきます。

SAST(Static Application Security Testing)

そのままですが、SASTは脆弱性の静的解析です。

コードを静的/非実行の状態でスキャンして、セキュリティ脆弱性になるかもしれない欠陥を検出することを目的とした脆弱性診断です。コードの状態でスキャンするので、デプロイ前に検知して修正することが可能です。

なので、IDEのプラグインなどでcommit前のコードに対して検知もできますし、Pull Request作成時のJobとしてマージ前に検知したりも出来るかと思います。

代表的なツールは下記です。

  • Github Advanced Security
About GitHub Advanced Security - GitHub Docs
GitHub makes extra security features available to customers under an Advanced Security license. These features are also enabled for public repositories on GitHub.com.
  • Snyk
SAST テスト: そのしくみと必要性 | Snyk
Learn more about Static Application Security Testing (SAST), it’s pros and cons, and how it can help you to keep your source code secure.
  • Trivy
Trivy Home - Trivy
Trivy is the most popular open source security scanner for Vulnerability &, IaC, SBOM discovery, cloud scanning and Kubernetes security
  • RISKEN
RISKEN - RISKEN

SCA(Software Composition Analysis)

こちらもそのままですがソフトウェア構成分析です。

アプリケーションのコードベース(コンテナやレジストリなどの関連するアーティファクトを含む)を自動スキャンし、すべてのオープンソース・コンポーネントとそのライセンスおよびセキュリティ脆弱性を特定します。

代表的なツールは下記です。

  • Trivy
Trivy Home - Trivy
Trivy is the most popular open source security scanner for Vulnerability &, IaC, SBOM discovery, cloud scanning and Kubernetes security
  • Dependabot
Dependabot を使う - GitHub Docs
Dependabot で発生した pull request の管理、GitHub Actions と Dependabot の使用、Dependabot エラーのトラブルシューティングなど、Dependabot を操作するためのガイダンスと推奨事項。
  • Snyk
オープンソースセキュリティ管理|SCA ツール|Snyk | Snyk
デベロッパーファーストのソフトウェアコンポジション解析 (SCA) と業界最先端のインテリジェンスを使用して、オープンソースの依存関係に存在する脆弱性を自動的に発見し、優先順位を設定して修正できます。

DAST(Dynamic Application Security Testing)

SASTは静的なコード解析でしたが、DASTは動的なので、実際に稼働しているアプリケーションに対して、悪意のある攻撃者の視点を踏まえて疑似的な攻撃(検査)リクエストを送信し、アプリケーションの挙動の変化から脆弱性があるかどうかを判定します。

DASTはSASTと違いブラックボックステストで実施します。攻撃者はコードの内部機能を知らないという前提です。 プログラムの実行中にのみ現れるセキュリティ脆弱性など、SAST では検出不可能な脆弱性を発見します。

ただし、SASTやSCAほど簡単にCI/CDパイプラインに組み込めるわけではありません。

動いているアプリケーションに対してシナリオを実行するので、導入難易度は高めと言わざるえません。

代表的なツールは下記です。

  • StackHawk
Dynamic Application & API Security Testing for Modern Teams
Deploy secure applications with StackHawk. Find and fix application security bugs in the build pipeline. Built for developers to own their AppSec
  • ZAP
The ZAP Homepage
Welcome to ZAP!
  • Securify
クラウド型Webセキュリティ診断ツール - Securify
Securify(セキュリファイ)のサービスページです。お客様の課題に合わせた継続的セキュリティ対策を実現するセキュリティサービスをご提供いたします。

Secret Scanning

パスワード、APIキー、暗号キー、アクセストークン、認証や認可に使用されるさまざまなタイプのクレデンシャル情報をGitにPushすることを防ぐためのツールです。

代表的なツールは下記です。

  • GitHub Secret Scanning
About secret scanning - GitHub Docs
GitHub scans repositories for known types of secrets, to prevent fraudulent use of secrets that were committed accidentally.
  • Gitleaks
Gitleaks
  • trivy
Scanning - Trivy
A Simple and Comprehensive Vulnerability Scanner for Containers and other Artifacts, Suitable for CI

さいごに

セキュリティのShift Left/DevSecOpsの重要性や代表的な対策やツール群を紹介しました。

最近はサイバー攻撃によるニュースを多く聞くようになってきました。他人事だと思わずに、自分たちのシステムもいつ標的にされてもおかしくないと考えたほうがよい世の中だと思います。

この記事を参考にしていただき、セキュリティのShift Leftを積極的に行い、開発生産性も高めつつ、アプリケーションのセキュリティも高めて、安心安全なアプリケーションをつくってほしいな思ったりしています。