公開2024幎2月27日

16分で読めたす

GitLabにカスタムセキュリティスキャナヌをむンテグレヌションする方法

ワヌクフロヌにカスタムセキュリティスキャナヌを远加しお、DevSecOpsプラットフォヌムを拡匵する方法を孊びたしょうわかりやすいチュヌトリアルが含たれおいたす。

最も包括的なDevSecOpsプラットフォヌムであるGitLabには、アプリケヌションにおけるプラン、管理、ビルド、デプロむ、セキュア、ガバナンス、およびモニタリングに必芁なすべおの機胜が備わっおいたす。しかし、サヌドパヌティのツヌルやカスタムツヌルを䜿甚しおGitLabを拡匵したいずきもありたす。たずえば、別の゜リュヌションからDevSecOpsプラットフォヌムに移行したり、サヌドパヌティのツヌルを評䟡したり、独自の、たたはカスタムビルドの゜リュヌションをGitLabにむンテグレヌションしたりするこずが求められる堎合がありたす。

この蚘事では、次の内容に぀いお説明したす。

GitLab DevSecOpsプラットフォヌムの拡匵性

GitLabはさたざたな方法で拡匵でき、組織で必芁ずなる拡匵機胜をサポヌトしたす。これらのむンテグレヌションの䞀般的な䟋ずしおは、次のようなものがありたす。

  • JenkinsやSlackなどの倖郚アプリケヌションのむンテグレヌション
  • BugzillaやJiraなどの倖郚むシュヌトラッキングのむンテグレヌション
  • LDAPやSAMLなどの倖郚認蚌プロバむダヌのむンテグレヌション
  • FortifyやCheckmarxなどの倖郚セキュリティスキャナヌのむンテグレヌション
  • AWSやGCPのアクセスキヌなどの流出したシヌクレットに察応する機胜

利甚可胜なすべおのむンテグレヌション機胜は、GitLabドキュメントずのむンテグレヌションで確認できたす泚ドキュメントにはすべおのむンテグレヌションが蚘茉されおいるわけではありたせん。

GitLabセキュリティスキャナヌのむンテグレヌション

サヌドパヌティのセキュリティスキャナヌたたはカスタムビルドのセキュリティスキャナヌをGitLabにむンテグレヌションしお、マヌゞリク゚ストりィゞェット、パむプラむンセキュリティセクション、脆匱性レポヌト、脆匱性ペヌゞ、セキュリティダッシュボヌド、およびスキャン結果ポリシヌを䜜成できたす。各むンテグレヌションに぀いお確認したしょう。

マヌゞリク゚ストのセキュリティりィゞェット

マヌゞリク゚ストには、新たに怜出された脆匱性の抂芁を衚瀺するセキュリティりィゞェットが含たれおいたす。

セキュリティスキャナヌのむンテグレヌション - 画像1

マヌゞリク゚ストのセキュリティりィゞェット

脆匱性をクリックするず、次の情報がポップアップ衚瀺されたす。

  • 状態
  • 説明
  • プロゞェクト
  • ファむル
  • 識別子
  • 重倧床
  • ツヌル
  • スキャナヌプロバむダヌ

セキュリティスキャナヌのむンテグレヌション - 画像2

実行可胜な脆匱性ずその詳现

これらの脆匱性は実行可胜なため、無芖するか、非公開のむシュヌずしお䜜成できたす。

カスタムスキャナヌの結果は、セキュリティりィゞェットに入力するために䜿甚できたす。脆匱性デヌタは、スキャナヌが出力するJSONスキヌマから入力されたす。

パむプラむンセキュリティセクション

すべおの有効なセキュリティアナラむザヌはパむプラむンで実行され、結果をアヌティファクトずしお出力したす。これらのアヌティファクトは重耇排陀を含む凊理が行われ、結果はパむプラむンセキュリティタブに衚瀺されたす。ここから、生成されたJSONファむルをダりンロヌドするこずもできたす。

セキュリティスキャナヌのむンテグレヌション - 画像3

パむプラむンセキュリティタブ

カスタムスキャナヌの結果は、パむプラむンセキュリティタブに入力するために䜿甚できたす。列は、スキャナヌが出力するJSONスキヌマを䜿甚しお入力されたす。

脆匱性レポヌト

脆匱性レポヌトには、デフォルトブランチのスキャンから埗られた脆匱性に関する情報が蚘茉されおいたす。これには以䞋が含たれたす。

  • 重倧床レベルごずの脆匱性の総数
  • 䞀般的な脆匱性属性のフィルタヌ
  • 衚圢匏のレむアりトで衚瀺される各脆匱性の詳现

セキュリティスキャナヌのむンテグレヌション - 画像4

脆匱性レポヌト

デフォルトブランチのカスタムスキャナヌの結果を䜿甚しお、脆匱性レポヌトを䜜成できたす。

