コードのデプロイ

自動ビルドとリリース パイプラインでは、依存関係を損なうことなく、ワークロードが新しいバージョンにシームレスに更新されます。 優先度の高い修正プログラムを迅速にデプロイできるプロセスによって自動化を強化します。

クラウドのアプリケーションをセキュリティで保護するにあたって、組織は、ゼロから開始するのではなく既存のガイダンスと自動化を活用する必要があります。 これらのモデルを早期に採用している外部の組織が学んだリソースや課題を利用することで、費やす労力とリソースをより少なくしながら、組織のセキュリティ体制の強化をスピードアップすることができます。

重要なポイント

  • セキュリティ チームが、DevOps プロセスの計画と設計に関与して、セキュリティ リスクに対する予防的な検出コントロールを統合します。
  • 自動化されたデプロイ パイプラインを設計すると、迅速なロールフォワードおよびロールバックのデプロイによって、通常のデプロイ ライフサイクル以外のクリティカルなバグやコードの更新プログラムに対処できます。
  • CI/CD パイプライン内のコード スキャン ツールを統合します。

ロールバックとロールフォワード

問題が発生した場合、パイプラインを動作していた以前のバージョンにロールバックする必要があります。 N-1 と N+1 は、ロールバックおよびロールフォワードのバージョンを示しています。 自動化されたデプロイ パイプラインを使用すると、迅速なロールフォワードおよびロールバックのデプロイによって、通常のデプロイ ライフサイクル以外のクリティカルなバグやコードの更新プログラムに対処できます。

自動化されたパイプラインを使用して N-1 または N+1 のバージョン (N は運用での現在のデプロイ バージョン) をデプロイできますか。


セキュリティ更新プログラムは優先順位が高いため、定期的な更新プログラムとクリティカルなセキュリティ修正プログラムをサポートするパイプラインを設計します。

リリースは、通常、複数のサインオフや品質ゲートなどを含む承認プロセスに関連付けられています。 承認が最小限で、ワークロードのデプロイが小規模な場合は、通常、同じプロセスとパイプラインを使用してセキュリティ修正プログラムをリリースすることができます。

複雑で非常に長い時間を要する承認プロセスの修正プログラムでは、延期時間が発生することがあります。 優先度の高い修正プログラムを高速化する緊急プロセスを構築することを検討してください。 このプロセスは、チーム間のビジネス、そして通信プロセスとなる場合があります。 もう 1 つの方法は、すべてのゲート承認を含まないが、修正プログラムを迅速にプッシュできるパイプラインを構築することです。 パイプラインを使用すると、定期的なデプロイ ライフサイクル以外で、セキュリティ修正プログラム、クリティカルなバグ、およびコードの更新プログラムに対応する迅速なロールフォワードおよびロールバックのデプロイを行うことができます。

重要

セキュリティ修正プログラムのデプロイが優先されますが、回帰やバグの導入に影響があってはいけません。 緊急パイプラインを設計するときは、どの自動テストを省略できるかを慎重に検討してください。 各テストの値を実行時間で評価します。 たとえば、単体テストは通常、迅速に完了します。 統合またはエンドツーエンドのテストは時間がかかる場合があります。

DevOps プロセスの計画と設計には、セキュリティ チームが関与します。 自動化されたパイプラインの設計には、通常と緊急の両方のデプロイをサポートする柔軟性が必要です。 これは、セキュリティ修正プログラムと、その他の緊急で重要な修正プログラムの両方を迅速かつ確実に適用するために重要です。

推奨されるアクション

Azure App Services デプロイ スロットを利用し、ロールバック シナリオのためのサポートありで、自動化されたデプロイ プロセスを実装します。

詳細情報

Azure App Service でステージング環境を設定する

資格情報のスキャン

資格情報、キー、証明書によって、ワークロードで使用されるデータまたはサービスへのアクセスが許可されます。 資格情報をコードに格納すると、セキュリティ上の重大なリスクが発生します。 静的コード スキャン ツールが、継続的インテグレーション (CI) プロセスの一部として統合されていることを確認してください。

コード スキャン ツールは、このワークロードの継続的インテグレーション (CI) プロセスの一部として統合されていますか。


資格情報がソース コードまたは構成ファイルに格納されないようにするには、CI/CD パイプライン内でコード スキャン ツールを統合します。

  • 設計時に、コード アナライザーを使用して、資格情報がソース コード リポジトリにプッシュされないようにします。 たとえば、.NET Compiler Platform (Roslyn) アナライザーは C# または Visual Basic コードを検査します。
  • ビルド プロセス中に、パイプラインのアドオンを使用して、ソース コード内の資格情報を取得します。 一部のオプションには、GitHub Advanced Security および OWASP ソース コード分析ツールが含まれています。
  • CI プロセスの一部として、サードパーティーのライブラリやフレームワーク コンポーネントなどの、すべての依存関係をスキャンします。 ツールによってフラグが設定された、脆弱性のあるコンポーネントを調査します。 このタスクを、コード チャーン、テスト結果、カバレッジを検査する他のコード スキャン タスクと組み合わせます。
  • 静的アプリケーション セキュリティ テスト (DAST) と静的アプリケーション セキュリティ テスト (SAST) を組み合わせて使用します。 DAST は、アプリケーションを使用中にテストします。 SAST は、ソース コードをスキャンし、その設計または実装に基づいて脆弱性を検出します。 いくつかのテクノロジ オプションは、OWASP によって提供されます。 詳細については、SAST ツール脆弱性スキャン ツールに関するページを参照してください。
  • ワークロードで使用されるテクノロジに特化したスキャン ツールを使用します。 たとえば、ワークロードがコンテナー化されている場合は、コンテナーに対応したスキャン ツールを実行して、コンテナー レジストリのリスクを、使用前、および使用中に検出します。

推奨されるアクション

Azure における安全な DevOps を実現するために OWASP (Organization for Web App Security Project) または同等のガイド策定組織が公開しているツールキットとガイダンスを取り入れます。

詳細情報

Azure でのセキュリティで保護されたデプロイとテストに関するメイン記事に戻ります