Xrayの依存関係とバイナリスキャンを開発環境で
セキュリティをシフトレフトするということは 開発者がSDLCの早い段階で脆弱性とライセンス違反を認識して修正することを意味します。そのため、XrayはビルドによってArtifactoryにプッシュされたバイナリをスキャン し、依存関係に問題がある場合に警告します。
しかし、コードをチェックする前であっても、それらをより早く認識することはシフトレフトする開発者にとって重要なことです。そこで、Xrayの機能を拡張し、JFrog CLIからローカルファイルシステムのディレクトリにあるソースコードやバイナリをオンデマンドでスキャンできるようにしました。
これらのユースケースが必要とされる理由をご紹介します。
- すべてのバイナリがArtifactoryに保存されているわけではない
- Artifactoryにアップロードする前にビルドの脆弱性とライセンス違反を発見することができる
- セキュリティ担当者は送られてきたバイナリをスキャンして確認する必要があるかもしれない
- 承認されたバイナリのみをArtifactoryに配置したい
これらのJFrog CLIの機能により、開発者やセキュリティチームなどはアプリケーションがArtifactoryの信頼できる唯一の情報源の一部となる前に、脆弱性とライセンス違反を防ぐことができます。
Xray依存症スキャン
XrayはJFrog CLIを使用し、ソースの依存関係にある脆弱性やライセンス違反をスキャンする機能を提供します。このコマンドラインツールはコンパイル、テスト、Artifactoryへのデプロイを必要とせず、いつでもどこでも実行できるソースディレクトリのスキャンを可能にし、問題に対処するための貴重な時間を節約します。
CLIを使用した場合、XrayはArtifactoryリポジトリと同じ方法で依存関係をスキャンします。このコマンドは依存関係で発見された脆弱性やライセンス違反を含む詳細なスキャンレポートを返します。この機能には次のようなメリットがあります。
- Artifactoryにアップロードする前のビルドに脆弱性やライセンス違反を開発者がコードを書きながら確認できる
- Artifactoryにアップロードすることなく、アドホックなセキュリティスキャンを実行することができる
- バイナリやソースをArtifactoryにアップロードする前に承認する必要があるなど、組織の基準を遵守できる
現在、これらのJFrog CLIへの追加機能はMaven、Gradle、NPMパッケージのソーススキャンのみをサポートしています。 |
どのような仕組みになっているのか?
コマンドラインからスキャンを開始する為にソースファイルを含むトップレベルのディレクトリに変更する必要があります。その後、JFrog CLIコマンドを実行し、ファイルのXray依存性スキャンを行います。
一度に監査を実行できるのは1種類のプロジェクトのみです。ソースコードのMavenプロジェクトのスキャンを実行し、すべての脆弱性を報告する場合は以下になります。
$ jfrog xr audit-mvn
また、Xrayでポリシーが適用されたウォッチ、プロジェクト、リポジトリのパスを指定し、Xrayのポリシールールをスキャンに適用することができます。例えば「watch1」で使用したポリシールールのセットをMavenプロジェクトのスキャンに適用する場合は以下になります。
$ jfrog xr audit-mvn --watches "watch1"
処理完了後、デフォルトではこれらのセキュリティとライセンスポリシーに違反する依存関係のレポートが作成されます。
JFrog CLIでは代わりにJSONファイルとしてレポートを作成することができるため、お好みのツールで処理することができます。
Xrayオンデマンド・バイナリスキャン
コンパイル後に脆弱性を見つけて修正する必要がなく、時間の節約になるため、開発者個人または組織として開発中のソフトウェアをセキュアにコーディングしたいと思うかもしれません。前出の新しいスキャン機能と同様にオンデマンド・バイナリスキャンを行うためにJFrog CLIを使用します。
ローカルファイルシステムにあるバイナリを指定するだけで、そのバイナリの脆弱性とライセンス違反をレポートすることができます。JFrog CLIはXrayがArtifactoryでバイナリをスキャンするのと同様に、バイナリを抽出し、バイナリからコンポーネント・グラフを構成するロジックを含むクローズソース・コンポーネントをカプセル化しています。詳細についてはXray Security and Complianceを参照してください。CLIはバイナリで検出された脆弱性、違反、ライセンスの詳細なスキャン結果をレポートします。
現在、Dockerのバイナリスキャンはまもなくサポート予定ですが、その他すべてのパッケージタイプでサポートされています。
どのような仕組みになっているのか?
Xrayオンデマンド・バイナリスキャンを実行する手順はソースファイル・スキャンと非常によく似ています。例えば「watch1」で使用したポリシールールをローカルファイルシステムのバイナリに適用する場合は以下になります。
$ jfrog xr s "path/to/files/" --watches "watch1"
このコマンドは前出同様のセキュリティとライセンス違反のレポートを作成します。同じくJSONファイルとしてレポートを生成することもできます。
シフトレフトをシフトレフトする Leftward
これらの機能は現在のリリースでXrayを継続的に強化している方法のうちの2つに過ぎず、脆弱性とライセンスコンプライアンスのスキャンを開発者に更に利用し易いものにしています。最新のAPIのエンハンスメントを含むその他の機能について、Xray リリースノートをご覧ください。
ソフトウェアのリリースをより安全にするために、まだXrayを使用していない場合はJFrogの無料クラウドアカウントから始めましょう。