第2クロステックセンターの長田 修次です。

 

今回はAWSサービスとオープンソースのツールを使用して、DevSecOps CI/CD パイプラインを構築する公式ハンズオンをご紹介します。

1.DevSecOps

DevSecOpsは開発、セキュリティ、および運用のチームが協力して、アプリケーションのセキュリティを改善・維持する文化です。リリースの速度や頻度を上げる度、従来の対策ではセキュリティの確保が困難です。CI/CDパイプラインにセキュリティスキャンを統合することで、アプリケーションのセキュリティリスクを最小限に抑え、同時に開発のスピードを上げることができます。

2.シフトレフト開発

アプリケーションに対してセキュリティ対策が必要な場合、開発フェーズにセキュリティテストを組み込むことで、セキュリティの欠陥を早期に発見することをシフトレフト開発といいます。プロダクトに対して開発者のセキュリティ意識が上がるだけでなく、最終的に工数削減にもつながります。今回のように自動でCI/CDパイプラインに組み込むことで、アプリケーションセキュリティの脆弱性を可視化できます。

3.使用するAWSサービスとツール

今回AWSサービスでCI/CDパイプラインを構築する場合以下のツールを使用します。

・AWS CodeBuild:自動スケーリングされるコードのビルドとテストが行えるサービス
・AWS CodeCommit:プライベートなGitリポジトリを作成するサービス
・AWS CodeDeploy:コードデプロイを自動化するサービス
・AWS CodePipeline:パイプラインの継続的デリバリーを自動化するサービス
・Amazon S3:デプロイするアプリケーションをアップロードするオブジェクトストレージ
・Amazon Simple Notification Service:デプロイのEメール通知を行うメッセージサービス
・Amazon CloudWatch:ログモニタリング用のサービス

以下のサービスやダッシュボードで分析します。

・AWS Security Hub:セキュリティインシデントの統合ダッシュボード
・AWS Config:リソースの構成を評価、監査、評価するサービス(オプション)
・CloudTrail:ユーザーアクティビティと API 使用状況を追跡するサービス(オプション)
・CodeGuru(SAST):セキュリティの脆弱性を検出し、コードレビューを自動化するサービス(オプション)

今回使用するデプロイ先のサンプルアプリケーションは以下の環境です。

・AWS Elastic Beanstalk:Web アプリケーションのデプロイとスケーリングを統合できるサービス

クラウド上に開発環境を用意するため、以下のサービスを利用します。

・Cloud9:コードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE)

CI/CDパイプラインにOSSツールであるSCA、SAST、DASTツールを組み込むことにより自動テストが実施できます。

・OWASP Dependency-Check(SCA):パッケージの脆弱性を検出するソフトウェア構成分析ツール
・SonarQube(SAST) :静的コード分析ルールを使用して、アプリのバグと脆弱性を検出するツール
・OWASP ZAP(DAST): ウェブアプリケーションの動的セキュリティスキャンが行えるツール

このようなツールはパイプラインだけでなく、開発環境の端末からでも利用出来るようになっています。無料のOSSツールだけでなく、商用のツールも市場に存在します。例えばSynopsys社やCheckmarx社のツールが代表的のものです。

4.ハンズオンのご紹介

ハンズオン資料(英語):[SECURITY AND COMPLIANCE IN CI/CD PIPELINE]
https://devsecops-cicd.workshop.aws/en/

【主な手順の流れ】
1.環境をデプロイするための開発環境をCloud9でセットアップします。
2.Cloud9で使用するIAMロールを作成し、アタッチします。
3.Cloud9の端末より、AWS CLIツールをインストールします。
4.AWS CLIを用いてAWS CodeCommit リポジトリのセットアップします。
5.アプリケーションをアップロードするためのAmazon S3 バケットをセットアップします。
6.デプロイ先のアプリケーションElastic Beanstalk 環境をセットアップします。
7.SAST(SonarQube)およびSCA(OWASP dependecy-check)、DAST(OWASP Zap)のツールを導入します。
8.SASTツール(SonarQube)を構成します。
9.DASTツール(OWASP Zap)を構成します。
10.AWS Security Hub と AWS Config、CloudTrail を有効にします。
11.Cloudformationテンプレートからパイプラインをデプロイします。
12.Amazon SNS 通知サブスクリプションをセットアップします。
13.CodePipelineを使用してパイプラインを実行します。
14.脆弱性のあるコードをコミットし、アプリケーションをパイプラインで脆弱性をスキャンします。
15.CodeGuruとCloudformation Guard Analysisでソースコードを解析します。(オプション)
16.CloudTrailやConfigを確認します。(オプション)
17.ハンズオンが終わったら環境を削除します。

5.さいごに

実際の開発の現場では開発の文化がありセキュリティの要件も異なるため、より効果的な仕組みを各々で検討する必要があります。開発のライフライクルに合ったツールを使用して自動化することで、プロダクトの品質だけでなく、開発者の体験を向上させることができます。

自分の周りでは2022年はセキュリティのシフトレフトがテーマの年でした。2023年も引き続き改善していければと思います。