Close

Snyk を Atlassian Open DevOps に統合する

Warren Marusiak の顔写真
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 統合を見つけて [今すぐ試す] をクリックします。

Snyk 統合を Bitbucket に追加する画像

アクセス権が付与されたら、[Connect Bitbucket with Snyk (Bitbucket を Snyk に接続)] をクリックします。

Bitbucket と Snyk を接続する

統合の設定が完了したら、タブを閉じます。

成功する統合ガイド

左側のナビゲーションに表示される新しい Snyk オプションをクリックします。次に、go.mod ファイルをクリックしてドリル インすると、詳細が表示されます。この例では、Golang リポジトリは go モジュールを使用して依存関係を管理しています。他の種類のリポジトリでは、異なる依存関係ファイルが存在します。

Snyk 画面

それぞれの脆弱性の修正方法に関する詳細については、「visit Snyk (Snyk にアクセス)」をクリックして Snyk Web サイトにアクセスしてください。

snyk にアクセスする

Snyk アプリのこのビューは、Bitbucket でレンダリングされる詳細画面と類似しています。この画面には、脆弱性のリストと、それぞれの脆弱性に関する追加情報が表示されます。

Snyk Web サイトのスクリーンショット

次の画像は、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 で実行されたときの様子を示しています。

Bitbucket Pipelines の runsnyktest ステップ

結論

CI/CD パイプラインにセキュリティを統合することは、DevSecOps の中核的な信条です。DevSecOps では、標準的な DevOps パイプラインの各フェーズ (プラン、コーディング、ビルド、テスト、リリース、デプロイ) にセキュリティを適用する必要があります。セキュリティをワークフローに組み込むことで、開発プロセスにおいて後付けではなく、アクティブで統合されたプロセスになります。これは、アプリの安全性を高め、インシデントを減少させ、顧客の満足度を上げることを意味します。

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


この記事を共有する

おすすめコンテンツ

次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

DevOps のイラスト

DevOps コミュニティ

DevOps のイラスト

DevOps ラーニング パス

マップのイラスト

無料で始める

DevOps ニュースレター購読

Thank you for signing up