Salus(セキュリティ自動化軽量ユニバーサルスキャナー)は、その名をローマの保護の女神に由来し、セキュリティスキャナーを調整して実行するためのツールです。リポジトリに対してDockerデーモンを介してSalusを実行すると、関連するスキャナーを自動的に判別し、実行して出力を提供します。ほとんどのスキャナーは、コンテナに直接含まれている他の成熟したオープンソースプロジェクトです。
SalusはCI/CDパイプラインに特に有用です。多数のリポジトリにまたがるスキャンを一元的に調整する場所となるからです。通常、スキャナーは各プロジェクトのリポジトリレベルで構成されます。つまり、スキャナーの実行方法を組織全体で変更する場合、各リポジトリを更新する必要があります。代わりにSalusを更新すれば、すべてのビルドが即座に変更を継承します。
Salusは強力な構成をサポートしており、グローバルなデフォルトとローカルな調整が可能です。さらに、Salusは各リポジトリのメトリクス(含まれているパッケージや存在する懸念事項など)を報告できます。これらのレポートはインフラストラクチャ内で集中的に評価でき、スケーラブルなセキュリティ追跡を可能にします。
# プロジェクトのルートディレクトリに移動する
cd /path/to/repo
# ルートディレクトリで次のコマンドを実行(編集不要)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus
semgrep 1.0.0 の実行。ASTレベルでコードの意味論的および構文的パターンを検出します。npm audit 6.14.8 の実行。Nodeモジュールの依存関係におけるCVEを検出します。yarn audit 1.22.0 の実行。Nodeモジュールの依存関係におけるCVEを検出します。sift 0.9.0 の実行。プロジェクト内の特定の文字列を検索し、危険なものや必須の文字列を検出します。Salusは依存関係ファイルも解析し、使用されているライブラリとバージョンを報告します。これは、組織全体での依存関係の追跡に役立ちます。
現在サポートされている言語は以下の通りです:
Salusは高度に構成可能になるよう設計されており、さまざまな環境や多数のスキャナーで動作します。環境変数の補間やカスケード設定をサポートし、設定の読み取りやHTTP経由でのレポート送信も可能です。
特定のCVE、ルール、テスト、グループ、ディレクトリを無視したり、スキャナーのデフォルト設定を変更する必要がある場合があります。docs/scanners ディレクトリでは、Salusがサポートする各スキャナーについてその方法を説明しています。
カスタムスキャナーを構築したり、現在サポートされていない言語を追加したい場合は、この方法でカスタムSalusイメージを作成できます。
Salusは公開Orbを使用してCircleCIと統合できます。Salusのすべての設定オプションがサポートされており、デフォルトはSalus自体と同じです。
CircleCIの config.yml の例:
version: 2.1
orbs:
salus: federacy/[email protected]
workflows:
main:
jobs:
- salus/scan
SalusはGitHub Actionsでも使用できます。
.github/workflows/main.yml の例:
on: [push]
jobs:
salus_scan_job:
runs-on: ubuntu-latest
name: Salus Security Scan Example
steps:
- uses: actions/checkout@v1
- name: Salus Scan
id: salus_scan
uses: federacy/[email protected]
ご使用のCIに応じて設定ファイルを更新し、Salusを実行します。CircleCIの場合は以下のようになります:
docker run --rm -t -v $(pwd):/home/repo coinbase/salus
coinbase/salus でDockerイメージをプルします。
このプロジェクトへの貢献は大歓迎です。私たちがここまで行ってきた作業が、セキュリティ/開発コミュニティ全体が集まって皆のインフラストラクチャのセキュリティを向上させるための基盤となることを心から願っています。
開発環境のセットアップやSalusのアーキテクチャについて詳しく読むことができます。
また、Salusに新しいスキャナーを追加する手順もあります。
このプロジェクトは Apache 2.0 ライセンス の条件のもとでオープンソースとして利用可能です。