DevSecOps: パイプラインにおけるセキュリティ

DevSecOps は広範なトピックで、開発、セキュリティ、運用チームが継続的なデプロイメントサイクルで協力して働くことを指します。各チームに必要な機能 (コンパイル/ビルド、プロビジョニングとインフラ構成、品質テスト、セキュリティテスト、モニタリングなど) が自動化されています。

この点に関する具体的な推奨事項は、組織が継続的デプロイメントのプロセス (パイプライン) を作業方法として採用し、結合度の低いマイクロサービスを実装し、ソフトウェアリリースの最初からセキュリティを考慮に入れることです。

それぞれ以下のトピックで説明します。

パイプラインでのオペレーティングシステムの強化

コードをインスタンスにデプロイする場合は、以下の予防措置を講じてください。

  • 使用するベースインスタンスは、既知のバグに関連する脆弱性を避けるため、更新されたコンポーネントで定期的に作成する必要があります。これには EC2 Image Builder を使用できます。
  • EC2 Image Builder でのデプロイメントの一部として、 Amazon Inspector エージェントを追加し、インスタンスにオペレーティングシステムやアプリケーションの脆弱性がないことを確認するための定期的なチェックを実行できます。
  • オペレーティングシステムのセキュリティポスチャを強化するためのセキュリティ設定を適用します。良い出発点は Center for Internet Security (CIS) のガイドラインです。Amazon Inspector は、CIS オペレーティングシステム標準への準拠を確認し、それらが適用されているかを検証できます。

パイプラインの一部でアプリケーションセキュリティテストを実施

コードのセキュリティテストは、静的アプリケーションセキュリティ検査 (SAST)は、VeracodeFortify などのツールを、動的アプリケーションセキュリティ検査 (DAST)は、AquaAcunetix などのツールを使用して実行できます。これらのレビューの重要なポイントは、アプリケーションのデプロイメントプロセスの一部として実行され、高リスクまたは重大な脆弱性が見つかった場合に本番環境への移行が中断されることです。

脆弱性が早期に発見されるほど、修正の労力、経済的、時間的にみて修復が容易になります。

また、使用されているオープンソースライブラリを確認し、その脆弱性を報告するツールを追加することも価値があります。

AWS には AWS CodePipeline のサービスが利用でき、これらの継続的デプロイメントプロセスを自動的にオーケストレーションできます。例: DevSecOpsパイプライン

セキュリティコンポーネントのデプロイメント

デプロイされるアプリケーションに修正できない脆弱性があることがわかっている場合 (例:サードパーティに依存している場合)、コードのエラーが修正されるまでの間、アプリケーションを保護するためにカスタム WAF ルールをパイプラインの一部としてデプロイすることができます。

AWS ブログで、継続的デプロイメント (CI/CD) プロセスの一部として保護インフラストラクチャをデプロイする例として、Web ACL のデプロイ方法を紹介しています。 Terraform を使用して CI/CD でAWSセキュリティサービスをデプロイおよび構成する方法

主なリスクと軽減

  • 多くの Web アプリケーションはサービスを提供するために公開する必要があるため、アプリケーションの脆弱性は攻撃者によってアクセス可能です。
  • ほとんどの開発チームはセキュリティの専門家ではないか、セキュアなコード実践を優先する時間がありません。

評価のガイダンス

  • パイプラインでアプリケーションのセキュリティ脆弱性をスキャンしていますか?
  • パイプラインでコード内のシークレット/認証情報をスキャンしていますか?(例:開発者がアクセスキーをコードに入れた場合、それを検出しますか?)
  • 重大な脆弱性が見つかった場合、本番環境への移行を停止していますか?

追加情報

AWS BlackBelt Online Seminar

PDF / 動画