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」を参照してください。

基本的な操作手順

  1. Security Compliance Pack を DTP Extension Designer にインストールします。 
  2. DTP 環境に CERT C++ Compliance アーティファクトをデプロイします。この操作は CERT C++ Compliance 拡張のアセット もデプロイします。
  3. SEI CERT C++ Rules テスト コンフィギュレーションを使って C++test でコードを解析し、違反を DTP にレポートします。ローカル テスト コンフィギュレーションまたは Security Compliance Pack に同梱のテスト コンフィギュレーションを使用するように C++test を設定できます。このテスト コンフィギュレーションと rulemap.xml ファイルは、CERT C++ ガイドラインに従って違反をレポートする解析ルールを構成します。

  4. CERT C++ Compliance ダッシュボードとウィジェットを DTP インターフェイスに追加します。このダッシュボードは、CERT C++ ガイドラインのコンテキストでレポートされた違反を表示します。
  5. ウィジェットとレポートを利用して、修正が必要なコードを特定したり、監査のためにレポートを出力したりします。

100% 準拠の達成

DTP は、Parasoft 静的解析ルールにマッピングされているすべての CERT C++ ガイドラインに対して 100% の準拠を報告します。

CERT C++ Compliance 拡張アセット

Parasoft CERT C++ Compliance アーティファクトは、CERT C++ の準拠を証明するために必要なドキュメントの作成に役立ちます。パッケージには以下のアーティファクトが含まれます。

ルール マップとテスト コンフィギュレーション

通常、Parasoft の静的解析およびフロー解析ルールは、カテゴリ (バグの可能性、相互運用性、etc.) と 1 から 5 の重要度に従って違反をレポートします。CERT C++ ガイドライン違反としてコード解析違反を表示するために、DTP はルール マップ ファイルを必要とします。ルール マップ ファイルは、CERT C++ ガイドラインに従って違反をレポートするために Parasoft ルールを再編成します。さらに、コード解析ツール (C++test) は再マッピングされた CERT C++ ルールに関連するルールだけを実行するテスト コンフィギュレーション ファイルを必要とします。これらのファイルは C++test に同梱されています。

カテゴリとガイドラインの定義ファイル

CERT C++ Compliance 拡張に同梱の以下の構成ファイルは、CERT C++ に合わせたコンプライアンス カテゴリを DTP インターフェイスで提供します。

  • CERT_CPP-Category.xml
  • CERT_CPP-Guideline.xml
  • CERT_CPP-Priority.xml

テスト コンフィギュレーション

Parasoft 静的解析/テスト ツールまたは Security Compliance Pack に同梱のテスト コンフィギュレーションを実行するように C++test を設定できます。詳細については C++test のドキュメントを参照してください。Security Compliance Pack には以下のテスト コンフィギュレーションが含まれています。

  • SEI CERT C++ Rules

ダッシュボード

Security Compliance Pack をインストールし、CERT compliance アーティファクトをデプロイしたら、次のダッシュボードテンプレートを使用して、CERT 関連のデータを表示するように構成されたウィジェットをすばやく追加できます。

  • SEI_CERT_CPP_Compliance.json

ダッシュボード テンプレートの詳細については「カスタム ダッシュボード テンプレート」を参照してください。

CERT Compliance.json

これは、インストールして Extension Designer にデプロイする必要がある DTP ワークフローです。DTP のデータ処理機能を拡張して、CERT C++ 固有のダッシュボード ウィジェットとレポートを生成します。コンプライアンス ステータスを追跡し、ガイドラインの徹底、逸脱、およびルールの再分類を文書化するのに役立ちます。

モデルとプロファイル

