SnykでBitbucket Pipesのビルドワークフローをセキュアに
Noa Korem
2019年3月5日
0 分で読めますSnykがBitbucket Pipesと連携し、BitbucketユーザーがアプリケーションやDockerイメージの依存関係に含まれるオープンソースの脆弱性を検出、修正、監視して、継続的インテグレーション/継続的デリバリー(CI/CD)ワークフローを保護できるようになりました。このリリースにより、SnykはBitbucket Pipesのローンチパートナーとなりました。
先週、Atlassianは、すぐに使えるタスクを組み合わせてCI/CDワークフローをカスタマイズし、自動化できるBitbucket Pipesを発表しました。パイプラインには、ワークフローに繰り返し組み込める事前定義済みのアクションを設定できます。ワークフローにPipeを追加するには、該当するPipeをコピーしてパイプラインに貼り付けるだけです。以下の画像をご覧ください。

アプリのオープンソース脆弱性を検出、修正、監視
Bitbucket Pipelineのワークフローに追加すると、Snyk PipeはCI/CDワークフローの一環として依存関係をスキャンし、オープンソースの脆弱性を検出します。脆弱性が見つかった場合は、ユーザーが設定した構成に従って処理をゲートします。たとえば、以下の画像のように、重大度の高い脆弱性がビルドを通過しないようにできます。

脆弱性が見つかった場合、Snyk Pipeに含まれるパッチモジュールが、Snykの精密なパッチを適用して修正できます。これらのパッチは、パッケージのオーナーと連携して開発され、厳格なテストを経ています。Snykは、コードの破損を引き起こすことなく、元の修正を適用可能なすべての過去のバージョンにバックポートします。
テストに成功すると、デプロイされたコードはSnykによって監視され、新たな脆弱性が検出されます。新たに関連する脆弱性が見つかると、Snykはユーザーに通知し、リスクにさらされる期間を最小限に抑えます。Snykの脆弱性データベースは、新しい脆弱性を継続的に追加し、ユーザーに最適なカバレッジを提供します。
Dockerイメージをセキュアに
Snyk Pipeは、DockerイメージをスキャンしてOSの脆弱性を検出することもできます。Snykはベースイメージと追加レイヤーをスキャンし、それぞれのレイヤーとベースイメージに関連する脆弱性を検出します。また、最もセキュアな代替ベースイメージを提示するなど、修正方法を提案します。これにより、多数の脆弱性を解消し、コードの破損リスクを最小限に抑えられます。
Bitbucketワークフロー全体をセキュアに
Snykは、開発ワークフロー全体にわたるさまざまなBitbucketソリューションを包括的なセキュリティインターフェースで保護します。
まず、ソースコード管理では、すべてのプルリクエストをスキャンし、推奨アップグレードを適用する修正用プルリクエストを作成します。
パイプラインでは、CI/CDとの連携により、脆弱なアプリのデプロイを防ぎます。
デプロイ後は、デプロイされたアプリの依存関係のスナップショットを保存し、新たな問題を監視して通知します。
Snykは、次回のAtlassian Summit(4月9~11日、ラスベガス)に参加し、Bitbucket向けの包括的なソリューションを紹介します。ブース102にぜひお立ち寄りいただくか、こちらからミーティングをご予約ください。
Snyk Pipeの追加方法
Snykで依存関係の脆弱性をスキャンするには、bitbucket-pipelines.ymlにSnyk Pipeを追加し、Snyk APIトークン(アカウント設定から取得)を指定して、パッケージマネージャー/言語(例: “npm”)を設定します。以下にSnyk Pipeのスニペットを示します。

以下は、パッケージマネージャーとしてnpmを指定したSnyk Pipeの例です。
Pipeに追加すると、Snykはマニフェストファイル(package.json、package-lock.json)を検索してスキャンを実行します。
注: Snyk Pipeは、必ずインストール/ビルドの各ステップ(例: `npm install`、`dotnet restore`、`docker build`など)の後に実行されるステップとして追加してください。
Pipeには、次の2つの機能も追加できます。
PROTECT - 事前にウィザードで生成された.snykポリシーファイルに基づいて、Snykのパッチを適用します。
MONITOR - テストが失敗しなかった場合、アプリの依存関係のスナップショットをsnyk.ioに記録します。デプロイされたコードの状態を確認できるほか、監視を行い、コードに新たな脆弱性が見つかったときにアラートを受け取れます。
Dockerの場合は?
SnykはDockerイメージのスキャンにも対応しており、脆弱性を検査できます。
Dockerイメージをスキャンするには、IMAGE_NAMEパラメーターを設定します。
TARGET_FILE: “Dockerfile”を設定すると、イメージの修正方法を確認できます。
これらのコマンドを追加すると、Pipeは次のようになります。
重要なオプション変数は次のとおりです。
SEVERITY_THRESHOLD — 重大度の高い脆弱性のみをSnykに報告させます
DONT_BREAK_BUILD — 検出された脆弱性があってもビルドを続行するようSnykに指示します。
その他のドキュメントはこちらをご覧ください。