Snykを活用したMicrosoft AzureでのエンドツーエンドDevSecOpsの実現
2020年5月26日
0 分で読めますAzure Repos Serverのサポートを追加しました。AzureのオンプレミスDevOpsサービスを利用する開発者は、オープンソースの依存関係に含まれるセキュリティ脆弱性やライセンスの問題を特定し、修正できるようになります。
この新しいインテグレーションは、Microsoft Azureエコシステム全体にわたるサポートを補完します。Azure Repos(クラウド版に加え、オンプレミス版にも対応)から、Azure Pipelines、Azure Container Registry、Azure Functionsまで、Azureユーザーがソフトウェア開発ライフサイクル全体でDevSecOpsを実現できるよう支援します。
Azure Repos Serverは、以前はTeam Foundation Server(TFS)として知られていたAzure DevOps Serverの一部です。オンプレミスでホストされる、共同ソフトウェア開発ツールのセットです。開発者はプルリクエストや高度なファイル管理機能を使って、オンプレミスでGit開発ワークフローを管理できます。
この新しいインテグレーションにより、Azure Repos Serverを使用する開発者は次のことが可能になります。
Azure Repos Serverで管理されているプロジェクトに既存の脆弱性がないか検出する。各脆弱性について、問題が持ち込まれた正確な依存関係パスなど、トリアージを迅速化するための実用的で文脈に即した情報が表示されます。
新しいプルリクエストをスキャンして、脆弱性の混入を未然に防ぐ。新しいプルリクエストはAzure Repos Server内でマージ前にスキャンされ、新たな脆弱性が持ち込まれないことを確認します。
特定された問題を修正する。Snykは直接依存関係と間接依存関係の両方に必要な修正を算出し、必要なアップグレードやパッチを適用する修正用プルリクエストを、Azure Repos Serverのワークフロー内で自動的に作成します。
新たな脆弱性がないか継続的に監視する。Snykはインポートされたプロジェクトを毎日監視し、新たな脆弱性が公開されると開発者に通知します。また、マージを失敗させる脆弱性の重大度を設定するポリシーも定義できます。
詳しく見ていきましょう。
SnykとAzure Repos Serverのインテグレーション
インテグレーションを設定するには、まずAzureから2つの情報を取得します。Azure Repos Server組織のURLとアクセストークンです。
Snykアクセストークンを作成する際は、Custom definedを選択し、有効期限をできるだけ先の日付に設定します。また、Scopes | Code,でRead & writeを選択します。

この2つの情報を用意したら、Snykのインテグレーションページに移動し、Azure Reposを選択します。

次に、Azure Repos Server組織のURLと、先ほど作成したトークンを入力します。
![アカウント認証情報の入力欄、マスクされた個人用アクセストークン、[保存]ボタン、トークンの作成手順が表示されたAzure Reposのインテグレーション設定。](https://res.cloudinary.com/snyk/image/upload/f_auto,w_2560,q_auto/v1615809450/wordpress-sync/azure_repos_integration_settings.png)
Saveボタンをクリックすると、SnykとAzure Repos Serverのインテグレーションが完了したことを示すメッセージが表示されます。

あとはAdd your Azure Repos repositories to Snykをクリックし、Snykで保護するリポジトリを選択するだけです。

Snykがプロジェクトをインポートし、セキュリティ脆弱性とライセンスの問題を初回スキャンします。ここに示す例のとおり、デモ用のnode.jsプロジェクトには、さまざまな重大度の脆弱性が複数含まれています。

脆弱性の修正
インテグレーションを設定したので、Snykを使って脆弱性を検出し、修正できます。
プロジェクトを開くと、Azure Repos ServerのリポジトリでSnykが特定したすべての問題が表示されます。プロジェクトのオープンソース依存関係を通じて持ち込まれたセキュリティ脆弱性が66件、ライセンスの問題が2件あります。

Snykは、問題を迅速に修正するための実用的な修正アドバイスを提供します。問題が持ち込まれた依存関係パス全体、脆弱性が悪用可能かどうか、修正に必要なアップグレードなどを確認できます。

Fix this vulnerabilityをクリックすると、必要なアップグレードが設定されたプルリクエストがAzure Repos Serverに自動的に作成されます。
![「[Snyk] adm-zipを0.4.7から0.4.11にセキュリティアップグレード」というタイトルのAzure DevOpsプルリクエスト。マージコンフリクトがなく、脆弱性の修正内容が表示されています。](https://res.cloudinary.com/snyk/image/upload/f_auto,w_2560,q_auto/v1615809441/wordpress-sync/azure_repos_fix_pr.png)
継続的なセキュリティ
Snykは新たな脆弱性を継続的に監視し、Azure Repos Serverのリポジトリを安全に保ちます。
まず、新しい脆弱性が公開され、プロジェクト内で検出されるとSnykが通知し、迅速な修正に必要な詳細情報を提供します。
次に、コードへの変更によって新たな脆弱性が持ち込まれないよう、Snykが確認します。Azure Repos Serverで新しいプルリクエストが作成されるたびに、Snykはセキュリティ脆弱性とライセンスの問題を自動的にスキャンし、マージ前に問題が解決されるようにします。
Azure SDLC全体でDevSecOpsを支援
このインテグレーションは、Microsoft Azureユーザー向けにSnykが提供する一連のネイティブインテグレーションの最新機能です。開発からCI/CD、実行時まで、SDLC全体を通じて開発者がアプリケーションを保護できるよう支援します。
これらのインテグレーションを始めるには、Snykのインテグレーションページをご覧いただくか、Azure Reposインテグレーションのドキュメントで詳細をご確認ください。
このインテグレーションはTFS v2018 Update 2以降に対応しており、ProプランおよびEnterpriseプランでのみご利用いただけます。
安全な開発を!


