IBM Cloud Code Risk Analyzer スキャンの構成
IBM Cloud Code Risk Analyzer を使用すると、コードの脆弱性を分析し、指定された規則に照らしてコンプライアンスを検証できます。
Code Risk Analyzer がアプリを評価すると、以下のようになります。
-
すべてのサード・パーティー・パッケージの依存関係と使用可能なライセンス情報をリストするソフトウェア部品表 (SBOM) が生成されます。 これは、必要に応じて
cycloneDX-specific
形式で生成できます。 -
SBOM ファイルにリストされているパッケージで脆弱性がスキャンされます。 このファイルは、
cycloneDX-specific
形式で生成できます。 あるいは、 Node.js、Maven、または Gradleで作成されたアプリケーションに対して検出された脆弱性の自動修復を有効にすることもできます。 -
すべての Kubernetes ファイルのコンプライアンスが分析されます。
-
すべての Terraform プランがコンプライアンスについて分析されます。
Code Risk Analyzer は、ツールチェーンがサポートされているすべての IBM Cloud リージョンでご利用いただけます。 詳しくは、 プラグインの資料 を参照してください。
スキャンの構成
SBOM ファイルを生成するために、Code Risk Analyzer スキャンは、指定されたディレクトリー・パス内の成果物にアクセスし、ディープ・ディスカバリーを実行して、すべての依存関係 (付加的な依存関係を含む) を識別します。 SBOM ファイルを生成して脆弱性を検出するために必要な特定のパイプライン環境変数はありませんが、パスに Dockerfile が含まれている場合、ファイルに指定されているビルド・ステージごとに基本イメージがプルされ、イメージがビルドされます。
Dockerfile に ARGS が必要な場合は、個々の ARG をカスタム・スクリプトの環境変数として設定し、カスタム・スクリプトの場所をパイプライン対応可能として指定します。
環境変数 | 説明 | 必須またはオプション | 目的 |
---|---|---|---|
cra-custom-script-path |
リポジトリー内のスクリプトへのパス。 | オプション | Docker スクリプトに必要な環境変数を設定します。 |
詳しくは、 カスタム・スクリプト を参照してください。
デフォルトでは、Terraform ファイルは分析されません。 Terraform ファイルをスキャンするには、以下のパイプライン環境変数を設定する必要があります。
環境変数 | 説明 | 必須またはオプション | 目的 |
---|---|---|---|
opt-in-tfsec |
TRUE または FALSE。 デフォルトで false に設定されます。 | オプション | セキュリティーについて Terraform ファイルをスキャンします。 |
opt-in-cra-tf-validate |
TRUE または FALSE。 デフォルトで false に設定されます。 | オプション | Terraform ファイルを検証します。 |
Code Risk Analyzer スキャンは、提供された API キーを使用して IBMCloud CLI にログインし、 Docker ビルドをトリガーします。 既存の IBM Cloud CLI セッションは、この CRA ステップの残りの部分で引き続き使用されます。 ただし、標準 API キー・ログインの場合は、20 分後に IBM Cloud CLI セッションの有効期限が切れます。 ビルド・プロセスに 20 分以上かかると、セッションの有効期限が切れたため、CRA
ステップは 401 エラー・メッセージで失敗します。 このような長い操作のために IBMCloud CLI セッションを存続させるために、環境変数 ibmcloud-enable-session-keep-alive
が導入されました。
環境変数 | 説明 | タイプ | 必須またはオプション | 目的 |
---|---|---|---|---|
ibmcloud-enable-session-keep-alive |
0 または 1。 デフォルトでは 0 に設定されます。 | 選択 | オプション | Code Risk Analyzer スキャンで長時間実行されるジョブの IBMCloud CLI セッションを維持します。 |
デフォルトでは、Code Risk Analyzer の deployment-analyze コマンドは、 Kubernetes デプロイメント・マニフェストに対して 構成チェック を実行します。 Code Risk Analyzer デプロイメント分析コマンドは、 --strict
オプションを設定して実行されます。
Code Risk Analyzer デプロイメント分析スキャン中にファイルを無視するには、以下の環境変数を使用する必要があります。
環境変数 | 説明 | 必須またはオプション | 目的 |
---|---|---|---|
cra-cis-fileignore-path |
ご使用のリポジトリー内の .fileignore ファイルのパス。 | オプション | Code Risk Analyzer デプロイメント分析スキャン中に無視するファイルの情報を含む .fileignore ファイルのパスを指定します。 |
アプリをデプロイするための脆弱性の省略
Code Risk Analyzer は、大まかなボードが検出する前に脆弱なパッケージを検出するように設計されています。 例外的な状況では、脆弱なパッケージが検出され、まだ修正されていない場合でも、アプリケーションをデプロイする必要が生じることがあります。 可能な限り、コードを再デプロイする前に、パッケージを更新または削除する必要があります。
特定のファイルを無視して実動へのプッシュを完了するには、以下のスキーマを使用して、スキャンされたリポジトリーのルートに .cra/.cveignore
というファイルを作成します。
[
{
"cve": "string",
"alwaysOmit": "bool",
"untilRemediationAvailable": "bool",
"expiration": "string"
},
]
以下のコード・スニペットは、.cveignore
ファイルの例を示しています。
[
{
"cve": "CVE-2021-27290",
"alwaysOmit": true
},
{
"cve": "CVE-2020-8244",
"untilRemediationAvailable": true,
},
{
"cve": "CLAIR-JAVA-ORGAPACHEHTTPCOMPONENTS-31517",
"expiration": "2022-02-10T22:08:41+04:00",
"comment": "Additional security measures are in place"
}
]
このファイルは、以前は .craveomit
と呼ばれていました。 元のファイル・フォーマットは 非推奨 になり、 .cra/.cveignore
に置き換えられました。 最新のファイルを使用するようにコードを更新してください。
Code Risk Analyzer の プラグインの資料 について詳しく知ることができます。また、 非推奨の CRA 資料 を確認することもできます。
脆弱性の自動修復
Code Risk Analyzer を継続的コンプライアンス (CC) パイプラインの一部として使用して、脆弱性を検出するだけでなく、自動的に修復することもできます。 Code Risk Analyzer は、パイプラインの compliance-check
ステップの一部として機能します。 デフォルトでは、自動修復はオフになっています。
自動修復は、CC パイプラインでのみ使用可能です。
自動修復がオンになっている場合、Code Risk Analyzer は、リポジトリーのデフォルト・ブランチに対して識別されたフィックスを使用してプル要求を作成することにより、脆弱性のあるパッケージを非 vunlnerable バージョンに更新しようとします。 デフォルトでは、Code Risk Analyzer は、従属パッケージだけでなく、メインの脆弱なパッケージのマイナー・バージョンとパッチ・バージョンも更新しますが、パッケージのメジャー・バージョンは更新しません。 プル要求が受け入れ可能な場合は、手動で承認してマージすることができます。 パイプラインが実行されるたびに新しいプル要求が生成されるため、重複を避けるために、必ずレビューしてマージしてください。
自動修復は、Enterprise GitHub リポジトリーと GitLab リポジトリーの両方で使用可能であり、以下の表に指定されているファイルを変更できます。
エコシステム | 変更可能ファイル |
---|---|
Nodejs | package.json および package-lock.json |
Gradle | build.gradle 、gradle.lockfile 、およびbuildscript-gradle.lockfile |
Maven | pom.xml |
脆弱性の自動修復を開始するには、パイプラインに対して以下のオプションの環境変数を設定します。
変数 | 説明 | デフォルト設定 |
---|---|---|
opt-in-cra-auto-remediation |
パイプラインの自動修復を有効にします。 | false 修復を開始するには、この変数を true に設定します。 |
opt-in-cra-auto-remediation-force |
オープンされるプル要求の一部としてメジャー・パッケージ更新を強制します。 | false メジャー・パッケージを強制的に更新するには、この変数を true に設定します。 |
opt-in-cra-auto-remediation-enabled-repos |
自動修復を有効にする対象の特定のリポジトリーを指定します。 | list_repos の呼び出し時に返されるすべてのリポジトリーに対して有効です。 特定のリポジトリーを指定するには、リポジトリー名のコンマ区切りリストを指定します。 |