プロファイルは、DTP インフラストラクチャでさまざまな機能を提供します。たとえば、拡張によって実行されるカスタム計算の入力や、コンプライアンス レポートのためのデータなどです。プロファイルはモデルからその構造を取ります。これはフィールド、ヘッダー、あるいはプロファイルで使用される他のコンポーネントを定義します。DTP Enterprise Pack のプロファイルの詳細については「モデル プロファイルの使用」を参照してください。CERT C++ アーティファクトには以下のプロファイルが含まれています。    

  • cert-compliance.json: このモデル ファイルは、CERT C および CERT C++ のプロファイルがどのようにデータを表示するかを指定します。 
  • cert-cpp.json: これは、CERT Compliance.json モデルに従ってデータを表示するデフォルト プロファイルです。コンプライアンス監査レポートを生成するには、このプロファイルを有効化する必要があります。
  • cert-cpp-likelihood.json: このプロファイルは、重要業績評価指標 (KPI) の計算のためのメトリクス情報を提供します。KPI.json モデルに従ってデータを表示します。
  • cert-cpp-remediation-cost.json: このプロファイルは、KPI の計算のためのメトリクス情報を提供します。KPI.json モデルに従ってデータを表示します。

KPI.json

このプロファイルは、CERT C++ ガイドラインに関連するメトリクス情報をメトリクス ウィジェットが表示できるよう、Key Performance Indicator アーティファクトを拡張します。このプロファイルは、cert-cpp-likelihood.json および cert-cpp-remediation-cost.json プロファイルによって計算されたデータを表示します。

Key Performance Indicator 拡張が必要

KPI アセットによって有効化されたメトリクス計測を活用するには、Key Performance Indicator アーティファクトをインストールおよびデプロイします。

クロス リファレンス用 PDF

Parasoft ルールと CERT ガイドラインとの関連を示す PDF が次の場所にあります: <PACK>/rules/cpptest ディレクトリ  

package.json

このファイルは拡張のコンテンツを指定します。

CERT C++ Compliance アセットのデプロイ

CERT C++ Compliance アーティファクトは、Security Compliance Pack の一部としてインストールされます (操作手順については「インストール」を参照してください)。アーティファクトをインストールした後、DTP 環境にアセットをデプロイする必要があります。 

CERT C、CERT C++、および CERT for Java

すでに CERT C Compliance または CERT for Java Compliance アーティファクトを使用している場合、このステップを実行する必要はありません。これらのすべてのアーティファクトが同じ DTP ワークフローを使用します。

  1. DTP の設定メニュー (歯車のアイコン) から [Extension Designer] を選択します。
  2. [サービス] タブをクリックし、DTP ワークフロー サービス カテゴリを選択します。アセットはどのサービス カテゴリにもデプロイできますが、Parasoft のアセットのカテゴライズに合うように DTP ワークフロー カテゴリを使用することを推奨します。[カテゴリの追加] をクリックして独自のサービス カテゴリを作成することもできます (詳細については「サービスの使用」を参照)。
     
  3. 既存のサービスにアーティファクトをデプロイするか、新しいサービスを追加できます。サービスにデプロイしたアーティファクトの数は、全般的なパフォーマンスに影響します。詳細については「Extension Designer のベスト プラクティス」を参照してください。既存のサービスを選択し、ステップ 5 まで継続するか、または  [サービスの追加] をクリックします。 
  4. サービスの名前を指定して [確認] をクリックします。
  5. タブ化されたインターフェイスは、サービス内でアーティファクトを配置するのに役立ちます。複数のタブにまたがってアーティファクトを配置してもシステムのパフォーマンスには影響しません。タブをクリックし (または [+] ボタンをクリックして新しいタブを追加し)、縦の三点メニューから [読み込み] を選択します。
  6. [Local] > [Flows] > [Workflows] > [Security] > [CERT Compliance] を選択し、[読み込み] をクリックします。
  7. 空いている任意の箇所をクリックしてサービスにアーティファクトを追加します。 
  8. [デプロイ] をクリックし、DTP ダッシュボードに戻ります。
  9. ブラウザーを更新します。

これで、CERT C++ Compliance ダッシュボードとウィジェットを追加することができます。 

