DevOpsのセキュリティの課題と考慮事項

Infrastructure as Code(IaC)の手法の導入により、組織は迅速に適応し、オンプレミスやマルチクラウドなどの様々な環境でアプリケーションを操作、開発、保守するための新しいプロセスを実装することが必要になりました。プロセスの数が増加し、スピードが上がると、セキュリティのギャップが生じる可能性があります。その結果、より効率的でセキュアなデプロイメントと製品リリース・サイクルを実装するために、時間をかけてプロセスの調整が重ねられました。IaCの手法と統合された新しいセキュリティ・プロセスは、DevSecOpsと呼ばれます。

DevOpsの目標を達成するには、Oracle Cloud Infrastructure (OCI) DevOpsサービスを使用します。

OCI DevOpsサービスは、ソフトウェア開発ライフサイクルを簡略化および自動化する、完全な継続的インテグレーションおよび継続的デリバリ(CI/CD)プラットフォームです。DevOpsサービスを使用すると、ソフトウェアの開発、構築、テストおよびデプロイに関するコラボレーションが可能になります。開発ライフサイクル全体を把握し、構築、テストおよびデプロイのフェーズにわたるソースのコミット履歴を取得できます。

DevSecOpsの定義プロセス中には、デプロイメント・プロセスのCI/CDパイプラインのコンポーネントを分析して、セキュリティ防御を強化する必要があります。また、ソース・コードを改善し、コード・リポジトリを保護する方法についても考慮してください。

DevSecOpsの仕組みおよびそれが必要な理由

DevOpsの手法の目標は常に、効率を高め、デプロイメントの生産速度を上げることでした。DevSecOpsの目標もDevOpsと同じですが、様々なデプロイメント・プロセスで使用されるすべてのコンポーネントを保護することが追加されています。

DevSecOpsは、クラウド・プロバイダ、DevOpsエンジニア、テスト・エンジニア、アプリケーション所有者、セキュリティ・アナリストなど、すべての利害関係者が責任を共有しています。ソフトウェアのライフサイクルにおいて、適切なレベルのエンドツーエンドのセキュリティを維持しながら、スピードとアジリティを維持するための適切なバランスを見つける必要があります。

DevSecOps成熟度モデル(DSOMM)は、DevOps戦略の使用時に適用されるセキュリティ対策と、セキュリティ強化のためにそれらに優先順位を付ける方法を提供します。たとえば、このモデルを使用して、アプリケーション・ライブラリやdockerイメージ内のオペレーティング・システム・ライブラリなどの各コンポーネントに既知の脆弱性かないかテストする方法を決定します。

OCIでのDevSecOpsの適用

次の情報は、OCI機能を利用する一般的なDevSecOpsワークフローを示しています。

  1. 開発者がリポジトリ(たとえば、ポリシー/権限を持つDevOpsサービスや、GitHubやGitLabなどのサードパーティ・コード・リポジトリなど)内にコードを作成します。GitHubやGitLabなどのサードパーティ・コード・リポジトリと統合するには、GitHubまたはGitLabに個人アクセス・トークン(PAT)を作成し、そのPATをOCIボールトに格納します。

  2. 変更は、構築する継続的インテグレーションおよび継続的デリバリ(CI/CD)ツールにコミットされます。

  3. CI/CDツールでは次のことができます:

    • 静的コードおよび動的コードの分析用のサードパーティ・ツールを起動して、Sonatype、SonarQube、OverOpsなどのコード品質のセキュリティ上の欠陥やバグを特定できます。
    • スキャン機能を有効にして、新しく構築したコンテナ・イメージをOracle Cloud Infrastructure Registryリポジトリにプッシュします。次に、CI/CDツールは脆弱性スキャンREST APIを使用して、イメージ・スキャンの結果を取得します。CI/CDツールは、イメージ・スキャンの結果に基づいて、イメージをライフサイクルの次のステージに移動するかどうかを決定できます。
  4. コード分析またはイメージ・スキャンに合格すると、セキュリティ、API統合、ユーザー・インタフェース・テストなどの自動テストが実行されます。

  5. アプリケーションおよびコードがこれらのテストに合格した場合、デプロイメント・パイプライン内のベスト・プラクティスは制御ステージ承認を追加することです。承認ステージでは、指定された期間、デプロイメントが一時停止されます。その間に承認者がデプロイメントの通知を受けて、手動で承認を提供します。

  6. デプロイメント・パイプラインの承認が完了すると、アプリケーションおよびコードが、コンピュート・インスタンス(仮想マシンおよびベア・メタル)、Container Engine for Kubernetes (管理対象Kubernetes)クラスタおよびOCI Functions (サーバーレス・ファンクション)を含む本番環境のOCIプラットフォームにデプロイされます。

  7. セキュリティの問題を特定するために、アプリケーションがデプロイされた環境を継続的にモニターする必要があります。さらに、Application Performance Monitoring (APM)ロギングモニタリングなどのOCIサービスを使用して、メトリックおよびサービス・ログの従来型モニタリングを実行します。通知などのネイティブOCI機能を使用して、セキュリティの脅威に迅速に対応するようにモニタリング・システムを構成します。また、ログをチケッティング・システム(ServiceNowなど)やサードパーティSIEMシステムと統合することもできます。