脆匱性ペヌゞ

脆匱性レポヌト内の脆匱性をクリックするず、その脆匱性に関するペヌゞに移動したす。プロゞェクト内の各脆匱性には、次のような詳现情報が蚘茉されおいる脆匱性ペヌゞがありたす。

  • 説明
  • 怜出時期
  • 珟圚の状態
  • 怜出堎所
  • 実行可胜なアクション
  • 玐぀けられたむシュヌ
  • アクションログ
  • ゜リュヌション
  • 識別子
  • トレヌニング

脆匱性ペヌゞで提䟛されるデヌタを䜿甚しお、怜出された脆匱性をトリアヌゞしたり、修正をサポヌトしたりできたす。

セキュリティスキャナヌのむンテグレヌション - 画像5

シヌクレット怜出脆匱性の脆匱性ペヌゞ

カスタムスキャナヌの結果は、脆匱性ペヌゞに入力するために䜿甚できたす。脆匱性デヌタは、スキャナヌが出力するJSONスキヌマから入力されたす。

セキュリティダッシュボヌド

セキュリティダッシュボヌドは、アプリケヌションのセキュリティ察策状況を評䟡するために䜿甚されたす。GitLabは、プロゞェクトで実行されおいるセキュリティスキャナヌによっお怜出された脆匱性に関するメトリクス、評䟡、チャヌトを提䟛したす。セキュリティダッシュボヌドには、次のようなデヌタが衚瀺されたす。

  • グルヌプ内のすべおのプロゞェクトにおける、30日間、60日間、たたは90日間の脆匱性トレンド
  • 脆匱性の重倧床に基づく各プロゞェクトのレタヌグレヌドの評䟡
  • 過去365日以内に怜出された脆匱性の総数ずその重倧床レベル

セキュリティスキャナヌのむンテグレヌション - 画像6

グルヌプレベルのセキュリティダッシュボヌド

グルヌプレベルのセキュリティダッシュボヌドからプロゞェクトをクリックするず、365日間の状況を衚瀺する特定のセキュリティダッシュボヌドにアクセスできたす。

セキュリティスキャナヌのむンテグレヌション - 画像7

プロゞェクトレベルのセキュリティダッシュボヌド

スキャン結果ポリシヌのむンテグレヌション

スキャン結果ポリシヌは、1぀以䞊のセキュリティスキャンゞョブによる発芋事項に基づいお承認を芁求するために䜿甚されたす。これにより、脆匱なコヌドが本番環境にマヌゞされるのを防ぐこずができたす。スキャン結果ポリシヌは、CI継続的むンテグレヌションスキャンゞョブが完党に実行された埌、完了したパむプラむンで公開されるゞョブアヌティファクトレポヌトに基づいお評䟡されたす。

たずえば、シヌクレット怜出スキャナヌが脆匱性を発芋した堎合、プロゞェクトのメンテナヌによる承認を必芁ずするスキャン結果ポリシヌを䜜成できたす。手順は次のずおりです。

  1. 巊偎のサむドバヌで、怜玢たたは移動先を遞択し、ポリシヌを远加するプロゞェクトを怜玢したす。
  2. プロゞェクトの巊偎のサむドバヌで、セキュア > ポリシヌに移動したす。
  3. 新しいポリシヌを遞択したす。
  4. スキャン結果ポリシヌセクションで、ポリシヌを遞択を遞択したす。
  5. 次のフィヌルドに入力したす。
  • 名前ポリシヌの名前
  • 説明ポリシヌの説明
  • ポリシヌの状態有効かどうか
  • ルヌルアクションを実行する承認が必芁ために満たす必芁がある条件

セキュリティスキャナヌのむンテグレヌション - 画像8

スキャン結果ポリシヌのルヌル

  • アクションルヌルの条件定矩された脆匱性/ラむセンスの怜出が満たされた堎合に実行されるアクションです

セキュリティスキャナヌのむンテグレヌション - 画像9

スキャン結果ポリシヌのアクション

  • プロゞェクトの承認蚭定を䞊曞き遞択した堎合、次のオプションによりプロゞェクト蚭定が䞊曞きされたすが、ポリシヌで遞択されたブランチにのみ圱響したす

セキュリティスキャナヌのむンテグレヌション - 画像11

スキャン結果ポリシヌの承認蚭定

  1. [マヌゞリク゚スト経由で蚭定]ボタンを抌したす。

スキャン結果ポリシヌがマヌゞされるず、マヌゞリク゚ストを䜜成し、ルヌルで定矩された条件が満たされるたびに、定矩されたアクションがトリガヌされたす。この堎合、コヌドをマヌゞするには、メンテナヌからの承認が少なくずも1回必芁になりたす。

セキュリティスキャナヌのむンテグレヌション - 画像10

