Developer Productivity室の @uncle__ko です。
サイバー攻撃のニュースなどが盛り上がり、セキュリティについて取り沙汰されることが多い昨今。
開発生産性においてもセキュリティ対策はとても重要です。
今回は開発生産性とSecurity Shift Leftについてまとめようかと思います。
DORAの定義するCapabilitiesにおけるSecurity
Fourkeysなどを提唱しているDORA(DevOps Research and Assessment)が、組織がソフトウェアの提供と組織のパフォーマンスの向上を促進するためにもつべきものを定義していたりします
![](https://dora.dev/img/misc/dora_social_image.png)
DORAの提唱しているCore Modelがあり、このCapabilitiesを持つことによりFourkeysやReliabilityを向上させ、企業のOutcomeにつなげるという思想です
![](https://dora.dev/research/dora-core-v2.0.0-detail.png)
![](https://dora.dev/img/misc/dora_social_image.png)
このCapabilitiesの中にPervasive securityという項目が定義されており、DORAもセキュリティについては重要視していることがわかります。
![](https://dora.dev/img/misc/dora_social_image.png)
DX CriteriaにおけるSecurity
DX Criteriaとは、日本CTO協会が策定している2つのDX(Degital TransformationとDeveloper eXperience)を企業が推進するための評価基準です。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/dxcriteria-cto-a/aef4f949-6950-4f3f-82ab-94c06291245a/a08773b26b3e3f82d85b66747366e7e6.png)
よく作り込まれていて、DORAのCapabilitiesと似たような内容も含まれていたりします。
この中でも、セキュリティシフトレフトの大切さが書かれていたりします。
![](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/dxcriteria-cto-a/1a1dceeb-643c-465d-98fc-b1d779dcbf09/23f416fa3a680ed6d5542a332551a662.png)
Shift Left
DORA、DX Criteriaのどちらでも重要なのはSecurityのShift Leftだと記載されています。
このご時世、サービスを作ったあとにセキュリティ対策をしないということはないと思います。年々サイバー攻撃の件数も増加傾向にあるため、セキュリティ対策は必須としても、いままでのようにシステム開発を終えてから脆弱性検査を行い、弱い部分が発見されたら修正手当てをしていくと、かなり非効率な部分もあり手戻りが多くなってしまいます。
また、DevOpsの考え方も普及してきたことを考えると、デプロイサイクルが早まっているため、いままでのやり方では現状の開発手法に合わなくなってきているように思います。
ではShift Leftとはなにかというと、開発ライフサイクルの初期段階から脆弱性や課題を見つけることで、従来のソフトウェアが完成したあとにセキュリティ課題を見つけたときの手戻りや修正コストを下げようとする試みのことです。
![](https://site.developerproductivity.dev/content/images/2024/07/----------2024-07-22---9.29.06.png)
DevSecOpsなどとも言われたりします。
既存のDevOpsのサイクルの中にセキュリティ対策も含めて、文字通りセキュリティチェックをShift Leftしていきます。
セキュリティのShift Leftに関する取り組みは下記と言われています。
- 専任のセキュリティチームによる最新動向等に基づくレビュー
- 定期的な脆弱性診断の実施
- ソースコードの自動的セキュリティチェック(静的解析・動的解析)
- 自動テストの中で脆弱性検査機能を含むものの適用
- 開発企画段階におけるセキュリティレビューの実施
セキュリティのShift Leftを実施していくにあたり、実際にどのような対策をしていくのがいいのかを記載していきます。
SAST(Static Application Security Testing)
そのままですが、SASTは脆弱性の静的解析です。
コードを静的/非実行の状態でスキャンして、セキュリティ脆弱性になるかもしれない欠陥を検出することを目的とした脆弱性診断です。コードの状態でスキャンするので、デプロイ前に検知して修正することが可能です。
なので、IDEのプラグインなどでcommit前のコードに対して検知もできますし、Pull Request作成時のJobとしてマージ前に検知したりも出来るかと思います。
代表的なツールは下記です。
- Github Advanced Security
![](https://github.githubassets.com/images/modules/open_graph/github-logo.png)
- Snyk
![](https://res.cloudinary.com/snyk/image/upload/f_auto/q_auto/v1530707820/wordpress-sync/SAST-annoucment-2.png)
- Trivy
![](https://trivy.dev/wp-content/uploads/2022/03/trivy-horizontal-featured-image.jpg)
- RISKEN
![](https://docs.security-hub.jp/img/risken/top.png)
SCA(Software Composition Analysis)
こちらもそのままですがソフトウェア構成分析です。
アプリケーションのコードベース(コンテナやレジストリなどの関連するアーティファクトを含む)を自動スキャンし、すべてのオープンソース・コンポーネントとそのライセンスおよびセキュリティ脆弱性を特定します。
代表的なツールは下記です。
- Trivy
![](https://trivy.dev/wp-content/uploads/2022/03/trivy-horizontal-featured-image.jpg)
- Dependabot
![](https://github.githubassets.com/images/modules/open_graph/github-logo.png)
- Snyk
![](https://res.cloudinary.com/snyk/image/upload/f_auto/q_auto/v1589208425/appsec-featured_image.png)
DAST(Dynamic Application Security Testing)
SASTは静的なコード解析でしたが、DASTは動的なので、実際に稼働しているアプリケーションに対して、悪意のある攻撃者の視点を踏まえて疑似的な攻撃(検査)リクエストを送信し、アプリケーションの挙動の変化から脆弱性があるかどうかを判定します。
DASTはSASTと違いブラックボックステストで実施します。攻撃者はコードの内部機能を知らないという前提です。 プログラムの実行中にのみ現れるセキュリティ脆弱性など、SAST では検出不可能な脆弱性を発見します。
ただし、SASTやSCAほど簡単にCI/CDパイプラインに組み込めるわけではありません。
動いているアプリケーションに対してシナリオを実行するので、導入難易度は高めと言わざるえません。
代表的なツールは下記です。
- StackHawk
![](https://images.ctfassets.net/nx13ojx82pll/5SRe6WKyy7tWqMCSNnAMuv/7345e04a2fc53fad95293f640e6daf0e/press-social.jpg?w=1200&h=630&fl=progressive&q=90&fm=jpg)
- ZAP
![](https://www.zaproxy.org/img/zap-banner.png)
- Securify
![](https://www.securify.jp/wp-content/themes/securify/assets/images/common/ogp.png)
Secret Scanning
パスワード、APIキー、暗号キー、アクセストークン、認証や認可に使用されるさまざまなタイプのクレデンシャル情報をGitにPushすることを防ぐためのツールです。
代表的なツールは下記です。
- GitHub Secret Scanning
![](https://github.githubassets.com/images/modules/open_graph/github-logo.png)
- Gitleaks
- trivy
さいごに
セキュリティのShift Left/DevSecOpsの重要性や代表的な対策やツール群を紹介しました。
最近はサイバー攻撃によるニュースを多く聞くようになってきました。他人事だと思わずに、自分たちのシステムもいつ標的にされてもおかしくないと考えたほうがよい世の中だと思います。
この記事を参考にしていただき、セキュリティのShift Leftを積極的に行い、開発生産性も高めつつ、アプリケーションのセキュリティも高めて、安心安全なアプリケーションをつくってほしいな思ったりしています。