OCIのDevSecOpsデプロイメント・パイプライン。

DevSecOpsのベスト・プラクティス

次に示すDevSecOpsのベスト・プラクティスに従うことをお薦めします。

  1. ポリシーおよびガバナンスを適用します。

    DevSecOpsプロセスは、アイデンティティおよびアクセス管理(IAM)特権アクセス管理(PAM)などのセキュリティ機能に焦点を当てた強力なガバナンスに準拠し、それを実装することで成功します。また、このプロセスでは、DevSecOpsモデルのロールを定義し、適切なトレーニングを行い、常に最新の安全手法を使用する必要があります。

  2. DevOpsのセキュリティ・プロセスおよびツールを自動化します。

    DevOpsプロセスで自動化を使用すると、人的エラーやセキュリティ・インシデントのリスクを軽減できます。より効率的なツールと自動化を使用すると、DevOpsのセキュリティ・プロセスが高速になり、アプリケーションのレジリエンスも向上します。OCIは、OS管理Oracle Vulnerability Scanning Serviceにより、コード分析、構成管理、パッチ適用および脆弱性管理のためのセキュリティ・ツールを提供しています。特権資格証明およびシークレット管理は、Vaultで提供されます。

  3. 包括的な検出を実行します。

    セキュリティ・ポリシーに従って、すべてのデバイス、ツールおよびアカウントを継続的に検証、モニターおよび追加します。このプロセスは、ゼロ・トラスト・セキュリティ・モデルを導入するためにOCIアセットを調整する際に役立ちます。

  4. 脆弱性管理を実施します。

    アプリケーションのデプロイメントを本番に移行する前に、すべてのタイプの脆弱性を考慮、カタログ化、検証および修正する必要があります。OWASP DevSecOpsガイドラインをDevSecOpsセキュリティ・テストと統合することをお薦めします。

  5. DevOpsシークレット管理を使用してアクセスを保護します。

    DevOpsプロセスを実装するときには、コード内の資格証明およびアイデンティティ・アカウントのセキュリティとライフサイクルの管理を優先させます。Vaultがシークレット管理の達成に役立つことがあります。

  6. 特権アクセス管理を使用してアクセスを制御、モニターおよび監査します。

    IAMDevOps IAMポリシーロギングモニタリングなどのOCIサービスを導入すると、特権アクセスの管理に役立ちます。

  7. ネットワークをセグメント化します。

    DevOpsプロセスを定義するときは、異なる作業環境を分離(開発テスト環境から本番環境を分離するなど)しながら、攻撃対象サーフェスを減らすためにネットワークをセグメント化する必要があります。

詳細は、Oracle CloudのCIS Foundations Benchmarkを満たすセルフサービス・ランディング・ゾーンを参照してください。