CERT C++ Compliance ダッシュボードの追加

CERT C++ ダッシュボード テンプレートは、Security Compliance Pack をインストールした後に利用可能になります。ダッシュボード テンプレートが表示されない場合、DTP を再起動してください (「DTP サービスの停止」および「DTP アプリケーションの開始」を参照)。   

  1. DTP ツールバーの [ダッシュボードの追加] をクリックして名前を指定します。 
  2. (オプション) 以下の情報を指定して、ダッシュボードのデフォルト ビューを設定できます。
    1. [フィルター] ドロップダウン メニューで、プロジェクトに関連するフィルターを選択します。フィルターは、DTP に格納されたデータをカスタマイズして表示できるラン コンフィギュレーション セットを表します。詳細については「DTP の概念」を参照してください。
    2. [期間] ドロップダウン メニューで時間の範囲を指定します。 
    3. [ベースライン ビルド] および [ターゲット ビルド] ドロップダウン メニューで、ビルド範囲を指定します。 
  3. [テンプレートからダッシュボードを作成] オプションを有効にし、SEI CERT C++ Compliance テンプレートを選択します。
  4. [作成] をクリックしてダッシュボードの追加を完了します。

SEI CERT C++ テスト コンフィギュレーションを使ってプロジェクトに対して C++test を実行したことがある場合、ダッシュボードを追加するとすぐに、ほとんどのウィジェットがデータを表示します。これらのウィジェットの使用をすぐに開始してデータを確認して作業できるため、コンプライアンス ゴールを追跡するのに役立ちます (「CERT C++ Compliance ウィジェット」を参照)。ただし、Remediation Cost および Likelihood Score ウィジェットを使用するには、さらに操作が必要です。これらは KPI 拡張が実行する計算に依存します。詳細については「Enabling the CERT KPI Widgets」を参照してください。

手動による CERT C++ ウィジェットの追加

既存のダッシュボードに CERT C++ ウィジェットを手動で追加できます。ダッシュボードにウィジェットを追加する方法については「ウィジェットの追加」を参照してください。アーティファクトをデプロイした後、ウィジェットが SEI CERT カテゴリに表示されます。  

以下の設定を使用できます。

タイトル[タイトル] フィールドでウィジェット名を変更できます。この設定はすべてのウィジェットで可能です。
フィルタードロップダウン メニューから特定のフィルターまたはダッシュボード設定を選択します。詳細については「フィルターの作成と管理」を参照してください。この設定はすべてのウィジェットで可能です。
ターゲット ビルドドロップダウン メニューから特定のビルドを選択します。ダッシュボード全体について選択されたビルドがデフォルトで選択されます。ビルドの詳細については「ビルド管理の使用」を参照してください。この設定はすべてのウィジェットで可能です。 
種類

このルールはウィジェットで表示するガイドラインの種類を指定します。ドロップダウン メニューから [ルール]、[レコメンデーション]、または [すべて] を選択します。ガイドラインの種類の詳細については「Background」を参照してください。この設定は以下のウィジェットで利用可能です:

  • CERT Compliance - Guidelines by Status
  • CERT Levels - Target
  • CERT Violations by Category - TreeMap
レベル

このルールはウィジェットで表示する優先度レベルを指定します。ドロップダウン メニューから L1、L2、または L3 を選択します。ガイドラインの優先度の詳細については「Background」を参照してください。この設定は以下のウィジェットで利用可能です:

  • CERT Compliance - Guideline by Status
  • CERT Compliance - Percentage
  • CERT Violations by Category - TreeMap
コンプライアンス プロファイルデータの表示に使用するコンプライアンス プロファイルを指定します。ほとんどの場合、これは拡張に同梱されたデフォルト プロファイルにするべきです (「CERT C++ Compliance Profile」を参照)。この設定はすべてのウィジェットで可能です。

CERT KPI ウィジェットの有効化

