安全なJava開発をSnykで始める
2021年6月23日
0 分で読めますJava開発者として、より安全にアプリケーションを開発したいとお考えなら、ぜひこの記事をご覧ください。Snykがその取り組みをサポートします。この記事では、安全なJava開発にSnykを活用する方法を解説します。最初からセキュリティを強化しましょう。
Snykを初めてお使いになる方に知っておいていただきたいのは、開発者向けの製品やツールを幅広く提供していることです。CLIや一部のIDEインテグレーションなど、複数の製品に対応するツールもあります。Snykの製品は、次の4つに分けられます。
Snyk Open Source - オープンソースの依存関係を保護
Snyk Container - コンテナイメージを保護
Snyk Infrastructure as Code (Snyk IaC) - Infrastructure as Codeを保護
Snyk Code - 独自コードを保護。この記事ではJavaに絞って説明します。
これらのツールを使い始めるには、無料のSnykアカウントに登録してください。個人開発者なら、通常はFreeプランで十分です。クレジットカードは必要ありません。
登録後、Java開発でSnykを利用する方法はいくつかあります。ツールごとに説明します。
Snyk CLI
Snyk CLIは、Java開発でSnykを使い始めるのに最も手軽なツールです。たとえば、npmやbrewを使ってインストールできます。
このツールはローカルマシンでの利用に最適で、CIパイプラインでも非常に役立ちます。まず、APIトークンを環境変数に設定する(CIシステムではこの方法を推奨)か、snyk authを実行して、Snyk CLIを認証します。
オープンソースの依存関係に含まれるセキュリティ上の問題をJavaプロジェクトで検査するには、プロジェクトのルートでsnyk testを実行するだけです。使用するJavaのビルドシステムに応じて、MavenまたはGradleがインストールされ、利用できる状態であることを確認してください。Snyk CLIはパッケージマネージャーとpom.xmlまたはbuild.gradleを使って、依存関係ツリー全体を取得します。予期しない結果を防ぐため、snyk testを実行する前に、MavenまたはGradleでプロジェクトをビルドしてください。
複数のpomファイルなど、プロジェクトにマニフェストファイルが複数ある場合は、--all-projectsフラグを使ってすべてのプロジェクトをスキャンします。たとえば、Gradleを使うJavaプロジェクトに、npmを使うJavaScriptのフロントエンドが組み合わさっている場合もスキャンできます。MavenまたはGradleの設定を確認するには、--helpフラグを使ってください。
Snyk CLIのヒントや便利な使い方については、CLIチートシートをご覧ください。同じCLIで、コンテナのセキュリティ上の問題やInfrastructure as Code(IaC)もスキャンできます。また、独自のJavaコードにおけるセキュリティ脆弱性の防止に役立つSnyk CodeのCLI版も、近日リリース予定です。
JavaプロジェクトのGitリポジトリを接続する
次に、Gitリポジトリを接続します。たとえばGitHub上のJavaリポジトリを接続すると、SnykがMavenまたはGradleのマニフェストファイルを自動で検索し、依存関係をスキャンします。このスキャンはデフォルトで毎日実行され、新しいセキュリティ脆弱性や修正がリポジトリで見つかると通知されます。
以下の例は、既知のセキュリティ脆弱性を含むデモプロジェクトのpomファイルです。Snykが新たな問題を検出するたびに、脆弱性の説明や修正方法の提案とともにダッシュボードに表示されます。また、GitインテグレーションではDockerfileのスキャンやSnyk Codeによる解析も実行できます。Snyk Gitインテグレーションを使ったJavaアプリケーションのSnyk Code解析について詳しくは、こちらのブログ記事Spring MVCアプリケーションのJavaセキュリティ問題を解決するをご覧ください。

MavenおよびGradleプラグイン
ビルド中にセキュリティテストを自動化したい開発者もいるでしょう。CIパイプライン内で実行することもできますが、ビルドツール内で実行するほうが適している場合もあります。MavenまたはGradleを使っているなら、依存関係が取り込まれ、成果物が作成されるのはビルドツール内です。単体テストと同じように、セキュリティスキャンも自動化してみませんか。SnykはMavenとGradleの両方に対応したプラグインを提供しています。必要なのは、無料アカウントから取得できるAPIキーだけです。
MavenとGradleから手動でsnyk testを実行するか、アプリケーションのビルド時に特定のタスクと連携させることができます。SnykのMavenプラグインとGradleプラグインについて、それぞれの記事をご覧ください。
SnykのJava IDEプラグイン
IDEですべての作業を行うほうが使いやすいという開発者もいます。今やIDEは、膨大な機能や拡張性を備えたスイスアーミーナイフのようなものです。IDEを中心に仕事をする開発者も少なくありません。
最近公開されたJVM Ecosystemレポート2021では、Java開発で最も使われているIDEの上位3つがIntelliJ IDEA、Eclipse、VS Codeであることがわかりました。この3つすべてで、SnykのIDEプラグインを利用できます。
各プラグインの詳細については、次の記事をご覧ください。
Snykの導入は簡単
ご覧のとおり、Snykを導入して安全なJavaアプリケーションを作るのは難しくありません。自分の開発スタイルに合った方法を選んで、安全性を保ちながらスピーディーに開発しましょう。さらに、必要に応じてさまざまなCI/CDパイプラインとの豊富なインテグレーションも利用できます。Snykなら、Java開発者が最初からセキュアに開発するために必要なものがすべて揃っています。
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。
