記事
チュートリアル
インタラクティブ ガイド
Snyk を Atlassian Open DevOps に統合する
Warren Marusiak
シニア テクニカル エバンジェリスト
当社のチームは Jira Software とさまざまな接続ツールを使用してアプリケーションを開発、デプロイ、管理する方法を説明するために、機械学習を使用してイメージにラベルを添付する AWS 上に構築されたシンプルなデモ アプリケーションである ImageLabeller を作成しました。
このページでは、Snyk と Bitbucket を統合する方法について説明します。はじめに、ImageLabeller の概要ページをお読みのうえ、背景を確認することをお勧めします。
Bitbucket と Snyk を接続する
Bitbucket で Snyk を操作する方法はいくつかあります。1 つ目は、リポジトリ画面の [セキュリティ] タブから Bitbucket へのネイティブ Snyk 統合を有効にすることです。2 つ目は、Snyk ステップを bitbucket-pipelines.yml ファイルに追加することです。どちらの方法にもデメリットはありません。Bitbucket の Snyk 統合により、Bitbucket でリポジトリを見ているすべてのユーザーが脆弱性データにすばやくアクセスできます。その後、Snyk Webサイトをクリックしていくと、発見されたそれぞれの脆弱性に関する追加情報を確認できます。bitbucket-pipelines.yml ファイルの Snyk ステップにより、パイプライン内のすべてのコミットで自動スキャンが可能となります。
Snyk 統合を Bitbucket に追加する
Snyk を Bitbucket リポジトリに追加するには、[セキュリティ] タブをクリックし、Snyk 統合を見つけて [今すぐ試す] をクリックします。
アクセス権が付与されたら、[Connect Bitbucket with Snyk (Bitbucket を Snyk に接続)] をクリックします。
統合の設定が完了したら、タブを閉じます。
左側のナビゲーションに表示される新しい Snyk オプションをクリックします。次に、go.mod ファイルをクリックしてドリル インすると、詳細が表示されます。この例では、Golang リポジトリは go モジュールを使用して依存関係を管理しています。他の種類のリポジトリでは、異なる依存関係ファイルが存在します。
それぞれの脆弱性の修正方法に関する詳細については、「visit Snyk (Snyk にアクセス)」をクリックして Snyk Web サイトにアクセスしてください。
Snyk アプリのこのビューは、Bitbucket でレンダリングされる詳細画面と類似しています。この画面には、脆弱性のリストと、それぞれの脆弱性に関する追加情報が表示されます。
次の画像は、Snyk の脆弱性レポートの一例です。脆弱性の原因となる階層が [Detailed paths (詳細なパス)] セクションに表示されます。次の例では、SubmitImage が AWS Golang SDK からこの脆弱性を継承していることがわかります。Snyk では、すべての問題のステータスが左側にまとめられます。この例では、いずれの問題も修正できません。[Fixability (修正可能性)] の下に「No fix available (修正不可)」の問題が 5 つ表示されていることにご注目ください。これは、これらの問題に対して現在利用できる軽減策がないことを意味します。開発者は統合を監視し、軽減策が利用可能になれば直ちに修正を行えます。
Snyk ステップを bitbucket-pipelines.yml に追加する
Bitbucket ユーザー インターフェイス経由で Snyk にアクセスするだけでなく、bitbucket-pipelines.yml ファイルにステップを追加することで、Bitbucket Pipelines を介して Snyk 機能にアクセスできます。つまり、脆弱性スキャンはすべてのコミットに対して自動で実行され、セキュリティの脆弱性があれば警告します。
以下は、パイプラインの一部として Snyk テストを実行するための 2 つの bitbucket-pipelines.yml スニペットです。
Golang 用の Bitbucket Pipelines に Snyk を追加する
この例では、依存関係を管理するために Go モジュールを使用して Golang プロジェクトに対する Snyk テストを実行する方法を示しています。
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:golang
script:
- snyk auth $SNYK_TOKEN
- cd submitImage
- go mod graph
- snyk test
pipelines:
default:
- step: *runsnyktest
Python 用の Bitbucket Pipelines に Snyk を追加する
この例では、依存関係を管理するために Pip を使用して Python プロジェクトに対する Snyk テストを実行する方法を示しています。
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:python
script:
- snyk auth $SNYK_TOKEN
- cd src
- snyk test --skip-unresolved
- cd ../tst
- snyk test --skip-unresolved
pipelines:
default:
- step: *runsnyktest
これは、runsnyktest ステップが Bitbucket Pipelines で実行されたときの様子を示しています。
結論
CI/CD パイプラインにセキュリティを統合することは、DevSecOps の中核的な信条です。DevSecOps では、標準的な DevOps パイプラインの各フェーズ (プラン、コーディング、ビルド、テスト、リリース、デプロイ) にセキュリティを適用する必要があります。セキュリティをワークフローに組み込むことで、開発プロセスにおいて後付けではなく、アクティブで統合されたプロセスになります。これは、アプリの安全性を高め、インシデントを減少させ、顧客の満足度を上げることを意味します。
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。