Remediation Cost および Likelihood Score ウィジェットは、CERT 固有のメトリクス データを表すように設定された、ネイティブの Metrics - Summary DTP ウィジェットの実装です。KPI 拡張は、SEI CERT C++ Remediation Cost および SEI CERT C++ Likelihood KPI プロファイルに従って、DTP に送られたメトリクス データに対してカスタム計算を実行します。処理されたデータはウィジェットでレポートされます。 

これらのウィジェットを使用するには、KPI 拡張をデプロイおよび実行しなければなりません。  ビルドが静的解析データとメトリクス データの両方を持てるよう、Metrics テスト コンフィギュレーションを使って同じビルド ID で C++test を実行する必要もあります。ビルド ID の設定 Metrics テスト コンフィギュレーションの実行の詳細については、C++test のドキュメントを参照してください。  

  1. DTP の設定メニュー (歯車のアイコン) から [Extension Designer] を選択し、[サービス] タブをクリックします。 
  2. 拡張のためのサービス カテゴリとサービスを選択します。KPI 拡張は DTP ワークフロー カテゴリにデプロイすることを推奨します。
  3. 縦の三点メニューを開き、[読み込み] > [Local] > [Workflows] > [Security] > [Key Performance Indicator] を選択します。
  4. 空いている任意の箇所をクリックしてサービス タブにフローをドロップし、[デプロイ] をクリックします。
  5. コンプライアンス カテゴリ (DTP ワークフロー) をクリックし、サービスを展開して利用できるエンドポイントを表示します。  
  6. Key Performance Indicator セクションを展開し、エンドポイントをコピーします。Extension Designer はエンドポイント用の 2 種類のパスを表示します。API Endpoint Path は、すべての API ディレクトリを含みます。ほとんどの場合にエンドポイントを実行するために使用できます。Direct Endpoint Path は、サーバー上のエンドポイントへの直接のパスであり、API エンドポイント パスがブロックされていたりアクセス不能である場合 (たとえば認証を必要とするサード パーティとの統合などの場合) に使用できます。 
  7. 必須パラメーターと共に、REST リクエストをエンドポイントに送ります。ブラウザーでリクエストを実行したり、cURL コマンドを使用したり、リクエストをスクリプトに追加したりすることができます。以下の表で必須パラメーターについて説明します。

filterId

計算を実行するプロジェクトのフィルター ID。ダッシュボードの URL から素早くフィルター ID を取得できます。
 

また、DTP のフィルター設定からフィルター ID を取得することもできます (フィルターの作成と管理 を参照)。

profile計算に使用するルールと重み付けのプロファイル名。
buildId計算を実行するビルド ID。ビルド ID を指定しない場合、このパラメーターのデフォルトは最新ビルドです。
サンプル API コール URL
http://framemaker:8314/categories/5ae39f928550880f5026fc80?filterId=3&profile=SEI%20CERT%20C%2B%2B%20Likelihood
成功のレスポンスの例
{
    {
        success: {
            title: "KPI",
            message: "Calculation has successfully started for filter 'docs' using profile 'SEI CERT C++ Likelihood'."
        }
    }
}

メトリクス関連の計算は、実行に時間を要する処理であり、対象データの量によっては数分かかる場合もあります。計算が完了した後、(すでにダッシュボードにある場合) ウィジェットをリフレッシュしてデータを確認します。KPI 拡張は 1 回だけデプロイする必要があります。しかし、API はプロセス (すなわち SEI CERT C++ Likelihood および SEI CERT C++ Remediation Cost) ごとに別個に呼び出さなければなりません。

メトリクスを別の表示で確認したい場合、ネイティブの Metrics - Summary DTP ウィジェットをダッシュボードに追加し、SEI CERT C++ Likelihood および SEI CERT C++ Remediation Cost メトリクスを使用するように設定できます。集約値も設定できます。 

ウィジェットをクリックして 単一メトリクスの概要 レポート を表示できます。 

CERT C++ Compliance ウィジェット 

