はじめに
IBM Concert勉強に関連して、DevSecOpsの役割について、以下の勉強素材を飛ばし飛ばしでまずはザクっと理解した内容をまとめます。
DevSecOpsとは
昔の開発フロー
開発 → テスト → リリース → セキュリティ確認
リリース直前に脆弱性が見つかったり、修正コストが高いなどの問題があった。
現在のDevSecOps
開発 → セキュリティチェック → CI/CD → リリース
↑
常に実施
「セキュリティを最後にやるのではなく、開発工程に組み込む」という考え方。
SASTとは
SAST = Static Application Security Testing。日本語だと静的アプリケーションセキュリティテスト。(←→DAST)ソースコードを実行せずに分析します。
例えば
String sql =
"SELECT * FROM user WHERE id='" + userInput + "'";
を見て、SQLインジェクションの可能性を検出する。
静的アプリケーションテストは、開発中に実行する。
Shift Leftとは
Shift Left = 左に寄せる
設計 → 開発 → テスト → 本番
の左側(早い段階)で、SAST, SCA, Secrets検査、IaC検査などを実施し、早期に検出できる脆弱性やセキュリティリスクを開発段階で発見・修正するという考え方。
DevSecOpsエンジニアの役割
DevSecOpsエンジニアは、DevSecOpsサイクルにおいて、開発スピードを落とさずに、開発ライフサイクル全体にセキュリティを組み込むことが仕事。具体的には以下のようなタスクがある。
- SAST導入(ソースコードの脆弱性検査)
- DAST導入(稼働中アプリの脆弱性検査)
- Secrets検査(パスワード・APIキー漏洩検知)
- SCA導入(OSSライブラリの脆弱性管理)
- コンテナイメージの脆弱性スキャン
- IaC(Terraform等)のセキュリティ検査
- 誤検知(False Positive)の分析・除外
- Jira等と連携した脆弱性管理プロセスの整備
- CI/CDパイプラインへのセキュリティ組み込み
- Shift Left推進(開発初期からのセキュリティ実践)
- 脆弱性の優先順位付けと修正支援
- 修正完了までの追跡・可視化
例えばシークレット検査では、Git Guardianを用いてAWS_SECRET_KEY=xxxxxというようなシークレット情報を開発者が誤って流出したときに検出してくれたり、Snykを用いてOSSライブラリの脆弱性を検出したりする。
おわりに
この学習材料でいっていたDevSecOpsとは、DevSeccOpsエンジニアの役割、実際のタスクについてザクっと知れた。