Parasoft CERT C++ Compliance 拡張は、CERT C++ コーディング スタンダード ガイドラインへの準拠を証明できる、DTP インフラストラクチャのアセットの集合です。この拡張は Security Compliance Pack の一部として提供されています。Security Compliance Pack のダウンロードおよびライセンス情報については、Parasoft 製品テクニカル サポート センターまでお問い合わせください。
このセクションの内容:
CERT C++ コーディング スタンダードは、ソフトウェア システムの安全性、信頼性、セキュリティの向上を目的に CERT Coordination Center によって開発されました。CERT コーディング スタンダードは「ルール」と「レコメンデーション」から構成され、一連のカテゴリに分類されます。ルールは、標準に従うための要件を提供します。一方、レコメンデーションはソフトウェア システムの安全性、信頼性、セキュリティを改善するガイダンスの提供を目的とします。
ルールとレコメンデーションを総称して「ガイドライン」と呼びます。CERT C++ Secure Coding Standard のガイドラインは、Common Weakness Enumeration (CWE) のエントリと相互参照されます。CWE のガイドラインを満たさないプログラミング パターンは「弱点」と呼ばれます。
リスク解析の観点から言うと、CERT は弱点を定量化するために 3 種類のメトリクスを使用します。
これらのメトリクスは、違反を次の 3 レベルに優先順位付けするために使用されます: L1 (最優先)、L2、および L3。CERT C++ Compliance 拡張は、CERT C++ の優先順位、ガイドライン、種類、およびガイドライン カテゴリに従って静的解析違反を表示するよう、DTP 実装を構成します。
CERT C++ コーディング スタンダードの詳細については https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682 を参照してください。
フロー解析ライセンスが有効化された C/C++test (Standard または Professional)詳細については「Security Compliance Pack」を参照してください。
SEI CERT C++ Rules テスト コンフィギュレーションを使って C/C++test でコードを解析し、違反を DTP にレポートします。ローカル テスト コンフィギュレーションまたは Security Compliance Pack に同梱のテスト コンフィギュレーションを使用するように C/C++test を設定できます。このテスト コンフィギュレーションと rulemap.xml ファイルは、CERT C++ ガイドラインに従って違反をレポートする解析ルールを構成します。
DTP は、Parasoft 静的解析ルールにマッピングされているすべての CERT C++ ガイドラインに対して 100% の準拠を報告します。 |
Parasoft CERT C++ Compliance アーティファクトは、CERT C++ の準拠を証明するために必要なドキュメントの作成に役立ちます。パッケージには以下のアーティファクトが含まれます。
通常、Parasoft の静的解析およびフロー解析ルールは、カテゴリ (たとえばバグの可能性、相互運用性など) と 1 から 5 の重要度に従って違反をレポートします。CERT C++ ガイドライン違反としてコード解析違反を表示するために、DTP はルール マップ ファイルを必要とします。ルール マップ ファイルは、CERT C++ ガイドラインに従って違反をレポートするために Parasoft ルールを再編成します。さらに、コード解析ツール (C/C++test) は再マッピングされた CERT C++ ルールに関連するルールだけを実行するテスト コンフィギュレーション ファイルを必要とします。これらのファイルは C/C++test に同梱されています。 |
CERT C++ Compliance 拡張に同梱の以下の構成ファイルは、CERT C++ に合わせたコンプライアンス カテゴリを DTP インターフェイスで提供します。
Parasoft 静的解析/テスト ツールまたは Security Compliance Pack に同梱のテスト コンフィギュレーションを実行するように C/C++test を設定できます。詳細については C/C++test のドキュメントを参照してください。Security Compliance Pack には以下のテスト コンフィギュレーションが含まれています。
Security Compliance Pack をインストールし、CERT compliance アーティファクトをデプロイしたら、次のダッシュボードテンプレートを使用して、CERT 関連のデータを表示するように構成されたウィジェットをすばやく追加できます。
ダッシュボード テンプレートの詳細については「カスタム ダッシュボード テンプレート」を参照してください。
これは、インストールして Extension Designer にデプロイする必要がある DTP ワークフローです。DTP のデータ処理機能を拡張して、CERT C++ 固有のダッシュボード ウィジェットとレポートを生成します。コンプライアンス ステータスを追跡し、ガイドラインの徹底、逸脱、およびルールの再分類を文書化するのに役立ちます。
プロファイルは、DTP インフラストラクチャでさまざまな機能を提供します。たとえば、拡張によって実行されるカスタム計算の入力や、コンプライアンス レポートのためのデータなどです。プロファイルはモデルからその構造を取ります。これはフィールド、ヘッダー、あるいはプロファイルで使用される他のコンポーネントを定義します。DTP Enterprise Pack のプロファイルの詳細については「モデル プロファイルの使用」を参照してください。CERT C++ アーティファクトには以下のプロファイルが含まれています。
Parasoft ルールと CERT ガイドラインとの関連を示す PDF が次の場所にあります: <PACK>/rules/cpptest
ディレクトリ
このファイルは拡張のコンテンツを指定します。
CERT C++ Compliance アーティファクトは、Security Compliance Pack の一部としてインストールされます (操作手順については「インストール」を参照してください)。アーティファクトをインストールした後、DTP 環境にアセットをデプロイする必要があります。
すでに CERT C Compliance または CERT for Java Compliance アーティファクトを使用している場合、このステップを実行する必要はありません。これらのすべてのアーティファクトが同じ DTP ワークフローを使用します。 |
これで、CERT C++ Compliance ダッシュボードとウィジェットを追加することができます。
CERT C++ ダッシュボード テンプレートは、Security Compliance Pack をインストールした後に利用可能になります。ダッシュボード テンプレートが表示されない場合、DTP を再起動してください (「DTP サービスの停止」および「DTP アプリケーションの開始」を参照)。
SEI CERT C++ テスト コンフィギュレーションを使ってプロジェクトに対して C/C++test を実行したことがある場合、ダッシュボードを追加するとすぐに、ほとんどのウィジェットがデータを表示します。これらのウィジェットの使用をすぐに開始してデータを確認して作業できるため、コンプライアンス ゴールを追跡するのに役立ちます (「CERT C++ Compliance ウィジェット」を参照)。
既存のダッシュボードに CERT C++ ウィジェットを手動で追加できます。ダッシュボードにウィジェットを追加する方法については「ウィジェットの追加」を参照してください。アーティファクトをデプロイした後、ウィジェットが SEI CERT カテゴリに表示されます。
以下の設定を使用できます。
タイトル | [タイトル] フィールドでウィジェット名を変更できます。この設定はすべてのウィジェットで可能です。 |
---|---|
フィルター | メニューから特定のフィルターまたはダッシュボード設定を選択します。詳細については「フィルターの設定」を参照してください。この設定はすべてのウィジェットで可能です。 |
ターゲット ビルド | メニューから特定のビルドを選択します。ダッシュボード全体について選択されたビルドがデフォルトで選択されます。ビルドの詳細については「ビルド管理の使用」を参照してください。この設定はすべてのウィジェットで可能です。 |
種類 | このルールはウィジェットで表示するガイドラインの種類を指定します。メニューから [ルール]、[レコメンデーション]、または [すべて] を選択します。ガイドラインの種類の詳細については「背景」を参照してください。この設定は以下のウィジェットで利用可能です:
|
レベル | このルールはウィジェットで表示する優先度レベルを指定します。メニューから L1、L2、または L3 を選択します。ガイドラインの優先度の詳細については「背景」を参照してください。この設定は以下のウィジェットで利用可能です:
|
コンプライアンス プロファイル | データの表示に使用するコンプライアンス プロファイルを指定します。ほとんどの場合、これは拡張に同梱されたデフォルト プロファイルにするべきです (「CERT C++ Compliance プロファイル」を参照)。この設定はすべてのウィジェットで可能です。 |
以下のウィジェットは CERT C++ Compliance DTP ワークフローに同梱されており、CERT C++ への準拠を達成するために有用です。
このウィジェットは、プロジェクトの CERT コンプライアンス ステータスを表示します。
このウィジェットは以下のステータスを表示できます:
デフォルトでは、ウィジェットにはルールと推奨事項、およびすべての優先度レベルが表示されます。ウィジェットの複数のインスタンスを追加し、さまざまな組み合わせを構成して、コンプライアンス ステータスの強力なビューを作成できます。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。
このウィジェットは、CERT のカテゴリごとに、静的解析違反が集中している箇所を表示します。コンプライアンス ステータスの概要と適用可能な逸脱がツールチップに表示されます。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。
このウィジェットは、全般的なコンプライアンス ステータスだけでなく、各 CERT レベルのコンプライアンス ステータスも表示します。現在のコンプライアンス ステータスを表示するために、このウィジェットの複数のインスタンスを追加し、異なるプロファイルを使用するように設定できます。たとえば、無効化したガイドラインのプロファイルなどです。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。
許容範囲と見なされる逸脱と違反に対してコードは準拠できます。逸脱の詳細については「Deviation Report」を参照してください。
指定のビルドに、プロファイル に記述された Parasoft コード解析ルールが含まれていなかった場合、または許容できない違反がレポートされた場合、ステータスは Not Compliant に設定されます。すべてのルールが C/C++test で有効化されていることを確認し、解析を再実行してください。
このウィジェットは、CERT への準拠の達成度をパーセントで表示します。達成度は プロファイル で推進されるガイドラインの数に基づきます。CERT C++ ダッシュボードには、このウィジェットの 3 個のインスタンス (レベルごとに 1 つ) があります。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。
このウィジェットは、優先度レベルごとに、特定のルールまたはレコメンデーションのコンプライアンス ステータスを表示します。
このウィジェットのインスタンスを複数追加して、異なる種類/優先度の組み合わせを設定できます。異なる視点からコンプライアンス ステータスを理解するのに役立ちます。円グラフには、最大で 4 個まで、選択したカテゴリについて異なるガイドライン ステータスを表示できます:
緑 | 選択した種類とレベルについて、コードが準拠しているガイドライン。 |
黄 | コードが逸脱しているが、まだ準拠していると見なされるガイドライン。 逸脱とは、Parasoft 静的解析ルールに準じてガイドラインに従っていないが、ソフトウェアの安全性に影響しないため許容範囲と見なされる状態のことです。逸脱は、抑制された Parasoft 静的解析ルールを表します。 |
オレンジ | ガイドラインを推進する静的解析ルールに違反があるが、コードが準拠していると見なされるガイドライン。このステータスになるのはレコメンデーションだけです。 |
赤 | コードが準拠していないガイドライン。 |
以下の操作を行うことができます。
このウィジェットは、種類と優先度レベルごとに、静的解析違反が集中している箇所を表示します。タイルは優先度レベルで色分けされます:
違反を検出した Parasoft ルールも表示されます。タイルの大きさは、ルールごとにレポートされた静的解析違反の数に比例します。
このウィジェットは、モデル プロファイル で確立された階層を利用して、CERT のルール、レコメンデーション、および優先度に Parasoft ルールを相関させます。タイル上にマウス ポインタを置くと、各ルール/ガイドライン/カテゴリに関連する違反の数が表示されます。
違反エクスプローラー で違反を見るには、ルールをクリックします。
このウィジェットは、DTP に付属する標準の カテゴリ別コンプライアンス ウィジェットの実装です。コンプライアンスに準拠するルールの数と割合を、ルールのカテゴリ別に表示します。
表中の項目をクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。
このウィジェットは、DTP に付属する標準の カテゴリ - 上位 5 表 ウィジェットの実装です。最も違反の多い CERT ガイドライン カテゴリを上位 5 つ表示します。
[Name] 列のリンクまたは [more...] リンクをクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。
このウィジェットは、DTP に付属する標準の カテゴリ - 上位 5 表 ウィジェットの実装です。最も違反の多い CERT ガイドラインを上位 5 つ表示します。
[Name] 列のリンクまたは [more...] リンクをクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。
このウィジェットは、DTP に付属する標準の 違反がないルール - サマリー ウィジェットの実装です。このウィジェットは以下の情報を表示します。
ウィジェットをクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。
CERT Compliance Report は、CERT コンプライアンス ステータスの概要を提供し、準拠を証明するための主要文書の役割を果たします。
このレポートは以下のステータスを表示できます:
以下の操作を行うことができます。
CERT Compliance Report には、以下の補助的なレポートが含まれます:
Conformance Testing PlanConformance Testing Plan は、コンプライアンス プロファイルで指定された CERT ガイドラインを Parasoft 静的解析ルールと相互参照します。プロファイルを構成 することによって、プロジェクトの目標を達成するために重要度、可能性、修正コスト、および他の値を変更できます。ガイドラインをクリックすると、CERT の Web サイトにある CERT ドキュメントが表示されます。 Deviation Report標準からの逸脱が文書化され、ソフトウェアの安全性に影響しない限り、コードは違反があっても CERT 準拠であることができます。逸脱とは、コード中で直接抑制されたコード解析ルール、または DTP の違反エクスプローラーで抑制されたコード解析ルールです。コード中で違反を抑制する方法については、C/C++test のドキュメントを参照してください。DTP で違反を抑制する方法については、違反エクスプローラーのドキュメントの「違反の抑制」を参照してください。 CERT Compliance Report で Deviation Report リンクをクリックすると、Deviation Report が開きます。 Deviations Report は、すべてのガイドラインの ID とヘッダーを表示しますが、抑制されたガイドラインには追加情報を表示します。以下の操作を行うことができます。
ビルド監査レポートビルド監査レポート は DTP のネイティブ機能です。このレポートは、コード解析違反の概要を表示するほか、ビルドに関連したテスト結果とカバレッジ情報も表示します。また、データのアーカイブをダウンロードすることもできます。これは、定期的な監査で CERT への準拠を証明するために使用できるアーティファクトです。 アーカイブをダウンロードするには、ビルドがロックされていなければなりません。このレポートの詳細については「ビルド監査レポート」を参照してください。 |
Security Compliance Pack には、コア CERT C++ ワークフローに関連付けられたプロファイルが含まれています。
CERT C++ Compliance DTP ワークフローにはデフォルトの プロファイル が同梱されており、このプロファイルには CERT コンプライアンス レポート を生成するために必要な情報が含まれています。デフォルト プロファイルは、CERT ガイドラインと Parasoft コード解析ルールの相関関係を示し、通常のほとんどの使用に適しています。
デフォルトの CERT C++ プロファイルを変更しないことを強く推奨します。なぜなら、デフォルト プロファイルの変更は監査目的で生成するレポートに影響するからです。 |
必要に応じて、デフォルト プロファイルの複製を作成し、ソフトウェアの品質とコンプライアンスの目標を達成するために、Parasoft コード解析ルールと CERT C++ ガイドラインの相関関係を変更できます。