以下のウィジェットは CERT C++ Compliance DTP ワークフローに同梱されており、CERT C++ への準拠を達成するために有用です。

CERT Compliance - Status

このウィジェットは、プロジェクトの CERT コンプライアンス ステータスを表示します。  

デフォルトでは、ウィジェットにはルールと推奨事項、およびすべての優先度レベルが表示されます。ウィジェットの複数のインスタンスを追加し、さまざまな組み合わせを構成して、コンプライアンス ステータスの強力なビューを作成できます。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。 

CERT Levels - Target

このウィジェットは、CERT のカテゴリごとに、静的解析違反が集中している箇所を表示します。コンプライアンス ステータスの概要と適用可能な逸脱がツールチップに表示されます。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。

CERT Compliance - Status

このウィジェットは、全般的なコンプライアンス ステータスだけでなく、各 CERT レベルのコンプライアンス ステータスも表示します。現在のコンプライアンス ステータスを表示するために、このウィジェットの複数のインスタンスを追加し、異なるプロファイルを使用するように設定できます。たとえば、無効化したガイドラインのプロファイルなどです。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。  

許容範囲と見なされる逸脱と違反に対してコードは準拠できます。逸脱の詳細については「Deviation Report」を参照してください。

指定のビルドに、プロファイル に記述された Parasoft コード解析ルールが含まれていなかった場合、または許容できない違反がレポートされた場合、ステータスは Not Compliant に設定されます。すべてのルールが C++test で有効化されていることを確認し、解析を再実行してください。

CERT Compliance - Percentage

このウィジェットは、CERT への準拠の達成度をパーセントで表示します。達成度は プロファイル で推進されるガイドラインの数に基づきます。CERT C++ ダッシュボードには、このウィジェットの 3 個のインスタンス (レベルごとに 1 つ) があります。ウィジェットをクリックすると、CERT C++ Compliance Report が開きます。 

CERT Compliance - Guidelines by Status

このウィジェットは、優先度レベルごとに、特定のルールまたはレコメンデーションのコンプライアンス ステータスを表示します。

このウィジェットのインスタンスを複数追加して、異なる種類/優先度の組み合わせを設定できます。異なる視点からコンプライアンス ステータスを理解するのに役立ちます。円グラフには、最大で 4 個まで、選択したカテゴリについて異なるガイドライン ステータスを表示できます:

選択した種類とレベルについて、コードが準拠しているガイドライン。

コードが逸脱しているが、まだ準拠していると見なされるガイドライン。

逸脱とは、Parasoft 静的解析ルールに準じてガイドラインに従っていないが、ソフトウェアの安全性に影響しないため許容範囲と見なされる状態のことです。逸脱は、抑制された Parasoft 静的解析ルールを表します。

オレンジ

ガイドラインを推進する静的解析ルールに違反があるが、コードが準拠していると見なされるガイドライン。このステータスになるのはレコメンデーションだけです。

コードが準拠していないガイドライン。

以下の操作を行うことができます。

  • 円グラフ上にマウス ポインタを置くと、詳細が表示されます。
  • グラフ セクションをクリックすると、種類、優先度、およびコンプライアンス ステータスでフィルタリングされた CERT C++ Compliance Report が開きます。
  • 違反の数をクリックすると、種類、優先度、およびコンプライアンス ステータスでフィルタリングされた CERT C++ Compliance Report が開きます。
  • 逸脱の数をクリックすると、種類と優先度でフィルタリングされた Deviation Report が開きます。

CERT Violations by Category - TreeMap Widget

このウィジェットは、種類と優先度レベルごとに、静的解析違反が集中している箇所を表示します。タイルは優先度レベルで色分けされます:

  • 赤いタイルは L1 の違反を表します。
  • 黄色のタイルは L2 の違反を表します。 
  • 緑のタイルは L3 の違反を表します。