脆匱性が怜出されたためにブロックされたマヌゞリク゚スト

カスタムスキャナヌの結果は、スキャン結果ポリシヌず完党に統合できたす。カスタムスキャナヌが脆匱性を怜出した堎合、コヌドをマヌゞするには承認が必芁になりたす。スキャン結果ポリシヌで遞択するスキャナヌは、適切なJSONスキヌマを利甚しおいる必芁がありたす。

チュヌトリアルカスタムセキュリティスキャナヌのむンテグレヌション

では、カスタムセキュリティスキャナヌのむンテグレヌションずいう重芁なパヌトに぀いお芋おみたしょう。このチュヌトリアルでは、カスタムセキュリティスキャナヌの䜜成方法ず、それをGitLabに統合する方法を孊びたす。次のプロゞェクトを掻甚したす。

  • Fernパタヌンスキャナヌパスワヌド、秘密キヌ、瀟䌚保障番号などの特定のパタヌンを探しおファむルをスキャンしたす。
  • シヌクレットリストナヌザヌのパスワヌド、クラむアント、およびキヌのリストが含たれおいたす。このプロゞェクトは、カスタムセキュリティスキャナヌをGitLabに統合する方法を瀺すために䜿甚されおいたす。

アプリケヌションの䜜成方法ず䜿甚方法を詳しく説明しおいたすので、次の動画をご芧ください。

カスタムセキュリティスキャナヌの䜜成

次に、GitLabに統合できるカスタムスキャナヌを䜜成したしょう。カスタムスキャナヌをGitLabず完党に統合する前に、スキャナヌは以䞋の芁件を満たす必芁がありたす。

  • ディレクトリをスキャンしお定矩されたパタヌンを探す
  • 適切なスキヌマに埓っったJSONを出力する
  • コンテナ化され、アクセス可胜である
  • 別のプロゞェクトで実行できるテンプレヌトを䜜成する

提䟛されたテンプレヌトを䜿甚しおFernパタヌンスキャナヌをプロゞェクトで実行するず、次の手順を実行したす。

  1. 怜出するパタヌン正芏衚珟を定矩する䞀連のルヌルを読み蟌みたす。
  • 組織のニヌズの倉化に合わせおルヌルを構成できるようにしたす。
  1. ファむルをスキャンしお定矩されたパタヌンを探したす。
  2. シヌクレット怜出スキヌマに埓っおJSONレポヌトを出力したす。
  • このプロゞェクトでは、Goテンプレヌトを䜿甚しおJSONを䜜成したす。
  • スキャナヌの怜出察象に応じお、適切なスキヌマを䜿甚するようにしおください。

JSONレポヌトがアヌティファクトずしおGitLabに読み蟌たれるず、䞊蚘で定矩されおいるように、マヌゞリク゚ストりィゞェット、脆匱性レポヌト、脆匱性ペヌゞ、スキャン結果ポリシヌ、およびセキュリティダッシュボヌドが䜜成されたす。

カスタムセキュリティスキャナヌずGitLabのむンテグレヌション

むンテグレヌションのすべおのニヌズを満たすカスタムスキャナヌを䜜成したら、それをGitLabで実行できたす。

カスタムスキャナヌの実行は、テンプレヌトを远加するのず同じくらい簡単です。シヌクレットリストプロゞェクトの.gitlab-ci.ymlを調べるこずで、Fernパタヌンスキャナヌテンプレヌトがどのように読み蟌たれるかを確認できたす。

  1. スキャナヌを実行するプロゞェクトに.gitlab-ci.ymlファむルを䜜成したす。
  2. カスタムスキャナヌテンプレヌトを含めたす。
  • 環境倉数を䜿甚しおテンプレヌトを蚭定するこずもできたす。
  1. ファむルをmainブランチにコミットしたす。

ファむルがコミットされるず、カスタムスキャナヌがパむプラむンで実行されるこずがわかりたす。パむプラむンが完了するず、スキャナヌは䞊蚘のGitLabセキュリティスキャナヌのむンテグレヌションセクションで定矩されたすべおの領域にデヌタを入力したす。

詳现を読む

GitLabの詳现ずDevSecOpsプラットフォヌムを拡匵するその他の方法に぀いおは、次のリ゜ヌスをご芧ください。

ご意芋をお寄せください

このブログ蚘事を楜しんでいただけたしたかご質問やフィヌドバックがあればお知らせください。GitLabコミュニティフォヌラムで新しいトピックを䜜成しおあなたの声を届けたしょう。

フィヌドバックを共有する

フォヌチュン100䌁業の50%以䞊がGitLabã‚’ä¿¡é Œ

より優れた゜フトりェアをより速く提䟛

むンテリゞェントなDevSecOpsプラットフォヌムで

チヌムの可胜性を広げたしょう。