本文の内容は、2024年12月12日に Marla Rosner が投稿したブログ(https://sysdig.com/blog/how-to-secure-every-stage-of-the-ci-cd-pipeline-with-sysdig/)を元に日本語に翻訳・再構成した内容となっております。
クラウドにおける運用においてセキュリティ保護は困難に思えるかもしれません。組織を保護するには、ソフトウェア開発サイクルのあらゆる段階で適切な予防策と対処策を講じる必要があります。しかし、思ったほど複雑である必要はありません。
このブログでは、開発プロセスの早い段階で脆弱性や問題を検出し、リスクとコストの両方を削減することを目的とした「シフトレフト」アプローチに重点を置いて、ソフトウェア開発ライフサイクル全体を保護する方法について概説します。
開発ライフサイクルにおける主要なセキュリティ原則
すべての段階でセキュリティチェックを統合すると、開発者は Visual Studio Code (VSCode)、Jenkins、GitHub Actions などの開発ツールを使用して、問題を早期に特定して解決できるようになります。セキュリティフィードバックを Jira や GitHub Issues などの開発者環境やツールに埋め込むことで、脆弱性に迅速に対処し、セキュリティを開発プロセスに統合することができます。セキュリティを最後に追加する必要はありません。
開発ライフサイクル全体で実装される主要なセキュリティ原則は次のとおりです。
- 多層防御: セキュリティはパイプライン全体に階層化されており、開発中、CI/CD パイプライン、ランタイムなど、複数のポイントで脆弱性が検出されます。これにより、脆弱性が見逃される可能性が減ります。
- 最小権限: この原則により、ユーザーとサービスには攻撃対象領域を減らすために必要な最小限の権限が与えられます。開発者は、潜在的なリスクを軽減するために、権限が過剰に付与されたロールや構成を検出して修正できる必要があります。
- ゼロ トラスト: 各コンポーネントは各段階で継続的に検証され、信頼できる要素のみが本番環境にデプロイされるようにします。ランタイムであっても、異常や不正なアクティビティを監視することが重要です。
- デフォルトでのセキュリティ: 最初からセキュアなプラクティスを組み込むことで、開発プロセスの早い段階でセキュリティが考慮され、誤った構成を防ぎ、脆弱性が生じる可能性を減らすことができます。
- 継続的なコンプライアンス: 自動化されたセキュリティスキャンにより、アプリケーションとインフラストラクチャーが継続的にセキュリティ標準に準拠し、新たな脆弱性が出現するとそれを捕捉し、時間の経過とともにセキュリティが変化することを防ぎます。
Sysdigは、イミュータブルなインフラストラクチャーや declarative infrastructure as code (IaC) と統合することで、一貫性と追跡可能性を維持し、環境間での構成のドリフトを削減します。また、セキュリティチェックが開発プロセスを遅延させることなく、マイクロサービスのようなクラウドネイティブアプリケーションの迅速な開発を支援します。これには、ゼロデイ脆弱性や不審な動作をリアルタイムで検知するランタイム脅威検知が含まれます。
開発者は、Visual Studio Code プラグインや Sysdig CLI スキャナーなどの拡張機能を利用して、開発中に Sysdig で誤った構成や脆弱性をスキャンします。IaC の場合、Sysdig はCIS ベンチマークやNIST SP 800-53などの標準への準拠、最小権限や適切なシークレット管理などのベストプラクティスの実装を支援します。
Sysdig を Git リポジトリと統合すると、誤った構成や脆弱性を自動的に検出し、プルリクエストを通じて修正パッチを提供して、安全なコードを維持できるようになります。Sysdig は、GitHub、GitLab、Jenkins などの CI/CD パイプラインもスキャンして、デプロイメント前にアプリケーション コードとインフラストラクチャの両方で残っている問題を検出します。これには、コンテナ イメージの脆弱性のチェック、セキュリティ ポリシーへの準拠の確認、安全でないデプロイメントのブロックが含まれます。
ソフトウェアライフサイクルの各段階と、Sysdig がそれらをどのようにセキュアに保つか
- Infrastructure as code (IaC) : Sysdig は IaC の誤った構成をチェックし、セキュアでないインフラストラクチャー設定が本番環境に到達しないようにします。また、開発全体を通じてセキュリティ第一の考え方を徹底するのにも役立ちます。
- コンテナとイメージのセキュリティ: Sysdig は、イメージとコンテナ ビルドをスキャンして、古い OS レベルの依存関係、誤って構成されたシークレット、セキュアでない設定などの問題を検出します。
- レジストリとアーティファクトリポジトリ: これらの段階で、Sysdig は脆弱性がないか継続的にスキャンし、安全で信頼できるイメージのみがデプロイされるようにします。
- ランタイム セキュリティ:ランタイムで、Sysdig はスタンドアロンホスト、Kubernetes、サーバーレスプラットフォームなどの環境全体の脆弱性と疑わしい動作を検知するための継続的な監視を提供します。Kubernetes の場合、Sysdig はロールベースのアクセス制御 (RBAC) を使用し、監査ログを監視してインシデントを検知します。
- CIEM (クラウドインフラストラクチャー権限管理) : Sysdig は、最小限の権限を適用し、過剰な権限を最小限に抑えることでクラウド権限も管理し、権限昇格攻撃のリスクを軽減します。
Sysdigは、自動化されたチェックと修復を開発パイプラインに統合することで、開発者が安全でコンプライアンスに準拠した環境を維持できるよう支援し、エンドツーエンドのセキュリティを提供します。ソフトウェアライフサイクルのすべての段階(開発、デプロイ、ランタイム)を保護することで、Sysdigはエンドツーエンドのセキュリティを実現し、開発者があらゆるステップで安全でコンプライアンスに準拠した環境を維持できるようにします。
さらに詳しく知りたいですか? インフォグラフィック「ソフトウェア セキュリティ大全の全体像: パイプラインの各段階で必要なもの」をご覧ください。