定義

Policy as Codeは、セキュリティのルール、基準、条件をコードで定義・管理する方法であり、継続的インテグレーション/継続的デリバリー/継続的デプロイ(CI/CD)パイプライン内でプログラムによってセキュリティおよびリスク・ポリシーを適用します。アプリケーション・セキュリティ・テストにおいては、テスト・ワークフローを自動化し、ポリシーの評価、応答、通知のルールをコードで定義できます。

Policy as Codeのしくみ

ポリシーは高水準言語で記述され、コードはクエリを使用するポリシー・エンジンに入力されます。ポリシー・エンジンはこれらのポリシーを入力として処理し、クエリ結果を提供します。この結果により、設定されたポリシーに沿って、適切なアプリケーション・セキュリティ・テスト(AST)の種類、およびテストを実施する時期と対象箇所が決定されます。

Policy as Codeは、特定のアプリケーションをテストするための前提条件を指定する読み取り可能なスクリプト・ファイルです。これらのファイルは組織が使用するツールと互換性のある、サポートされているプログラミング言語(YAMLやPythonなど)で記述されています。ポリシーはCIパイプラインへのAPI呼び出しによって適用されるため、現在のビルドを壊すことなくセキュリティ・テストを実行できます。

Policy as Codeに記述する際の重要な考慮事項

  • 依存関係 テストによってビルドやデプロイが破壊される可能性があるか。どのような調査結果を問題追跡システムにエスカレーションする必要があるか。
  • コードの変更。変更がコミットされた時期。変更の程度。変更に伴う追加テストや手動によるコードレビューを行う必要があるか。
  • テスト対象アプリケーションの事業運用上の重要度。対象アプリケーションは機密データを扱うか。重大なダウンタイムのリスクがあるか。対象アプリケーションのアタックサーフェスはどこにあるか。


Policy as Codeの利点

アプリケーション・セキュリティ・テストでは、Policy as Codeを活用して、テストするタイミング、使用するテスト・ツール、テストの必要性の有無などの条件を定義できます。これらのパラメータをコード化することで、複数のASTツールの連携を簡素化し、高精度のテスト・ワークフローを実現できます。これにより、セキュリティ・ポリシーを一貫性のある自動化された方法で適用することが可能になり、開発スピードを落とすことなくソフトウェア品質を向上させることができます。

Policy as Codeを適用することには、以下の重要な利点があります。

  • セキュリティ・テストのスピードアップ。ポリシー適用の自動化により、手動による介在なしに、必要に応じてセキュリティ・テストをトリガできます。
  • 効率の向上。手動のポリシー適用をなくすことで、ポリシーを動的に更新および共有し、テストに時間がかかる要因となる不要な人手の介在を排除することが可能になります。
  • バージョン管理と可視性向上を支援。運用の状況を簡単に表示でき、自動バージョン管理により、新しいバージョニングに関連する問題が発生した場合の更新または更新の削除をシームレスに行うことができます。
  • ミスを減らし、検証を可能にする。ポリシー設定の自動化により、人手の介在によって引き起こされる誤りを排除します。さらに、ポリシーをコードにより記述すると、検証アクティビティの実行を簡素化して高精度を確保することができます。


Policy as CodeによりDevSecOpsチームをサポートするしくみ

最近の組織は多様なASTツールを使用しており、セキュリティ・スキャンの結果が得られるまでに数日かかる場合もあります。そのため、ますます加速する開発のスピードについていくことができるアプリケーション・セキュリティ・テスト・ツールとプラクティスが必要になります。

さらに、ソフトウェアがポリシーに準拠し、セキュアであることが確認できれば、ソフトウェア開発ライフサイクル(SDLC)の早期の開発段階でソフトウェアのリスクを把握することができます。しかし、統合的なテスト戦略が策定されていなければ、結局、手動でのスキャンとコード・レビューを必要とし、セキュリティの全体的な衛生状態は一貫性のないものになります。

さらに、既存のパイプラインで使われている様々なツールを統合する作業は複雑で時間がかかる可能性があり、既存のビルドおよびリリース・パイプラインを破壊するリスクを高める要因にもなります。ASTツールと既存のソフトウェア・デリバリー追跡システムの統合や、リスクに基づくセキュリティ・アクティビティの優先順位付けを簡素化できなければ、セキュリティおよび開発のリソースはすぐに余力がなくなる可能性があります。

ツール環境に伴うこれらの課題によって、多くの場合、セキュリティのハードルが高まり、無関係なテストが行われて、開発生産性とのタイムラグが大きくなります。セキュリティ・アナリストはサイロ化されたツールや手作業でのレビューにより開発スピードに追いつくことが困難になり、プロセス、意思決定、重要な調査結果を大局的な視点で可視化する手段の欠如とテスト不足により、悪用される可能性がある高コストなソフトウェアの欠陥が検出されないまま残る可能性があります。 

Policy as Codeは、これらのDevSecOpsの障害を克服するために有効な以下の機能を備えています。

  • 開発工程での継続的なフィードバック・ループの提供。API統合によりポリシーを適用し、JiraチケットまたはSlack通知を通じて重要なセキュリティ・アクティビティを開発者に直接伝達できます。

  • 意思決定の自動化。アプリケーション・リスク、コードの変更、依存関係に対して事前に定義されたしきい値に基づいてセキュリティ・イベントをトリガする条件をコード化することで、アジャイル環境向けにAppSecを標準化する際の摩擦を大幅に軽減できます。Policy as Codeにより、テストの必要性の有無と適用するテストの内容を決定するために通常必要となる手動の介在が不要になります。


シノプシスの支援方法

包括的なASPMソリューションを提供するBlack DuckのSoftware Risk Managerでは、次のことが可能です。

  • テスト実行と脆弱性管理のパラメータを指定するセキュリティ・ポリシーを定義および適用することにより、ポリシー駆動型のAppSecを大規模に実装
  • 異なるアプリケーション・セキュリティ・テスト・ツール間でユーザー・エクスペリエンスを統合し、リソースの調達と運用を簡素化するとともに、チーム間のツール統合を改善
  • プロジェクト、チーム、ツール全体で脆弱性の報告と管理を統合し、正規化、重複排除、優先順位付けを実行してセキュリティ・リスクの全体像を提示
  • 開発ワークフローにおけるAppSecの統合とオーケストレーション(調整)を簡素化して、セキュリティ・ワークフローを既存の開発ツールチェーンに統合し、既存のプロジェクトとビルドの迅速なオンボーディングを実現
  • 一元化された統合ソリューションでコア・アプリケーション・セキュリティ・テストを最適化し、コア・アプリケーション・セキュリティ・テスト機能の効率的な展開、管理、レポート作成を実現