違反を検出した Parasoft ルールも表示されます。タイルの大きさは、ルールごとにレポートされた静的解析違反の数に比例します。 

  

このウィジェットは、モデル プロファイル で確立された階層を利用して、CERT のルール、レコメンデーション、および優先度に Parasoft ルールを相関させます。タイル上にマウス ポインタを置くと、各ルール-ガイドライン-カテゴリに関連する違反の数が表示されます。

違反エクスプローラー で違反を見るには、ルールをクリックします。

CERT Compliance by Priority

このウィジェットは、DTP に付属する標準の Compliance By Category ウィジェットの実装です。コンプライアンスに準拠するルールの数と割合を、ルールのカテゴリ別に表示します。

表中の項目をクリックすると、Violations by Compliance Category レポートが表示されます。

Top 5 CERT Categories

このウィジェットは、DTP に付属する標準の Categories - Top 5 Table ウィジェットの実装です。最も違反の多い CERT ガイドライン カテゴリを上位 5 つ表示します。

[Name] 列のリンクまたは [more...] リンクをクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。

Top 5 CERT Guidelines

このウィジェットは、DTP に付属する標準の Categories - Top 5 Table ウィジェットの実装です。最も違反の多い CERT ガイドラインを上位 5 つ表示します。

[Name] 列のリンクまたは [more...] リンクをクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。

CERT Analysis Compliance

このウィジェットは、DTP に付属する標準の Rules in Compliance - Summary ウィジェットの実装です。このウィジェットは以下の情報を表示します。

  • 選択したコンプライアンス基準について、コード解析中に何個の静的解析ルールが有効だったか。
  • 何個の違反がレポートされたか。
  • 違反をレポートしなかったルールの全体的な割合。
  • ベースライン ビルドからターゲット ビルドにおける、違反の数の変化 (割合)。(当てはまる場合)

ウィジェットをクリックすると、コンプライアンス カテゴリ別の違反 レポートが表示されます。

CERT C++ Compliance Report

CERT Compliance Report は、CERT コンプライアンス ステータスの概要を提供し、準拠を証明するための主要文書の役割を果たします。

以下の操作を行うことができます。

  • ドロップダウン メニューを使って以下の条件でソートします:
    • ガイドラインの種類: ルール、レコメンデーション、またはすべて 
    • 優先度レベル: L1、L2、L3、またはすべて
    • コンプライアンス ステータス: All (すべて)、No Rules Enabled (全ルール無効化)、Compliant (準拠)、Compliant With Deviations (逸脱があるが準拠)、Compliant With Violations (違反があるが準拠)、Not Compliant (準拠していない)、Missing Rule(s) in Analysis (見つからないルールが解析に存在)
  • 違反エクスプローラー で違反を確認するには、[違反の数] 列のリンクをクリックします。
  • 違反エクスプローラー で違反を確認するには、[逸脱の数] 列のリンクをクリックします。
  • CERT Compliance サブ レポートの 1 つを開きます。
  • プリンター印刷に適した PDF 形式のレポートをダウンロードするには、[PDF のダウンロード] をクリックします。「ナビゲーション バーへの画像の追加」で説明するように DTP にカスタム グラフィックを追加した場合、PDF にもカスタム グラフィックが表示されます。 

CERT Compliance Report には、以下の補助的なレポートが含まれます:

Conformance Testing Plan

Conformance Testing Plan は、コンプライアンス プロファイルで指定された CERT ガイドラインを Parasoft 静的解析ルールと相互参照します。プロファイルを構成 することによって、プロジェクトの目標を達成するために重要度、可能性、修正コスト、および他の値を変更できます。ガイドラインをクリックすると、CERT の Web サイトにある CERT ドキュメントが表示されます。

Deviation Report 

標準からの逸脱が文書化され、ソフトウェアの安全性に影響しない限り、コードは違反があっても CERT 準拠であることができます。逸脱とは、コード中で直接抑制されたコード解析ルール、または DTP の違反エクスプローラーで抑制されたコード解析ルールです。コード中で違反を抑制する方法については、C++test のドキュメントを参照してください。DTP で違反を抑制する方法については、違反エクスプローラーのドキュメントの「違反の抑制」を参照してください。

CERT Compliance Report で Deviation Report リンクをクリックすると、Deviation Report が開きます。  

Deviations Report は、すべてのガイドラインの ID とヘッダーを表示しますが、抑制されたガイドラインには追加情報を表示します。以下の操作を行うことができます。

  1. タイプ (ルール、推奨事項、すべて) でレポートをフィルタリングします
  2. レベル (L1、L2、L3) でレポートをフィルタリングします。
  3. [Only Deviations] オプションを有効化して、逸脱だけを表示します。
  4. [Hide Modification History] オプションを有効化して、逸脱の変更履歴を非表示にします。   

ビルド監査レポート

ビルド監査レポート は DTP のネイティブ機能です。このレポートは、コード解析違反の概要を表示するほか、ビルドに関連したテスト結果とカバレッジ情報も表示します。また、データのアーカイブをダウンロードすることもできます。これは、定期的な監査で CERT への準拠を証明するために使用できるアーティファクトです。

アーカイブをダウンロードするには、ビルドがロックされていなければなりません。このレポートの詳細については「ビルド監査レポート」を参照してください。  

プロファイル

Security Compliance Pack には、コア CERT C++ ワークフロー、および SEI CERT C++ Remediation Cost と SEI CERT C++ Likelihood KPI メトリクスの計算に関連するプロファイル セットが含まれています。 

CERT C++ Compliance プロファイル

CERT C++ Compliance DTP ワークフローにはデフォルトの プロファイル が同梱されており、このプロファイルには CERT コンプライアンス レポート を生成するために必要な情報が含まれています。デフォルト プロファイルは、CERT ガイドラインと Parasoft コード解析ルールの相関関係を示し、通常のほとんどの使用に適しています。

CERT プロファイルを変更してはいけません

デフォルトの CERT C++ プロファイルを変更しないことを強く推奨します。なぜなら、デフォルト プロファイルの変更は監査目的で生成するレポートに影響するからです。

必要に応じて、デフォルト プロファイルの複製を作成し、ソフトウェアの品質とコンプライアンスの目標を達成するために、Parasoft コード解析ルールと CERT C++ ガイドラインの相関関係を変更できます。 

  1. Extension Designer を開き、[プロファイル] タブをクリックします。
  2. CERT Compliance モデルを展開し、SEI CERT C++ プロファイルを選択します。 
  3. [プロファイルのエクスポート] をクリックして複製をダウンロードします。 
  4. 複製の名前を変更し、[プロファイルのインポート] をクリックします。 
  5. 複製を選択してアップロードします。
  6. プロファイルの名前を変更し、[編集] をクリックします。
  7. 必要に応じて変更を行い、[保存] をクリックします。 

CERT C++ KPI プロファイル

Security Compliance Pack に同梱の KPI アーティファクトには、SEI CERT C++ Likelihood および SEI CERT C++ Remediation Cost プロファイルが含まれます。プロファイルは、ビルドの KPI 値を計算するために、メトリクス解析ルールに重みを付けます。

通常のほとんどの使用にデフォルト プロファイルは適していますが、必要に応じて各メトリクス ルールの重みを変更できます。

  1. Extension Designer を開き、[プロファイル] タブをクリックします。
  2. KPI モデルを展開し、SEI CERT C++ Likelihood または SEI CERT C++ Remediation プロファイルを選択します。
  3. [プロファイルのエクスポート] をクリックして複製をダウンロードします。 
  4. 複製の名前を変更し、[プロファイルのインポート] をクリックします。 
  5. 複製を選択してアップロードします。
  6. プロファイルの名前を変更し、[編集] をクリックします。
  7. 必要に応じて変更を行い、[保存] をクリックします。


  • No labels