[{"data":1,"prerenderedAt":823},["ShallowReactive",2],{"/ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab":3,"navigation-ja-jp":40,"banner-ja-jp":461,"footer-ja-jp":471,"blog-post-authors-ja-jp-Fernando Diaz":707,"blog-related-posts-ja-jp-how-to-integrate-custom-security-scanners-into-gitlab":722,"blog-promotions-ja-jp":762,"next-steps-ja-jp":814},{"id":4,"title":5,"authorSlugs":6,"authors":8,"body":10,"category":11,"categorySlug":11,"config":12,"content":16,"date":24,"description":17,"extension":25,"externalUrl":26,"featured":15,"heroImage":19,"isFeatured":15,"meta":27,"navigation":15,"path":28,"publishedDate":24,"rawbody":29,"seo":30,"slug":14,"stem":35,"tagSlugs":36,"tags":38,"template":13,"updatedDate":26,"__hash__":39},"blogPosts/ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab.md","GitLabにカスタムセキュリティスキャナーをインテグレーションする方法",[7],"fernando-diaz",[9],"Fernando Diaz","最も包括的なDevSecOpsプラットフォームであるGitLabには、アプリケーションにおけるプラン、管理、ビルド、デプロイ、セキュア、ガバナンス、およびモニタリングに必要なすべての機能が備わっています。しかし、サードパーティのツールやカスタムツールを使用してGitLabを拡張したいときもあります。たとえば、別のソリューションからDevSecOpsプラットフォームに移行したり、サードパーティのツールを評価したり、独自の、またはカスタムビルドのソリューションをGitLabにインテグレーションしたりすることが求められる場合があります。\n\nこの記事では、次の内容について説明します。\n- [GitLab DevSecOpsプラットフォームの拡張性](#gitlab-devsecops-platform-extensibility)\n- [GitLabセキュリティスキャナーのインテグレーション](#gitlab-security-scanner-integration)\n- [マージリクエストのセキュリティウィジェット](#merge-request-security-widget)\n- [パイプラインセキュリティセクション](#pipeline-security-section\n)\n- [脆弱性レポート](#vulnerability-report)\n- [脆弱性ページ](#vulnerability-pages)\n- [セキュリティダッシュボード](#security-dashboard)\n- [スキャン結果ポリシーのインテグレーション](#scan-result-policy-integration)\n- [チュートリアル：カスタムセキュリティスキャナーのインテグレーション](#tutorial-integrating-custom-security-scanners)\n- [カスタムセキュリティスキャナーの作成](#creating-a-custom-security-scanner)\n- [カスタムセキュリティスキャナーとGitLabのインテグレーション](#integrating-a-custom-security-scanner-with-gitlab)\n\n## GitLab DevSecOpsプラットフォームの拡張性\n\nGitLabはさまざまな方法で拡張でき、組織で必要となる拡張機能をサポートします。これらのインテグレーションの一般的な例としては、次のようなものがあります。\n\n- JenkinsやSlackなどの外部アプリケーションのインテグレーション\n- BugzillaやJiraなどの外部イシュートラッキングのインテグレーション\n- LDAPやSAMLなどの外部認証プロバイダーのインテグレーション\n- FortifyやCheckmarxなどの外部セキュリティスキャナーのインテグレーション\n- AWSやGCPのアクセスキーなどの流出したシークレットに対応する機能\n\n利用可能なすべてのインテグレーション機能は、[GitLabドキュメントとのインテグレーション](https://docs.gitlab.com/ja-jp/integration/)で確認できます（注：ドキュメントにはすべてのインテグレーションが記載されているわけではありません）。\n\n## GitLabセキュリティスキャナーのインテグレーション\n\n[サードパーティのセキュリティスキャナー](https://docs.gitlab.com/ja-jp/integration/#security-improvements)または[カスタムビルドのセキュリティスキャナー](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration)をGitLabにインテグレーションして、マージリクエストウィジェット、パイプラインセキュリティセクション、脆弱性レポート、脆弱性ページ、セキュリティダッシュボード、およびスキャン結果ポリシーを作成できます。各インテグレーションについて確認しましょう。\n\n### マージリクエストのセキュリティウィジェット\n\nマージリクエストには、新たに検出された脆弱性の概要を表示するセキュリティウィジェットが含まれています。\n\n![セキュリティスキャナーのインテグレーション - 画像1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097088837.png)\n\n\u003Ccenter>\u003Ci>マージリクエストのセキュリティウィジェット\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n脆弱性をクリックすると、次の情報がポップアップ表示されます。\n- 状態\n- 説明\n- プロジェクト\n- ファイル\n- 識別子\n- 重大度\n- ツール\n- スキャナープロバイダー\n\n![セキュリティスキャナーのインテグレーション - 画像2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097088838.png)\n\n\u003Ccenter>\u003Ci>実行可能な脆弱性とその詳細\u003C/i>\u003C/center>\n\n\u003Cp>\u003C/p>\n\nこれらの脆弱性は実行可能なため、無視するか、非公開のイシューとして作成できます。\n\nカスタムスキャナーの結果は、セキュリティウィジェットに入力するために使用できます。脆弱性データは、スキャナーが出力するJSONスキーマから入力されます。\n\n### パイプラインセキュリティセクション\n\nすべての有効なセキュリティアナライザーはパイプラインで実行され、結果をアーティファクトとして出力します。これらのアーティファクトは重複排除を含む処理が行われ、結果はパイプラインセキュリティタブに表示されます。ここから、生成されたJSONファイルをダウンロードすることもできます。\n\n![セキュリティスキャナーのインテグレーション - 画像3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750097088840.png)\n\n\u003Ccenter>\u003Ci>パイプラインセキュリティタブ\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nカスタムスキャナーの結果は、パイプラインセキュリティタブに入力するために使用できます。列は、スキャナーが出力するJSONスキーマを使用して入力されます。\n\n### 脆弱性レポート\n\n脆弱性レポートには、デフォルトブランチのスキャンから得られた脆弱性に関する情報が記載されています。これには以下が含まれます。\n\n- 重大度レベルごとの脆弱性の総数\n- 一般的な脆弱性属性のフィルター\n- 表形式のレイアウトで表示される各脆弱性の詳細\n\n![セキュリティスキャナーのインテグレーション - 画像4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097088842.png)\n\n\u003Ccenter>\u003Ci>脆弱性レポート\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nデフォルトブランチのカスタムスキャナーの結果を使用して、脆弱性レポートを作成できます。\n\n### 脆弱性ページ\n\n脆弱性レポート内の脆弱性をクリックすると、その脆弱性に関するページに移動します。プロジェクト内の各脆弱性には、次のような詳細情報が記載されている脆弱性ページがあります。\n\n- 説明\n- 検出時期\n- 現在の状態\n- 検出場所\n- 実行可能なアクション\n- 紐つけられたイシュー\n- アクションログ\n- ソリューション\n- 識別子\n- トレーニング\n\n脆弱性ページで提供されるデータを使用して、検出された脆弱性をトリアージしたり、修正をサポートしたりできます。\n\n![セキュリティスキャナーのインテグレーション - 画像5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097088844.png)\n\n\u003Ccenter>\u003Ci>シークレット検出脆弱性の脆弱性ページ\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nカスタムスキャナーの結果は、脆弱性ページに入力するために使用できます。脆弱性データは、スキャナーが出力するJSONスキーマから入力されます。\n\n### セキュリティダッシュボード\n\nセキュリティダッシュボードは、アプリケーションのセキュリティ対策状況を評価するために使用されます。GitLabは、プロジェクトで実行されているセキュリティスキャナーによって検出された脆弱性に関するメトリクス、評価、チャートを提供します。セキュリティダッシュボードには、次のようなデータが表示されます。\n\n- グループ内のすべてのプロジェクトにおける、30日間、60日間、または90日間の脆弱性トレンド\n- 脆弱性の重大度に基づく各プロジェクトのレターグレードの評価\n- 過去365日以内に検出された脆弱性の総数とその重大度レベル\n\n![セキュリティスキャナーのインテグレーション - 画像6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750097088846.png)\n\n\u003Ccenter>\u003Ci>グループレベルのセキュリティダッシュボード\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nグループレベルのセキュリティダッシュボードからプロジェクトをクリックすると、365日間の状況を表示する特定のセキュリティダッシュボードにアクセスできます。\n\n![セキュリティスキャナーのインテグレーション - 画像7](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097088847.png)\n\n\u003Ccenter>\u003Ci>プロジェクトレベルのセキュリティダッシュボード\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n### スキャン結果ポリシーのインテグレーション\n\nスキャン結果ポリシーは、1つ以上のセキュリティスキャンジョブによる発見事項に基づいて承認を要求するために使用されます。これにより、脆弱なコードが本番環境にマージされるのを防ぐことができます。スキャン結果ポリシーは、CI（継続的インテグレーション）スキャンジョブが完全に実行された後、完了したパイプラインで公開されるジョブアーティファクトレポートに基づいて評価されます。\n\nたとえば、シークレット検出スキャナーが脆弱性を発見した場合、プロジェクトのメンテナーによる承認を必要とするスキャン結果ポリシーを作成できます。手順は次のとおりです。\n\n1. 左側のサイドバーで、**検索または移動先**を選択し、ポリシーを追加するプロジェクトを検索します。\n2. プロジェクトの左側のサイドバーで、**セキュア > ポリシー**に移動します。\n3. **新しいポリシー**を選択します。\n4. **スキャン結果ポリシー**セクションで、**ポリシーを選択**を選択します。\n5. 次のフィールドに入力します。\n- 名前：ポリシーの名前\n- 説明：ポリシーの説明\n- ポリシーの状態：有効かどうか\n- ルール：アクションを実行する（承認が必要）ために満たす必要がある条件\n\n![セキュリティスキャナーのインテグレーション - 画像8](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097088849.png)\n\u003Ccenter>\u003Ci>スキャン結果ポリシーのルール\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n- アクション：ルールの条件（定義された脆弱性/ライセンスの検出）が満たされた場合に実行されるアクションです\n\n![セキュリティスキャナーのインテグレーション - 画像9](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750097088850.png)\n\n\u003Ccenter>\u003Ci>スキャン結果ポリシーのアクション\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n- プロジェクトの承認設定を上書き：選択した場合、次のオプションによりプロジェクト設定が上書きされますが、ポリシーで選択されたブランチにのみ影響します\n\n![セキュリティスキャナーのインテグレーション - 画像11](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097088851.png)\n\n\u003Ccenter>\u003Ci>スキャン結果ポリシーの承認設定\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n6. [マージリクエスト経由で設定]ボタンを押します。\n\nスキャン結果ポリシーがマージされると、マージリクエストを作成し、ルールで定義された条件が満たされるたびに、定義されたアクションがトリガーされます。この場合、コードをマージするには、メンテナーからの承認が少なくとも1回必要になります。\n\n![セキュリティスキャナーのインテグレーション - 画像10](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750097088852.png)\n\n\u003Ccenter>\u003Ci>脆弱性が検出されたためにブロックされたマージリクエスト\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nカスタムスキャナーの結果は、スキャン結果ポリシーと完全に統合できます。カスタムスキャナーが脆弱性を検出した場合、コードをマージするには承認が必要になります。スキャン結果ポリシーで選択するスキャナーは、適切なJSONスキーマを利用している必要があります。\n\n## チュートリアル：カスタムセキュリティスキャナーのインテグレーション\n\nでは、カスタムセキュリティスキャナーのインテグレーションという重要なパートについて見てみましょう。このチュートリアルでは、カスタムセキュリティスキャナーの作成方法と、それをGitLabに統合する方法を学びます。次のプロジェクトを活用します。\n\n- [Fernパターンスキャナー](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner)：パスワード、秘密キー、社会保障番号などの特定のパターンを探してファイルをスキャンします。\n- [シークレットリスト](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/secret-list)：ユーザーのパスワード、クライアント、およびキーのリストが含まれています。このプロジェクトは、カスタムセキュリティスキャナーをGitLabに統合する方法を示すために使用されています。\n\nアプリケーションの作成方法と使用方法を詳しく説明していますので、次の動画をご覧ください。\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/timMbl5SP-w?si=R2DKtZ5MmBR1rQFL\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### カスタムセキュリティスキャナーの作成\n\n次に、GitLabに統合できるカスタムスキャナーを作成しましょう。カスタムスキャナーをGitLabと完全に統合する前に、スキャナーは以下の要件を満たす必要があります。\n- ディレクトリをスキャンして定義されたパターンを探す\n- 適切なスキーマに従っったJSONを出力する\n- コンテナ化され、アクセス可能である\n- 別のプロジェクトで実行できるテンプレートを作成する\n\n提供されたテンプレートを使用して[Fernパターンスキャナー](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner)をプロジェクトで実行すると、次の手順を実行します。\n1. 検出するパターン（正規表現）を定義する一連のルールを読み込みます。\n- 組織のニーズの変化に合わせてルールを構成できるようにします。\n2. ファイルをスキャンして定義されたパターンを探します。\n3. シークレット検出スキーマに従ってJSONレポートを出力します。\n- このプロジェクトでは、Goテンプレートを使用してJSONを作成します。\n- スキャナーの検出対象に応じて、適切なスキーマを使用するようにしてください。\n\nJSONレポートがアーティファクトとしてGitLabに読み込まれると、上記で定義されているように、マージリクエストウィジェット、脆弱性レポート、脆弱性ページ、スキャン結果ポリシー、およびセキュリティダッシュボードが作成されます。\n\n### カスタムセキュリティスキャナーとGitLabのインテグレーション\n\nインテグレーションのすべてのニーズを満たすカスタムスキャナーを作成したら、それをGitLabで実行できます。\n\nカスタムスキャナーの実行は、テンプレートを追加するのと同じくらい簡単です。[シークレットリスト](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/secret-list)プロジェクトの`.gitlab-ci.yml`を調べることで、Fernパターンスキャナーテンプレートがどのように読み込まれるかを確認できます。\n\n1. スキャナーを実行するプロジェクトに[.gitlab-ci.ymlファイル](https://docs.gitlab.com/ja-jp/ci/quick_start/#create-a-gitlab-ciyml-file)を作成します。\n2. [カスタムスキャナーテンプレート](https://docs.gitlab.com/ja-jp/ci/yaml/includes/)を含めます。\n- 環境変数を使用してテンプレートを設定することもできます。\n3. ファイルをmainブランチにコミットします。\n\nファイルがコミットされると、カスタムスキャナーがパイプラインで実行されることがわかります。パイプラインが完了すると、スキャナーは上記の[GitLabセキュリティスキャナーのインテグレーション](#gitlab-security-scanner-integration)セクションで定義されたすべての領域にデータを入力します。\n\n## 詳細を読む\n\nGitLabの詳細とDevSecOpsプラットフォームを拡張するその他の方法については、次のリソースをご覧ください。\n\n- [セキュリティスキャナーのGitLabインテグレーション](https://docs.gitlab.com/ja-jp/development/integrations/secure/)\n- [GitLabパートナーインテグレーション](https://docs.gitlab.com/ja-jp/integration/)\n- [カスタムセキュリティスキャナーのプロジェクトグループ](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration)\n- [シークレット漏洩への自動応答](https://docs.gitlab.com/ja-jp/user/application_security/secret_detection/automatic_response/)","security",{"template":13,"slug":14,"featured":15},"BlogPost","how-to-integrate-custom-security-scanners-into-gitlab",true,{"title":5,"description":17,"authors":18,"heroImage":19,"tags":20,"category":11,"date":24,"body":10},"ワークフローにカスタムセキュリティスキャナーを追加して、DevSecOpsプラットフォームを拡張する方法を学びましょう（わかりやすいチュートリアルが含まれています）。",[9],"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097082/Blog/Hero%20Images/Blog/Hero%20Images/securitycheck_securitycheck.png_1750097081856.png",[21,11,22,23],"tutorial","testing","DevSecOps platform","2024-02-27","md",null,{},"/ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab","---\nseo:\n  title: GitLabにカスタムセキュリティスキャナーをインテグレーションする方法\n  description: >-\n    ワークフローにカスタムセキュリティスキャナーを追加して、DevSecOpsプラットフォームを拡張する方法を学びましょう（わかりやすいチュートリアルが含まれています）。\n  ogTitle: GitLabにカスタムセキュリティスキャナーをインテグレーションする方法\n  ogDescription: >-\n    ワークフローにカスタムセキュリティスキャナーを追加して、DevSecOpsプラットフォームを拡張する方法を学びましょう（わかりやすいチュートリアルが含まれています）。\n  noIndex: false\n  ogImage: >-\n    https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097082/Blog/Hero%20Images/Blog/Hero%20Images/securitycheck_securitycheck.png_1750097081856.png\n  ogUrl: >-\n    https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab\n  ogSiteName: https://about.gitlab.com\n  ogType: article\n  canonicalUrls: >-\n    https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab\ntitle: GitLabにカスタムセキュリティスキャナーをインテグレーションする方法\ndescription: ワークフローにカスタムセキュリティスキャナーを追加して、DevSecOpsプラットフォームを拡張する方法を学びましょう（わかりやすいチュートリアルが含まれています）。\nauthors:\n  - Fernando Diaz\nheroImage: https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097082/Blog/Hero%20Images/Blog/Hero%20Images/securitycheck_securitycheck.png_1750097081856.png\ntags:\n  - tutorial\n  - security\n  - testing\n  - DevSecOps platform\ncategory: security\ndate: '2024-02-27'\nslug: how-to-integrate-custom-security-scanners-into-gitlab\nfeatured: true\ntemplate: BlogPost\n---\n\n最も包括的なDevSecOpsプラットフォームであるGitLabには、アプリケーションにおけるプラン、管理、ビルド、デプロイ、セキュア、ガバナンス、およびモニタリングに必要なすべての機能が備わっています。しかし、サードパーティのツールやカスタムツールを使用してGitLabを拡張したいときもあります。たとえば、別のソリューションからDevSecOpsプラットフォームに移行したり、サードパーティのツールを評価したり、独自の、またはカスタムビルドのソリューションをGitLabにインテグレーションしたりすることが求められる場合があります。\n\nこの記事では、次の内容について説明します。\n- [GitLab DevSecOpsプラットフォームの拡張性](#gitlab-devsecops-platform-extensibility)\n- [GitLabセキュリティスキャナーのインテグレーション](#gitlab-security-scanner-integration)\n- [マージリクエストのセキュリティウィジェット](#merge-request-security-widget)\n- [パイプラインセキュリティセクション](#pipeline-security-section\n)\n- [脆弱性レポート](#vulnerability-report)\n- [脆弱性ページ](#vulnerability-pages)\n- [セキュリティダッシュボード](#security-dashboard)\n- [スキャン結果ポリシーのインテグレーション](#scan-result-policy-integration)\n- [チュートリアル：カスタムセキュリティスキャナーのインテグレーション](#tutorial-integrating-custom-security-scanners)\n- [カスタムセキュリティスキャナーの作成](#creating-a-custom-security-scanner)\n- [カスタムセキュリティスキャナーとGitLabのインテグレーション](#integrating-a-custom-security-scanner-with-gitlab)\n\n## GitLab DevSecOpsプラットフォームの拡張性\n\nGitLabはさまざまな方法で拡張でき、組織で必要となる拡張機能をサポートします。これらのインテグレーションの一般的な例としては、次のようなものがあります。\n\n- JenkinsやSlackなどの外部アプリケーションのインテグレーション\n- BugzillaやJiraなどの外部イシュートラッキングのインテグレーション\n- LDAPやSAMLなどの外部認証プロバイダーのインテグレーション\n- FortifyやCheckmarxなどの外部セキュリティスキャナーのインテグレーション\n- AWSやGCPのアクセスキーなどの流出したシークレットに対応する機能\n\n利用可能なすべてのインテグレーション機能は、[GitLabドキュメントとのインテグレーション](https://docs.gitlab.com/ja-jp/integration/)で確認できます（注：ドキュメントにはすべてのインテグレーションが記載されているわけではありません）。\n\n## GitLabセキュリティスキャナーのインテグレーション\n\n[サードパーティのセキュリティスキャナー](https://docs.gitlab.com/ja-jp/integration/#security-improvements)または[カスタムビルドのセキュリティスキャナー](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration)をGitLabにインテグレーションして、マージリクエストウィジェット、パイプラインセキュリティセクション、脆弱性レポート、脆弱性ページ、セキュリティダッシュボード、およびスキャン結果ポリシーを作成できます。各インテグレーションについて確認しましょう。\n\n### マージリクエストのセキュリティウィジェット\n\nマージリクエストには、新たに検出された脆弱性の概要を表示するセキュリティウィジェットが含まれています。\n\n![セキュリティスキャナーのインテグレーション - 画像1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097088837.png)\n\n\u003Ccenter>\u003Ci>マージリクエストのセキュリティウィジェット\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n脆弱性をクリックすると、次の情報がポップアップ表示されます。\n- 状態\n- 説明\n- プロジェクト\n- ファイル\n- 識別子\n- 重大度\n- ツール\n- スキャナープロバイダー\n\n![セキュリティスキャナーのインテグレーション - 画像2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097088838.png)\n\n\u003Ccenter>\u003Ci>実行可能な脆弱性とその詳細\u003C/i>\u003C/center>\n\n\u003Cp>\u003C/p>\n\nこれらの脆弱性は実行可能なため、無視するか、非公開のイシューとして作成できます。\n\nカスタムスキャナーの結果は、セキュリティウィジェットに入力するために使用できます。脆弱性データは、スキャナーが出力するJSONスキーマから入力されます。\n\n### パイプラインセキュリティセクション\n\nすべての有効なセキュリティアナライザーはパイプラインで実行され、結果をアーティファクトとして出力します。これらのアーティファクトは重複排除を含む処理が行われ、結果はパイプラインセキュリティタブに表示されます。ここから、生成されたJSONファイルをダウンロードすることもできます。\n\n![セキュリティスキャナーのインテグレーション - 画像3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750097088840.png)\n\n\u003Ccenter>\u003Ci>パイプラインセキュリティタブ\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nカスタムスキャナーの結果は、パイプラインセキュリティタブに入力するために使用できます。列は、スキャナーが出力するJSONスキーマを使用して入力されます。\n\n### 脆弱性レポート\n\n脆弱性レポートには、デフォルトブランチのスキャンから得られた脆弱性に関する情報が記載されています。これには以下が含まれます。\n\n- 重大度レベルごとの脆弱性の総数\n- 一般的な脆弱性属性のフィルター\n- 表形式のレイアウトで表示される各脆弱性の詳細\n\n![セキュリティスキャナーのインテグレーション - 画像4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097088842.png)\n\n\u003Ccenter>\u003Ci>脆弱性レポート\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nデフォルトブランチのカスタムスキャナーの結果を使用して、脆弱性レポートを作成できます。\n\n### 脆弱性ページ\n\n脆弱性レポート内の脆弱性をクリックすると、その脆弱性に関するページに移動します。プロジェクト内の各脆弱性には、次のような詳細情報が記載されている脆弱性ページがあります。\n\n- 説明\n- 検出時期\n- 現在の状態\n- 検出場所\n- 実行可能なアクション\n- 紐つけられたイシュー\n- アクションログ\n- ソリューション\n- 識別子\n- トレーニング\n\n脆弱性ページで提供されるデータを使用して、検出された脆弱性をトリアージしたり、修正をサポートしたりできます。\n\n![セキュリティスキャナーのインテグレーション - 画像5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097088844.png)\n\n\u003Ccenter>\u003Ci>シークレット検出脆弱性の脆弱性ページ\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nカスタムスキャナーの結果は、脆弱性ページに入力するために使用できます。脆弱性データは、スキャナーが出力するJSONスキーマから入力されます。\n\n### セキュリティダッシュボード\n\nセキュリティダッシュボードは、アプリケーションのセキュリティ対策状況を評価するために使用されます。GitLabは、プロジェクトで実行されているセキュリティスキャナーによって検出された脆弱性に関するメトリクス、評価、チャートを提供します。セキュリティダッシュボードには、次のようなデータが表示されます。\n\n- グループ内のすべてのプロジェクトにおける、30日間、60日間、または90日間の脆弱性トレンド\n- 脆弱性の重大度に基づく各プロジェクトのレターグレードの評価\n- 過去365日以内に検出された脆弱性の総数とその重大度レベル\n\n![セキュリティスキャナーのインテグレーション - 画像6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750097088846.png)\n\n\u003Ccenter>\u003Ci>グループレベルのセキュリティダッシュボード\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nグループレベルのセキュリティダッシュボードからプロジェクトをクリックすると、365日間の状況を表示する特定のセキュリティダッシュボードにアクセスできます。\n\n![セキュリティスキャナーのインテグレーション - 画像7](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097088847.png)\n\n\u003Ccenter>\u003Ci>プロジェクトレベルのセキュリティダッシュボード\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n### スキャン結果ポリシーのインテグレーション\n\nスキャン結果ポリシーは、1つ以上のセキュリティスキャンジョブによる発見事項に基づいて承認を要求するために使用されます。これにより、脆弱なコードが本番環境にマージされるのを防ぐことができます。スキャン結果ポリシーは、CI（継続的インテグレーション）スキャンジョブが完全に実行された後、完了したパイプラインで公開されるジョブアーティファクトレポートに基づいて評価されます。\n\nたとえば、シークレット検出スキャナーが脆弱性を発見した場合、プロジェクトのメンテナーによる承認を必要とするスキャン結果ポリシーを作成できます。手順は次のとおりです。\n\n1. 左側のサイドバーで、**検索または移動先**を選択し、ポリシーを追加するプロジェクトを検索します。\n2. プロジェクトの左側のサイドバーで、**セキュア > ポリシー**に移動します。\n3. **新しいポリシー**を選択します。\n4. **スキャン結果ポリシー**セクションで、**ポリシーを選択**を選択します。\n5. 次のフィールドに入力します。\n- 名前：ポリシーの名前\n- 説明：ポリシーの説明\n- ポリシーの状態：有効かどうか\n- ルール：アクションを実行する（承認が必要）ために満たす必要がある条件\n\n![セキュリティスキャナーのインテグレーション - 画像8](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097088849.png)\n\u003Ccenter>\u003Ci>スキャン結果ポリシーのルール\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n- アクション：ルールの条件（定義された脆弱性/ライセンスの検出）が満たされた場合に実行されるアクションです\n\n![セキュリティスキャナーのインテグレーション - 画像9](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750097088850.png)\n\n\u003Ccenter>\u003Ci>スキャン結果ポリシーのアクション\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n- プロジェクトの承認設定を上書き：選択した場合、次のオプションによりプロジェクト設定が上書きされますが、ポリシーで選択されたブランチにのみ影響します\n\n![セキュリティスキャナーのインテグレーション - 画像11](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097088851.png)\n\n\u003Ccenter>\u003Ci>スキャン結果ポリシーの承認設定\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\n6. [マージリクエスト経由で設定]ボタンを押します。\n\nスキャン結果ポリシーがマージされると、マージリクエストを作成し、ルールで定義された条件が満たされるたびに、定義されたアクションがトリガーされます。この場合、コードをマージするには、メンテナーからの承認が少なくとも1回必要になります。\n\n![セキュリティスキャナーのインテグレーション - 画像10](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097089/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750097088852.png)\n\n\u003Ccenter>\u003Ci>脆弱性が検出されたためにブロックされたマージリクエスト\u003C/i>\u003C/center>\n\u003Cp>\u003C/p>\n\nカスタムスキャナーの結果は、スキャン結果ポリシーと完全に統合できます。カスタムスキャナーが脆弱性を検出した場合、コードをマージするには承認が必要になります。スキャン結果ポリシーで選択するスキャナーは、適切なJSONスキーマを利用している必要があります。\n\n## チュートリアル：カスタムセキュリティスキャナーのインテグレーション\n\nでは、カスタムセキュリティスキャナーのインテグレーションという重要なパートについて見てみましょう。このチュートリアルでは、カスタムセキュリティスキャナーの作成方法と、それをGitLabに統合する方法を学びます。次のプロジェクトを活用します。\n\n- [Fernパターンスキャナー](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner)：パスワード、秘密キー、社会保障番号などの特定のパターンを探してファイルをスキャンします。\n- [シークレットリスト](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/secret-list)：ユーザーのパスワード、クライアント、およびキーのリストが含まれています。このプロジェクトは、カスタムセキュリティスキャナーをGitLabに統合する方法を示すために使用されています。\n\nアプリケーションの作成方法と使用方法を詳しく説明していますので、次の動画をご覧ください。\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/timMbl5SP-w?si=R2DKtZ5MmBR1rQFL\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### カスタムセキュリティスキャナーの作成\n\n次に、GitLabに統合できるカスタムスキャナーを作成しましょう。カスタムスキャナーをGitLabと完全に統合する前に、スキャナーは以下の要件を満たす必要があります。\n- ディレクトリをスキャンして定義されたパターンを探す\n- 適切なスキーマに従っったJSONを出力する\n- コンテナ化され、アクセス可能である\n- 別のプロジェクトで実行できるテンプレートを作成する\n\n提供されたテンプレートを使用して[Fernパターンスキャナー](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner)をプロジェクトで実行すると、次の手順を実行します。\n1. 検出するパターン（正規表現）を定義する一連のルールを読み込みます。\n- 組織のニーズの変化に合わせてルールを構成できるようにします。\n2. ファイルをスキャンして定義されたパターンを探します。\n3. シークレット検出スキーマに従ってJSONレポートを出力します。\n- このプロジェクトでは、Goテンプレートを使用してJSONを作成します。\n- スキャナーの検出対象に応じて、適切なスキーマを使用するようにしてください。\n\nJSONレポートがアーティファクトとしてGitLabに読み込まれると、上記で定義されているように、マージリクエストウィジェット、脆弱性レポート、脆弱性ページ、スキャン結果ポリシー、およびセキュリティダッシュボードが作成されます。\n\n### カスタムセキュリティスキャナーとGitLabのインテグレーション\n\nインテグレーションのすべてのニーズを満たすカスタムスキャナーを作成したら、それをGitLabで実行できます。\n\nカスタムスキャナーの実行は、テンプレートを追加するのと同じくらい簡単です。[シークレットリスト](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration/secret-list)プロジェクトの`.gitlab-ci.yml`を調べることで、Fernパターンスキャナーテンプレートがどのように読み込まれるかを確認できます。\n\n1. スキャナーを実行するプロジェクトに[.gitlab-ci.ymlファイル](https://docs.gitlab.com/ja-jp/ci/quick_start/#create-a-gitlab-ciyml-file)を作成します。\n2. [カスタムスキャナーテンプレート](https://docs.gitlab.com/ja-jp/ci/yaml/includes/)を含めます。\n- 環境変数を使用してテンプレートを設定することもできます。\n3. ファイルをmainブランチにコミットします。\n\nファイルがコミットされると、カスタムスキャナーがパイプラインで実行されることがわかります。パイプラインが完了すると、スキャナーは上記の[GitLabセキュリティスキャナーのインテグレーション](#gitlab-security-scanner-integration)セクションで定義されたすべての領域にデータを入力します。\n\n## 詳細を読む\n\nGitLabの詳細とDevSecOpsプラットフォームを拡張するその他の方法については、次のリソースをご覧ください。\n\n- [セキュリティスキャナーのGitLabインテグレーション](https://docs.gitlab.com/ja-jp/development/integrations/secure/)\n- [GitLabパートナーインテグレーション](https://docs.gitlab.com/ja-jp/integration/)\n- [カスタムセキュリティスキャナーのプロジェクトグループ](https://gitlab.com/gitlab-da/tutorials/security-and-governance/custom-scanner-integration)\n- [シークレット漏洩への自動応答](https://docs.gitlab.com/ja-jp/user/application_security/secret_detection/automatic_response/)\n",{"title":5,"description":17,"ogTitle":5,"ogDescription":17,"noIndex":31,"ogImage":19,"ogUrl":32,"ogSiteName":33,"ogType":34,"canonicalUrls":32},false,"https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab","https://about.gitlab.com","article","ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab",[21,11,22,37],"devsecops-platform",[21,11,22,23],"Jio3T_hSoPWNGpqvoxomHHtihw4spS_BrQhVaSj9rn0",{"logo":41,"freeTrial":46,"sales":51,"login":56,"items":61,"search":381,"minimal":414,"duo":431,"switchNav":440,"pricingDeployment":451},{"config":42},{"href":43,"dataGaName":44,"dataGaLocation":45},"/ja-jp/","gitlab logo","header",{"text":47,"config":48},"無料トライアルを開始",{"href":49,"dataGaName":50,"dataGaLocation":45},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":52,"config":53},"お問い合わせ",{"href":54,"dataGaName":55,"dataGaLocation":45},"/ja-jp/sales/","sales",{"text":57,"config":58},"サインイン",{"href":59,"dataGaName":60,"dataGaLocation":45},"https://gitlab.com/users/sign_in/","sign in",[62,91,193,198,301,362],{"text":63,"config":64,"menu":66},"プラットフォーム",{"dataNavLevelOne":65},"platform",{"type":67,"columns":68},"cards",[69,75,83],{"title":63,"description":70,"link":71},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":72,"config":73},"プラットフォームを探索",{"href":74,"dataGaName":65,"dataGaLocation":45},"/ja-jp/platform/",{"title":76,"description":77,"link":78},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":79,"config":80},"GitLab Duoのご紹介",{"href":81,"dataGaName":82,"dataGaLocation":45},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":84,"description":85,"link":86},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":87,"config":88},"詳細はこちら",{"href":89,"dataGaName":90,"dataGaLocation":45},"/ja-jp/why-gitlab/","why gitlab",{"text":92,"left":15,"config":93,"menu":95},"製品",{"dataNavLevelOne":94},"solutions",{"type":96,"link":97,"columns":101,"feature":172},"lists",{"text":98,"config":99},"すべてのソリューションを表示",{"href":100,"dataGaName":94,"dataGaLocation":45},"/ja-jp/solutions/",[102,127,150],{"title":103,"description":104,"link":105,"items":110},"自動化","CI/CDと自動化でデプロイを加速",{"config":106},{"icon":107,"href":108,"dataGaName":109,"dataGaLocation":45},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[111,115,118,123],{"text":112,"config":113},"CI/CD",{"href":114,"dataGaLocation":45,"dataGaName":112},"/ja-jp/solutions/continuous-integration/",{"text":76,"config":116},{"href":81,"dataGaLocation":45,"dataGaName":117},"gitlab duo agent platform - product menu",{"text":119,"config":120},"ソースコード管理",{"href":121,"dataGaLocation":45,"dataGaName":122},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":124,"config":125},"自動化されたソフトウェアデリバリー",{"href":108,"dataGaLocation":45,"dataGaName":126},"Automated software delivery",{"title":128,"description":129,"link":130,"items":135},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":131},{"href":132,"dataGaName":133,"dataGaLocation":45,"icon":134},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[136,140,145],{"text":137,"config":138},"アプリケーションセキュリティテスト",{"href":132,"dataGaName":139,"dataGaLocation":45},"Application security testing",{"text":141,"config":142},"ソフトウェアサプライチェーンの安全性",{"href":143,"dataGaLocation":45,"dataGaName":144},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":146,"config":147},"ソフトウェアコンプライアンス",{"href":148,"dataGaName":149,"dataGaLocation":45},"/ja-jp/solutions/software-compliance/","software compliance",{"title":151,"link":152,"items":157},"測定",{"config":153},{"icon":154,"href":155,"dataGaName":156,"dataGaLocation":45},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[158,162,167],{"text":159,"config":160},"可視性と測定",{"href":155,"dataGaLocation":45,"dataGaName":161},"Visibility and Measurement",{"text":163,"config":164},"バリューストリーム管理",{"href":165,"dataGaLocation":45,"dataGaName":166},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":168,"config":169},"分析とインサイト",{"href":170,"dataGaLocation":45,"dataGaName":171},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":173,"type":96,"items":174},"GitLabが活躍する場所",[175,181,187],{"text":176,"config":177},"エンタープライズ",{"icon":178,"href":179,"dataGaLocation":45,"dataGaName":180},"Building","/ja-jp/enterprise/","enterprise",{"text":182,"config":183},"スモールビジネス",{"icon":184,"href":185,"dataGaLocation":45,"dataGaName":186},"Work","/ja-jp/small-business/","small business",{"text":188,"config":189},"公共部門",{"icon":190,"href":191,"dataGaLocation":45,"dataGaName":192},"Organization","/ja-jp/solutions/public-sector/","public sector",{"text":194,"config":195},"価格",{"href":196,"dataGaName":197,"dataGaLocation":45,"dataNavLevelOne":197},"/ja-jp/pricing/","pricing",{"text":199,"config":200,"menu":202},"リソース",{"dataNavLevelOne":201},"resources",{"type":96,"link":203,"columns":207,"feature":287},{"text":204,"config":205},"すべてのリソースを表示",{"href":206,"dataGaName":201,"dataGaLocation":45},"/ja-jp/resources/",[208,241,259],{"title":209,"items":210},"はじめに",[211,216,221,226,231,236],{"text":212,"config":213},"インストール",{"href":214,"dataGaName":215,"dataGaLocation":45},"/ja-jp/install/","install",{"text":217,"config":218},"クイックスタートガイド",{"href":219,"dataGaName":220,"dataGaLocation":45},"/ja-jp/get-started/","quick setup checklists",{"text":222,"config":223},"学ぶ",{"href":224,"dataGaLocation":45,"dataGaName":225},"https://university.gitlab.com/","learn",{"text":227,"config":228},"製品ドキュメント",{"href":229,"dataGaName":230,"dataGaLocation":45},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":232,"config":233},"ベストプラクティスビデオ",{"href":234,"dataGaName":235,"dataGaLocation":45},"/ja-jp/getting-started-videos/","best practice videos",{"text":237,"config":238},"インテグレーション",{"href":239,"dataGaName":240,"dataGaLocation":45},"/ja-jp/integrations/","integrations",{"title":242,"items":243},"検索する",[244,249,254],{"text":245,"config":246},"お客様成功事例",{"href":247,"dataGaName":248,"dataGaLocation":45},"/ja-jp/customers/","customer success stories",{"text":250,"config":251},"ブログ",{"href":252,"dataGaName":253,"dataGaLocation":45},"/ja-jp/blog/","blog",{"text":255,"config":256},"リモート",{"href":257,"dataGaName":258,"dataGaLocation":45},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":260,"items":261},"つなげる",[262,267,272,277,282],{"text":263,"config":264},"GitLabサービス",{"href":265,"dataGaName":266,"dataGaLocation":45},"/ja-jp/services/","services",{"text":268,"config":269},"コミュニティ",{"href":270,"dataGaName":271,"dataGaLocation":45},"/community/","community",{"text":273,"config":274},"フォーラム",{"href":275,"dataGaName":276,"dataGaLocation":45},"https://forum.gitlab.com/","forum",{"text":278,"config":279},"イベント",{"href":280,"dataGaName":281,"dataGaLocation":45},"/events/","events",{"text":283,"config":284},"パートナー",{"href":285,"dataGaName":286,"dataGaLocation":45},"/ja-jp/partners/","partners",{"config":288,"text":291,"image":292,"link":296},{"background":289,"textColor":290},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":293,"config":294},"ソースプロモカード",{"src":295},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":297,"config":298},"最新情報を読む",{"href":299,"dataGaName":300,"dataGaLocation":45},"/ja-jp/the-source/","the source",{"text":302,"config":303,"menu":305},"会社情報",{"dataNavLevelOne":304},"company",{"type":96,"columns":306},[307],{"items":308},[309,314,320,322,327,332,337,342,347,352,357],{"text":310,"config":311},"GitLabについて",{"href":312,"dataGaName":313,"dataGaLocation":45},"/ja-jp/company/","about",{"text":315,"config":316,"footerGa":319},"採用情報",{"href":317,"dataGaName":318,"dataGaLocation":45},"/jobs/","jobs",{"dataGaName":318},{"text":278,"config":321},{"href":280,"dataGaName":281,"dataGaLocation":45},{"text":323,"config":324},"経営陣",{"href":325,"dataGaName":326,"dataGaLocation":45},"/company/team/e-group/","leadership",{"text":328,"config":329},"チーム",{"href":330,"dataGaName":331,"dataGaLocation":45},"/company/team/","team",{"text":333,"config":334},"ハンドブック",{"href":335,"dataGaName":336,"dataGaLocation":45},"https://handbook.gitlab.com/","handbook",{"text":338,"config":339},"投資家向け情報",{"href":340,"dataGaName":341,"dataGaLocation":45},"https://ir.gitlab.com/","investor relations",{"text":343,"config":344},"トラストセンター",{"href":345,"dataGaName":346,"dataGaLocation":45},"/ja-jp/security/","trust center",{"text":348,"config":349},"AI Transparency Center",{"href":350,"dataGaName":351,"dataGaLocation":45},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":353,"config":354},"ニュースレター",{"href":355,"dataGaName":356,"dataGaLocation":45},"/company/contact/#contact-forms","newsletter",{"text":358,"config":359},"プレス",{"href":360,"dataGaName":361,"dataGaLocation":45},"/press/","press",{"text":52,"config":363,"menu":364},{"dataNavLevelOne":304},{"type":96,"columns":365},[366],{"items":367},[368,371,376],{"text":52,"config":369},{"href":54,"dataGaName":370,"dataGaLocation":45},"talk to sales",{"text":372,"config":373},"サポートを受ける",{"href":374,"dataGaName":375,"dataGaLocation":45},"https://support.gitlab.com","support portal",{"text":377,"config":378},"カスタマーポータル",{"href":379,"dataGaName":380,"dataGaLocation":45},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":382,"login":383,"suggestions":390},"閉じる",{"text":384,"link":385},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":386,"config":387},"GitLab.com",{"href":59,"dataGaName":388,"dataGaLocation":389},"search login","search",{"text":391,"default":392},"提案",[393,395,400,402,406,410],{"text":76,"config":394},{"href":81,"dataGaName":76,"dataGaLocation":389},{"text":396,"config":397},"コード提案（AI）",{"href":398,"dataGaName":399,"dataGaLocation":389},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":112,"config":401},{"href":114,"dataGaName":112,"dataGaLocation":389},{"text":403,"config":404},"GitLab on AWS",{"href":405,"dataGaName":403,"dataGaLocation":389},"/ja-jp/partners/technology-partners/aws/",{"text":407,"config":408},"GitLab on Google Cloud",{"href":409,"dataGaName":407,"dataGaLocation":389},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":411,"config":412},"GitLabを選ぶ理由",{"href":89,"dataGaName":413,"dataGaLocation":389},"Why GitLab?",{"freeTrial":415,"mobileIcon":419,"desktopIcon":424,"secondaryButton":427},{"text":47,"config":416},{"href":417,"dataGaName":50,"dataGaLocation":418},"https://gitlab.com/-/trials/new/","nav",{"altText":420,"config":421},"GitLabアイコン",{"src":422,"dataGaName":423,"dataGaLocation":418},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":420,"config":425},{"src":426,"dataGaName":423,"dataGaLocation":418},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":209,"config":428},{"href":429,"dataGaName":430,"dataGaLocation":418},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":432,"mobileIcon":436,"desktopIcon":438},{"text":433,"config":434},"GitLab Duoの詳細について",{"href":81,"dataGaName":435,"dataGaLocation":418},"gitlab duo",{"altText":420,"config":437},{"src":422,"dataGaName":423,"dataGaLocation":418},{"altText":420,"config":439},{"src":426,"dataGaName":423,"dataGaLocation":418},{"button":441,"mobileIcon":446,"desktopIcon":448},{"text":442,"config":443},"/switch",{"href":444,"dataGaName":445,"dataGaLocation":418},"#contact","switch",{"altText":420,"config":447},{"src":422,"dataGaName":423,"dataGaLocation":418},{"altText":420,"config":449},{"src":450,"dataGaName":423,"dataGaLocation":418},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":452,"mobileIcon":457,"desktopIcon":459},{"text":453,"config":454},"価格ページに戻る",{"href":196,"dataGaName":455,"dataGaLocation":418,"icon":456},"back to pricing","GoBack",{"altText":420,"config":458},{"src":422,"dataGaName":423,"dataGaLocation":418},{"altText":420,"config":460},{"src":426,"dataGaName":423,"dataGaLocation":418},{"title":462,"button":463,"config":468},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":464,"config":465},"6月10日のGitLab Transcendに申し込む",{"href":466,"dataGaName":467,"dataGaLocation":45},"/ja-jp/releases/whats-new/#sign-up","transcend event",{"layout":469,"icon":470,"disabled":31},"release","AiStar",{"data":472},{"text":473,"source":474,"edit":480,"contribute":485,"config":490,"items":495,"minimal":698},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":475,"config":476},"ページのソースを表示",{"href":477,"dataGaName":478,"dataGaLocation":479},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":481,"config":482},"このページを編集",{"href":483,"dataGaName":484,"dataGaLocation":479},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":486,"config":487},"ご協力をお願いします",{"href":488,"dataGaName":489,"dataGaLocation":479},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":491,"facebook":492,"youtube":493,"linkedin":494},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[496,541,594,637,664],{"title":194,"links":497,"subMenu":512},[498,502,507],{"text":499,"config":500},"プランの表示",{"href":196,"dataGaName":501,"dataGaLocation":479},"view plans",{"text":503,"config":504},"Premiumを選ぶ理由",{"href":505,"dataGaName":506,"dataGaLocation":479},"/ja-jp/pricing/premium/","why premium",{"text":508,"config":509},"Ultimateを選ぶ理由",{"href":510,"dataGaName":511,"dataGaLocation":479},"/ja-jp/pricing/ultimate/","why ultimate",[513],{"title":52,"links":514},[515,517,519,521,526,531,536],{"text":52,"config":516},{"href":54,"dataGaName":55,"dataGaLocation":479},{"text":372,"config":518},{"href":374,"dataGaName":375,"dataGaLocation":479},{"text":377,"config":520},{"href":379,"dataGaName":380,"dataGaLocation":479},{"text":522,"config":523},"ステータス",{"href":524,"dataGaName":525,"dataGaLocation":479},"https://status.gitlab.com/","status",{"text":527,"config":528},"利用規約",{"href":529,"dataGaName":530,"dataGaLocation":479},"/terms/","terms of use",{"text":532,"config":533},"プライバシーに関する声明",{"href":534,"dataGaName":535,"dataGaLocation":479},"/ja-jp/privacy/","privacy statement",{"text":537,"config":538},"Cookie 優先設定",{"dataGaName":539,"dataGaLocation":479,"id":540,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"title":92,"links":542,"subMenu":551},[543,547],{"text":544,"config":545},"DevSecOpsプラットフォーム",{"href":74,"dataGaName":546,"dataGaLocation":479},"devsecops platform",{"text":548,"config":549},"AI支援開発",{"href":81,"dataGaName":550,"dataGaLocation":479},"ai-assisted development",[552],{"title":553,"links":554},"トピック",[555,559,564,569,574,579,584,589],{"text":112,"config":556},{"href":557,"dataGaName":558,"dataGaLocation":479},"/ja-jp/topics/ci-cd/","cicd",{"text":560,"config":561},"GitOps",{"href":562,"dataGaName":563,"dataGaLocation":479},"/ja-jp/topics/gitops/","gitops",{"text":565,"config":566},"DevOps",{"href":567,"dataGaName":568,"dataGaLocation":479},"/ja-jp/topics/devops/","devops",{"text":570,"config":571},"バージョン管理",{"href":572,"dataGaName":573,"dataGaLocation":479},"/ja-jp/topics/version-control/","version control",{"text":575,"config":576},"DevSecOps",{"href":577,"dataGaName":578,"dataGaLocation":479},"/ja-jp/topics/devsecops/","devsecops",{"text":580,"config":581},"クラウドネイティブ",{"href":582,"dataGaName":583,"dataGaLocation":479},"/ja-jp/topics/cloud-native/","cloud native",{"text":585,"config":586},"コーディングのためのAI",{"href":587,"dataGaName":588,"dataGaLocation":479},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":590,"config":591},"エージェント型AI",{"href":592,"dataGaName":593,"dataGaLocation":479},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":595,"links":596},"ソリューション",[597,600,602,607,611,614,617,620,622,624,627,632],{"text":137,"config":598},{"href":132,"dataGaName":599,"dataGaLocation":479},"Application Security Testing",{"text":124,"config":601},{"href":108,"dataGaName":109,"dataGaLocation":479},{"text":603,"config":604},"アジャイル開発",{"href":605,"dataGaName":606,"dataGaLocation":479},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":608,"config":609},"SCM",{"href":121,"dataGaName":610,"dataGaLocation":479},"source code management",{"text":112,"config":612},{"href":114,"dataGaName":613,"dataGaLocation":479},"continuous integration & delivery",{"text":163,"config":615},{"href":165,"dataGaName":616,"dataGaLocation":479},"value stream management",{"text":560,"config":618},{"href":619,"dataGaName":563,"dataGaLocation":479},"/ja-jp/solutions/gitops/",{"text":176,"config":621},{"href":179,"dataGaName":180,"dataGaLocation":479},{"text":182,"config":623},{"href":185,"dataGaName":186,"dataGaLocation":479},{"text":625,"config":626},"公共機関",{"href":191,"dataGaName":192,"dataGaLocation":479},{"text":628,"config":629},"教育",{"href":630,"dataGaName":631,"dataGaLocation":479},"/ja-jp/solutions/education/","education",{"text":633,"config":634},"金融サービス",{"href":635,"dataGaName":636,"dataGaLocation":479},"/ja-jp/solutions/finance/","financial services",{"title":199,"links":638},[639,641,643,645,648,650,652,654,656,658,660,662],{"text":212,"config":640},{"href":214,"dataGaName":215,"dataGaLocation":479},{"text":217,"config":642},{"href":219,"dataGaName":220,"dataGaLocation":479},{"text":222,"config":644},{"href":224,"dataGaName":225,"dataGaLocation":479},{"text":227,"config":646},{"href":229,"dataGaName":647,"dataGaLocation":479},"docs",{"text":250,"config":649},{"href":252,"dataGaName":253,"dataGaLocation":479},{"text":245,"config":651},{"href":247,"dataGaName":248,"dataGaLocation":479},{"text":255,"config":653},{"href":257,"dataGaName":258,"dataGaLocation":479},{"text":263,"config":655},{"href":265,"dataGaName":266,"dataGaLocation":479},{"text":268,"config":657},{"href":270,"dataGaName":271,"dataGaLocation":479},{"text":273,"config":659},{"href":275,"dataGaName":276,"dataGaLocation":479},{"text":278,"config":661},{"href":280,"dataGaName":281,"dataGaLocation":479},{"text":283,"config":663},{"href":285,"dataGaName":286,"dataGaLocation":479},{"title":302,"links":665},[666,668,670,672,674,676,678,682,687,689,691,693],{"text":310,"config":667},{"href":312,"dataGaName":304,"dataGaLocation":479},{"text":315,"config":669},{"href":317,"dataGaName":318,"dataGaLocation":479},{"text":323,"config":671},{"href":325,"dataGaName":326,"dataGaLocation":479},{"text":328,"config":673},{"href":330,"dataGaName":331,"dataGaLocation":479},{"text":333,"config":675},{"href":335,"dataGaName":336,"dataGaLocation":479},{"text":338,"config":677},{"href":340,"dataGaName":341,"dataGaLocation":479},{"text":679,"config":680},"Sustainability",{"href":681,"dataGaName":679,"dataGaLocation":479},"/sustainability/",{"text":683,"config":684},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":685,"dataGaName":686,"dataGaLocation":479},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":343,"config":688},{"href":345,"dataGaName":346,"dataGaLocation":479},{"text":353,"config":690},{"href":355,"dataGaName":356,"dataGaLocation":479},{"text":358,"config":692},{"href":360,"dataGaName":361,"dataGaLocation":479},{"text":694,"config":695},"現代奴隷制の透明性に関する声明",{"href":696,"dataGaName":697,"dataGaLocation":479},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":699},[700,702,705],{"text":527,"config":701},{"href":529,"dataGaName":530,"dataGaLocation":479},{"text":703,"config":704},"Cookieの設定",{"dataGaName":539,"dataGaLocation":479,"id":540,"isOneTrustButton":15},{"text":532,"config":706},{"href":534,"dataGaName":535,"dataGaLocation":479},[708],{"id":709,"title":9,"body":26,"config":710,"content":712,"description":26,"extension":716,"meta":717,"navigation":15,"path":718,"seo":719,"stem":720,"__hash__":721},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":711},"BlogAuthor",{"name":9,"config":713},{"headshot":714,"ctfId":715},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[723,738,750],{"content":724,"config":736},{"heroImage":725,"body":726,"authors":727,"updatedDate":729,"date":730,"title":731,"tags":732,"description":735,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773843921/rm35fx4gylrsu9alf2fx.png","GitLab 18.10では、脆弱性管理の品質とスピードの向上に焦点を当て、AIを活用したさまざまな新しいセキュリティ機能が導入されました。これらの機能を組み合わせることで、デベロッパーが誤検出の調査に費やす時間を削減し、自動修正をワークフローに直接組み込めるようになるため、セキュリティの専門知識がなくても脆弱性を修正できる環境が実現します。\n\n新機能の概要は以下のとおりです。\n\n* **[静的アプリケーションセキュリティテスト（SAST）の誤検出判定](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/false_positive_detection/)** **の一般提供が開始されました。** このフローでは、LLMによるエージェント型推論を使用して、脆弱性が誤検出である可能性を判定できるため、セキュリティチームと開発チームは重大な脆弱性の修正に優先的に取り組めるようになります。\n* **[エージェント型SAST脆弱性の修正](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/agentic_vulnerability_resolution/)** **がベータ版として提供開始されました。** エージェント型SAST脆弱性解決は、検証済みのSAST脆弱性に対する修正案を含むマージリクエストを自動的に作成します。修正までの時間が短縮され、高度なセキュリティ専門知識の必要になるケースが少なくなります。\n* **[シークレットの誤検出判定機能](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/secret_false_positive_detection/)** **がベータ版として提供開始されました。** このフローは、AIを活用したノイズ削減をシークレット検出にも適用し、ダミーやテスト用のシークレットにフラグを付けてレビューの負担を軽減します。\n\nこれらのフローは、GitLab Duo Agent Platformを使用するGitLab Ultimateのお客様にご利用いただけます。\n\n## SASTの誤検出判定機能でトリアージ時間を短縮\n\n従来のSASTスキャナーは、コードパスが到達可能かどうかや、フレームワークが既にリスクを処理しているかどうかに関係なく、疑わしいコードパターンにすべてフラグ付けしていました。ランタイムコンテキストがなければ、実際の脆弱性と危険に見えるだけの安全なコードを区別できません。\n\nそのため、デベロッパーは誤検出と判明するまで、検出結果の調査に何時間も費やす可能性がありました。時間の経過とともにレポートへの信頼が低下し、実際のリスクの修正を担当するチームの作業が遅延する原因となっていたのです。\n\n各SASTスキャンの後、GitLab Duo Agent Platformは新しい「致命的」と「高」の重大度の検出結果を自動的に分析し、以下の情報を付加します。\n\n* 検出結果が誤検出である可能性を示す信頼度スコア\n* AI生成による判定理由の説明\n* UIにより「誤検出の可能性が高い」と「実際の脆弱性の可能性が高い」を簡単に目視で識別できるバッジ\n\nこれらの検出結果は、以下のように[脆弱性レポート](https://docs.gitlab.com/ja-jp/user/application_security/vulnerability_report/)に表示されます。レポートをフィルタリングして「誤検出ではない」とマークされた検出結果を絞り込むことで、チームはノイズの選別ではなく実際の脆弱性への対応に時間を使えるようになります。\n\n![脆弱性レポート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1773844787/i0eod01p7gawflllkgsr.png)\n\nGitLab Duo Agent Platformの評価はあくまで推奨事項です。すべての誤検出の判定はユーザーが管理でき、エージェントの推論をいつでも監査して信頼性の高いモデルを構築できます。\n\n## 脆弱性を自動修正に変換\n\n実際に脆弱性であると判明しても、まだ作業の半分が完了したにすぎません。修正には、コードパスの理解、安全なパッチの作成、他の部分への影響がないことの確認が必要です。\n\nSASTの誤検出判定フローによって脆弱性が誤検出ではない可能性が高いと判定された場合、エージェント型SAST脆弱性解決フローが自動的に以下を実行します。\n\n1. リポジトリから脆弱なコードとその周辺のコンテキストを読み取る\n2. 高品質な修正案を生成する\n3. 自動テストによって修正を検証する\n4. 以下を含む修正案のマージリクエストを作成する：\n\n   * 具体的なコード変更\n   * 信頼度スコア\n   * 変更内容とその理由の説明\n\nこのデモでは、GitLabがSAST脆弱性を検出からレビュー可能なマージリクエストまで自動的に処理する様子をご覧いただけます。エージェントがコードを読み取り、修正を生成・検証し、明確で説明可能な変更を含むMRを作成する流れをご確認ください。デベロッパーにセキュリティの専門知識がなくても、より迅速に修正を行えるようになります。\n\n\u003Ciframe src=\"https://player.vimeo.com/video/1174573325?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"GitLab 18.10 AI SAST False Positive Auto Remediation\">\u003C/iframe>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\nAI生成の提案と同様に、マージを行う前に提案されたマージリクエストを慎重にレビューしてください。\n\n## 実際のシークレットを特定\n\nシークレット検出は、チームが結果を信頼できて初めて有用なものとなります。レポートにテスト用の認証情報やプレースホルダーの値、サンプルトークンが大量に含まれていると、デベロッパーは実際の漏洩を修正するよりも、ノイズのレビューに時間を浪費してしまう可能性があります。その結果、修正が遅延し、スキャンへの信頼が低下しかねません。\n\nシークレットの誤検出判定機能は、チームが重要なシークレットに集中し、より迅速にリスクを軽減できるよう支援します。この機能がデフォルトブランチで実行されると、自動的に以下が行われます。\n\n1. 各検出結果を分析し、テスト用の認証情報、サンプル値、ダミーシークレットの可能性を特定する\n2. 検出結果が実際のリスクか誤検出の可能性が高いかの信頼度スコアを付与する\n3. 実際のシークレット、ノイズのいずれかとして扱われる理由の説明を生成する\n4. 脆弱性レポートにバッジを追加し、デベロッパーがステータスを一目で確認できるようにする\n\nデベロッパーは、脆弱性レポートからシークレット検出の結果に対して「**誤検出を確認**」を選択することで、この分析を手動でトリガーすることもできます。リスクのない検出結果を除外し、実際のシークレットへの対応をより速やかに開始できます。\n\n## AIを活用したセキュリティ機能を今すぐお試しください\n\nGitLab 18.10では、SASTとシークレット検出における誤検出ノイズの削減から、修正案を含むマージリクエストの自動生成まで、脆弱性ワークフロー全体をカバーする機能が導入されました。\n\nAIを活用したセキュリティ機能がレビュー時間の短縮と検出結果のマージ可能な修正への変換にどのように役立つかをご確認いただくには、[GitLab Duo Agent Platformの無料トライアルを今すぐ開始](https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_apac_brand_x_x_ja_gitlabjapanblogseo_gitlab-18-10-brings-ai-native-triage-and-remediation)してください。",[728],"Alisa Ho","2026-03-25","2026-03-19","GitLab 18.10がAIネイティブなトリアージと修正機能を導入",[733,11,734],"product","features","ノイズを排除して実際の脆弱性を特定し、修正案につなげるGitLab Duo Agent Platformの機能をご紹介します。",{"featured":31,"template":13,"slug":737},"gitlab-18-10-brings-ai-native-triage-and-remediation",{"content":739,"config":748},{"heroImage":740,"body":741,"authors":742,"updatedDate":743,"date":744,"title":745,"tags":746,"description":747,"category":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772721753/frfsm1qfscwrmsyzj1qn.png","コンテナの脆弱性は、次のデプロイメントを待ってくれるわけではありません。イメージのビルド時や、コンテナが本番環境で稼働している間など、あらゆるタイミングで発生する可能性があります。\nGitLab はこうした現実に対応するため、コンテナライフサイクルのさまざまな段階に対応した複数のコンテナスキャンアプローチを提供しています。\n\n本ガイドでは、GitLab が提供するコンテナスキャンの種類、各機能の有効化方法、および初期設定に役立つ一般的な構成についてご説明します。\n\n## コンテナスキャンが重要な理由\n\nコンテナイメージのセキュリティ脆弱性は、アプリケーションライフサイクル全体にわたってリスクをもたらします。ベースイメージ、OSパッケージ、アプリケーションの依存関係はいずれも、攻撃者が積極的に悪用する脆弱性を含んでいる可能性があります。コンテナスキャンはこれらのリスクを早期に、本番環境に到達する前に検出し、利用可能な場合は修正方法を提供します。\n\nコンテナスキャンはソフトウェアコンポジション分析（SCA）の重要なコンポーネントであり、コンテナ化されたアプリケーションが依存する外部依存関係を把握し、保護するために役立ちます。\n\n## GitLab コンテナスキャンの5つの種類\n\nGitLab は5つの異なるコンテナスキャンアプローチを提供しており、それぞれがセキュリティ戦略において固有の目的を果たします。\n\n### 1. パイプラインベースのコンテナスキャン\n\n* 機能：CI/CDパイプラインの実行中にコンテナイメージをスキャンし、デプロイ前に脆弱性を検出します。\n* 最適な用途：シフトレフトセキュリティ、脆弱性のあるイメージが本番環境に到達するのを防止\n* 利用可能なプラン：Free、Premium、Ultimate（Ultimateではより高度な機能を利用可能）\n* [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/container_scanning/)\n\nGitLab は Trivy セキュリティスキャナーを使用してコンテナイメージの既知の脆弱性を分析します。パイプラインの実行時にスキャナーがイメージを検査し、詳細なレポートを生成します。\n\n#### パイプラインベースのコンテナスキャンを有効にする方法\n\n**オプション A：事前設定済みのマージリクエスト**\n\n* プロジェクトで **Secure > セキュリティ設定** に移動します。\n* 「コンテナスキャン」の行を見つけます。\n* **マージリクエストで設定** を選択します。\n* 必要な設定を含むマージリクエストが自動的に作成されます。\n\n**オプション B：手動設定**\n\n* `.gitlab-ci.yml` に以下を追加します。\n\n```yaml\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n```\n\n#### 一般的な設定\n\n**特定のイメージをスキャンする：**\n\n特定のイメージをスキャンするには、`container_scanning` ジョブの `CS_IMAGE` 変数を上書きします。\n\n```yaml\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\ncontainer_scanning:\n  variables:\n    CS_IMAGE: myregistry.com/myapp:latest\n```\n\n**重大度のしきい値でフィルタリングする：**\n\n特定の重大度基準を持つ脆弱性のみを検出するには、`container_scanning` ジョブの `CS_SEVERITY_THRESHOLD` 変数を上書きします。以下の例では、重大度が **High** 以上の脆弱性のみが表示されます。\n\n```yaml\ninclude:\n  - template: Jobs/Container-Scanning.gitlab-ci.yml\n\ncontainer_scanning:\n  variables:\n    CS_SEVERITY_THRESHOLD: \"HIGH\"\n```\n\n#### マージリクエストでの脆弱性の確認\n\nマージリクエスト内でコンテナスキャンの脆弱性を直接確認することで、セキュリティレビューをシームレスかつ効率的に実施できます。CI/CDパイプラインにコンテナスキャンを設定すると、GitLab はマージリクエストの[セキュリティウィジェット](https://docs.gitlab.com/ja-jp/user/project/merge_requests/widgets/#application-security-scanning)に検出された脆弱性を自動的に表示します。\n\n![マージリクエストに表示されたコンテナスキャンの脆弱性](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547514/lt6elcq6jexdhqatdy8l.png \"マージリクエストに表示されたコンテナスキャンの脆弱性\")\n\n* マージリクエストの「セキュリティスキャン」セクションまでスクロールすると、コンテナイメージで新たに検出された脆弱性と既存の脆弱性の概要が確認できます。\n* **脆弱性** をクリックすると、重大度レベル、影響を受けるパッケージ、利用可能な修正ガイダンスなど、検出内容の詳細情報にアクセスできます。\n\n![GitLab セキュリティ - MRでの詳細表示](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547514/hplihdlekc11uvpfih1p.png)\n\n![GitLab セキュリティ - MRでの詳細表示](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/jnxbe7uld8wfeezboifs.png \"MRでのコンテナスキャン脆弱性の詳細\")\n\nこの可視性により、開発者とセキュリティチームはコンテナの脆弱性が本番環境に到達する前に発見・対処できるようになり、セキュリティがコードレビュープロセスに統合されます。\n\n#### 脆弱性レポートでの脆弱性の確認\n\nマージリクエストのレビューに加え、GitLab はプロジェクト内のすべてのコンテナスキャン結果を一元的に確認できる[脆弱性レポート](https://docs.gitlab.com/ja-jp/user/application_security/vulnerability_report/)を提供しており、セキュリティチームに包括的な可視性をもたらします。\n\n![コンテナスキャンでフィルタリングされた脆弱性レポート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547524/gagau279fzfgjpnvipm5.png \"コンテナスキャンでフィルタリングされた脆弱性レポート\")\n\n* プロジェクトのサイドバーで **セキュリティとコンプライアンス > 脆弱性レポート** に移動してレポートにアクセスします。\n* ここでは、ブランチ全体で検出されたすべてのコンテナ脆弱性が集約されて表示され、重大度、ステータス、スキャナーの種類、特定のコンテナイメージでフィルタリングする強力なオプションが利用できます。\n* 脆弱性をクリックすると、脆弱性ページにアクセスできます。\n\n![脆弱性ページ - 1番目のビュー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547520/e1woxupyoajhrpzrlylj.png)\n\n![脆弱性ページ - 2番目のビュー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547521/idzcftcgjc8eryixnbjn.png)\n\n![脆弱性ページ - 3番目のビュー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547522/mbbwbbprtf9anqqola10.png \"コンテナスキャン脆弱性の詳細\")\n\n[脆弱性の詳細](https://docs.gitlab.com/ja-jp/user/application_security/vulnerabilities/)では、影響を受けるコンテナイメージとレイヤーが正確に示されるため、脆弱性の発生源を容易に追跡できます。脆弱性をチームメンバーに割り当て、ステータスを変更（検出済み、確認済み、解決済み、却下済み）し、コラボレーションのためのコメントを追加し、修正作業の追跡のために関連するイシューをリンクすることができます。\n\nこのワークフローにより、脆弱性管理がスプレッドシートによる管理から開発プロセスの一部へと変わり、コンテナセキュリティの検出結果が体系的に追跡・優先順位付け・解決されるようになります。\n\n#### 依存関係リストの確認\n\nGitLab の[依存関係リスト](https://docs.gitlab.com/ja-jp/user/application_security/dependency_list/)は、コンテナイメージ内のすべてのコンポーネントをカタログ化した包括的なソフトウェア部品表（SBOM）を提供し、ソフトウェアサプライチェーンの完全な透明性をもたらします。\n\n* **セキュリティとコンプライアンス > 依存関係リスト** に移動すると、プロジェクト全体でコンテナスキャンが検出したすべてのパッケージ、ライブラリ、依存関係のインベントリにアクセスできます。\n* このビューは、ベースOSパッケージからアプリケーションレベルの依存関係まで、コンテナ内で実際に稼働しているものを把握するために非常に役立ちます。\n\n![GitLab 依存関係リスト](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/vjg6dk3nhajqamplroji.png \"GitLab 依存関係リスト（SBOM）\")\n\nパッケージマネージャー、ライセンスの種類、または脆弱性のステータスでリストをフィルタリングすることで、セキュリティリスクやコンプライアンス上の問題をもたらすコンポーネントを素早く特定できます。各依存関係エントリには関連する脆弱性が表示されるため、単独の検出結果としてではなく、実際のソフトウェアコンポーネントのコンテキストでセキュリティの問題を把握できます。\n\n### 2. レジストリ向けコンテナスキャン\n\n* 機能：`latest` タグで GitLab コンテナレジストリにプッシュされたイメージを自動的にスキャンします。\n* 最適な用途：手動のパイプラインを実行することなく、レジストリイメージの継続的なモニタリングを実施\n* 利用可能なプラン：Ultimate のみ\n* [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/container_scanning/#container-scanning-for-registry)\n\n`latest` タグが付いたコンテナイメージをプッシュすると、GitLab のセキュリティポリシーボットがデフォルトブランチに対してスキャンを自動的にトリガーします。パイプラインベースのスキャンとは異なり、このアプローチは継続的脆弱性スキャンと連携して、新たに公開されたアドバイザリーを監視します。\n\n#### レジストリ向けコンテナスキャンを有効にする方法\n\n1. **Secure > セキュリティ設定** に移動します。\n2. **レジストリ向けコンテナスキャン** セクションまでスクロールします。\n3. 機能をオンに切り替えます。\n\n![レジストリ向けコンテナスキャン](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547512/vntrlhtmsh1ecnwni5ji.png \"レジストリ向けコンテナスキャンの切り替えスイッチ\")\n\n#### 前提条件\n\n* プロジェクトのメンテナーロール以上\n* プロジェクトが空でないこと（デフォルトブランチに少なくとも1つのコミットが必要）\n* コンテナレジストリの通知が設定済みであること\n* パッケージメタデータデータベースが設定済みであること（GitLab.com ではデフォルトで有効）\n\n脆弱性は脆弱性レポートの **コンテナレジストリの脆弱性** タブに表示されます。\n\n### 3. マルチコンテナスキャン\n\n* 機能：単一のパイプライン内で複数のコンテナイメージを並行してスキャンします。\n* 最適な用途：マイクロサービスアーキテクチャや複数のコンテナイメージを持つプロジェクト\n* 利用可能なプラン：Free、Premium、Ultimate（現在ベータ版）\n* [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/container_scanning/multi_container_scanning/)\n\nマルチコンテナスキャンは動的な子パイプラインを使用してスキャンを並行実行するため、複数のイメージをスキャンする際のパイプライン全体の実行時間を大幅に短縮できます。\n\n#### マルチコンテナスキャンを有効にする方法\n\n1. リポジトリのルートに `.gitlab-multi-image.yml` ファイルを作成します。\n\n```yaml\nscanTargets:\n  - name: alpine\n    tag: \"3.19\"\n  - name: python\n    tag: \"3.9-slim\"\n  - name: nginx\n    tag: \"1.25\"\n```\n\n2. `.gitlab-ci.yml` にテンプレートを追加します。\n\n```yaml\ninclude:\n  - template: Jobs/Multi-Container-Scanning.latest.gitlab-ci.yml\n```\n\n#### 詳細設定\n\n**プライベートレジストリからイメージをスキャンする：**\n\n```yaml\nauths:\n  registry.gitlab.com:\n    username: ${CI_REGISTRY_USER}\n    password: ${CI_REGISTRY_PASSWORD}\n\nscanTargets:\n  - name: registry.gitlab.com/private/image\n    tag: latest\n```\n\n**ライセンス情報を含める：**\n\n```yaml\nincludeLicenses: true\n\nscanTargets:\n  - name: postgres\n    tag: \"15-alpine\"\n```\n\n### 4. 継続的脆弱性スキャン\n\n* 機能：パイプラインを実行することなく、新しいセキュリティアドバイザリーが公開された際に自動的に脆弱性を作成します。\n* 最適な用途：デプロイ間のプロアクティブなセキュリティモニタリング\n* 利用可能なプラン：Ultimate のみ\n* [ドキュメント](https://docs.gitlab.com/ja-jp/user/application_security/continuous_vulnerability_scanning/)\n\n従来のスキャンは、スキャン実行時の脆弱性しか検出できません。しかし、昨日スキャンしたパッケージに対して、明日新しい CVE が公開された場合はどうなるでしょうか。継続的脆弱性スキャンは、GitLab アドバイザリーデータベースを監視し、新しいアドバイザリーがコンポーネントに影響を与える際に自動的に脆弱性レコードを作成することでこの課題を解決します。\n\n#### 仕組み\n\n1. コンテナスキャンまたは依存関係スキャンジョブが CycloneDX SBOM を生成します。\n2. GitLab はこの SBOM からプロジェクトのコンポーネントを登録します。\n3. 新しいアドバイザリーが公開されると、GitLab はコンポーネントが影響を受けるかどうかを確認します。\n4. 脆弱性レポートに脆弱性が自動的に作成されます。\n\n#### 重要な考慮事項\n\n* スキャンは CI パイプラインではなく、バックグラウンドジョブ（Sidekiq）経由で実行されます。\n* 新しいコンポーネント検出には、過去14日以内に公開されたアドバイザリーのみが対象となります。\n* 脆弱性では「GitLab SBoM Vulnerability Scanner」がスキャナー名として使用されます。\n* 脆弱性を解決済みとしてマークするには、引き続きパイプラインベースのスキャンを実行する必要があります。\n\n### 5. 運用コンテナスキャン\n\n* 機能：スケジュールされた間隔で Kubernetes クラスター内の稼働中のコンテナをスキャンします。\n* 最適な用途：デプロイ後のセキュリティモニタリングとランタイム脆弱性の検出\n* 利用可能なプラン：Ultimate のみ\n* [ドキュメント](https://docs.gitlab.com/ja-jp/user/clusters/agent/vulnerabilities/)\n\n運用コンテナスキャンは、ビルド時のセキュリティとランタイムセキュリティの間のギャップを埋めます。GitLab Agent for Kubernetes を使用して、クラスター内で実際に稼働しているコンテナをスキャンし、デプロイ後に発生する脆弱性を検出します。\n\n#### 運用コンテナスキャンを有効にする方法\n\n[GitLab Kubernetes Agent](https://docs.gitlab.com/ja-jp/user/clusters/agent/install/) を使用している場合、エージェント設定ファイルに以下を追加できます。\n\n```yaml\ncontainer_scanning:\n  cadence: '0 0 * * *'  # 毎日深夜0時\n  vulnerability_report:\n    namespaces:\n      include:\n        - production\n        - staging\n```\n\nまた、GitLab Kubernetes Agent によるスケジュールスキャンを強制する[スキャン実行ポリシー](https://docs.gitlab.com/ja-jp/user/clusters/agent/vulnerabilities/#enable-via-scan-execution-policies)を作成することもできます。\n\n![スキャン実行ポリシー - 運用コンテナスキャン](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547515/gsgvjcq4sas4dfc8ciqk.png \"運用コンテナスキャンのスキャン実行ポリシー条件\")\n\n#### 結果の確認\n\n* **運用 > Kubernetes クラスター** に移動します。\n* **エージェント** タブを選択し、エージェントを選択します。\n* **セキュリティ** タブを選択してクラスターの脆弱性を確認します。\n* 結果は **脆弱性レポート** の **運用上の脆弱性** タブにも表示されます。\n\n## GitLab セキュリティポリシーによるセキュリティ態勢の強化\n\nGitLab セキュリティポリシーを使用すると、自動化されたポリシー駆動型のコントロールを通じて、コンテナワークフロー全体で一貫したセキュリティ標準を適用できます。これらのポリシーは、要件を開発パイプラインに直接組み込むことでセキュリティをシフトレフトし、コードが本番環境に到達する前に脆弱性を検出・対処できるようにします。\n\n#### スキャン実行ポリシーとパイプラインポリシー\n\n[スキャン実行ポリシー](https://docs.gitlab.com/ja-jp/user/application_security/policies/scan_execution_policies/)は、プロジェクト全体でコンテナスキャンがいつ・どのように実行されるかを自動化します。すべてのマージリクエストでコンテナスキャンをトリガーし、メインブランチの定期的なスキャンをスケジュールするポリシーなどを定義できます。これらのポリシーにより、各プロジェクトの CI/CD パイプラインで手動でスキャンを設定することなく、包括的なカバレッジが確保されます。\n\n使用するスキャナーのバージョンを指定し、スキャンパラメーターを一元的に設定することで、新しいコンテナセキュリティの脅威に対応しながら組織全体の一貫性を維持できます。\n\n![スキャン実行ポリシーの設定](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547517/z36dntxslqem9udrynvx.png \"スキャン実行ポリシーの設定\")\n\n[パイプライン実行ポリシー](https://docs.gitlab.com/ja-jp/user/application_security/policies/pipeline_execution_policies/)は、コンプライアンス要件に基づいてパイプラインにカスタムジョブを注入（または上書き）するための柔軟なコントロールを提供します。\n\nこれらのポリシーを使用して、コンテナスキャンジョブをパイプラインに自動的に注入したり、コンテナの脆弱性がリスク許容度を超えた場合にビルドを失敗させたり、特定のブランチやタグに対して追加のセキュリティチェックをトリガーしたり、本番環境向けコンテナイメージのコンプライアンス要件を適用したりすることができます。パイプライン実行ポリシーは自動化されたガードレールとして機能し、手動操作なしですべてのコンテナデプロイメントにセキュリティ標準が一貫して適用されるようにします。\n\n![パイプライン実行ポリシー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547517/ddhhugzcr2swptgodof2.png \"パイプライン実行ポリシーのアクション\")\n\n#### マージリクエスト承認ポリシー\n\n[マージリクエスト承認ポリシー](https://docs.gitlab.com/ja-jp/user/application_security/policies/merge_request_approval_policies/)は、コンテナの脆弱性を含むマージリクエストを指定された承認者がレビューし、承認することを要求することでセキュリティゲートを適用します。\n\n重大度の高い脆弱性が検出された場合にマージをブロックするポリシーや、新しいコンテナの検出結果を導入するマージリクエストにセキュリティチームの承認を要求するポリシーを設定できます。これらのポリシーにより、低リスクな変更の開発速度を維持しながら、脆弱性のあるコンテナイメージがパイプラインを通じて進むことを防ぎます。\n\n![MRでブロックを実行するマージリクエスト承認ポリシー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772547513/hgnbc1vl4ssqafqcyuzg.png \"MRでブロックを実行するマージリクエスト承認ポリシー\")\n\n## 適切なアプローチの選択\n\n| スキャンの種類   | 使用するタイミング   | 主なメリット                   |\n| --------- | ----------- | ------------------------ |\n| パイプラインベース | すべてのビルド時    | シフトレフトセキュリティ、脆弱なビルドをブロック |\n| レジストリスキャン | 継続的なモニタリング  | 保存されたイメージの新しい CVE を検出    |\n| マルチコンテナ   | マイクロサービス    | 並行スキャン、パイプラインの高速化        |\n| 継続的脆弱性    | デプロイ間       | プロアクティブなアドバイザリーモニタリング    |\n| 運用        | 本番環境のモニタリング | ランタイム脆弱性の検出              |\n\n包括的なセキュリティのためには、複数のアプローチを組み合わせることをお勧めします。開発中の問題を検出するためのパイプラインベースのスキャン、継続的なモニタリングのためのレジストリ向けコンテナスキャン、そして本番環境の可視性のための運用スキャンを組み合わせてご活用ください。\n\n## 今すぐ始める\n\nコンテナセキュリティへの最短ルートは、パイプラインベースのスキャンを有効にすることです。\n\n1. プロジェクトの **Secure > セキュリティ設定** に移動します。\n2. コンテナスキャンの **マージリクエストで設定** をクリックします。\n3. 作成されたマージリクエストをマージします。\n4. 次のパイプラインに脆弱性スキャンが含まれるようになります。\n\nその後、セキュリティ要件と GitLab のプランに応じて、追加のスキャンの種類を段階的に導入してください。\n\nコンテナセキュリティは一度実施すれば完了するものではなく、継続的なプロセスです。\nGitLab の包括的なコンテナスキャン機能を活用することで、ビルドからランタイムまでコンテナライフサイクルのあらゆる段階で脆弱性を検出できます。\n\n> GitLab がセキュリティ態勢の強化にどのように役立つかについての詳細は、[GitLab セキュリティ & ガバナンス ソリューションページ](https://about.gitlab.com/solutions/application-security-testing/)をご覧ください。",[9],"2026-03-09","2026-03-05","GitLab コンテナスキャン完全ガイド：SBOM生成から運用監視まで5つのスキャン手法",[11,21],"GitLab のさまざまなコンテナスキャン方法を詳しく解説し、コンテナライフサイクルの各段階でセキュリティを確保する方法をご紹介します。",{"slug":749,"featured":15,"template":13},"complete-guide-to-gitlab-container-scanning",{"content":751,"config":760},{"title":752,"description":753,"authors":754,"heroImage":756,"date":757,"body":758,"category":11,"tags":759},"GitLab.comのセキュリティ強化：多要素認証の必須化","Secure by Designへのコミットメントの一環として、GitLabが多要素認証（MFA）を必須化する方法と、それがユーザーに与える影響について解説します。",[755],"Kim Waters","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664923/Blog/Hero%20Images/security-checklist.png","2026-01-09","GitLab.comのすべてのユーザーアカウントのセキュリティ強化のため、GitLabでは、ユーザー名とパスワードを使用してサインインするすべてのユーザーとAPIエンドポイントに対して、多要素認証（MFA）を必須化します。\n\n## 多要素認証必須化の理由\n\n今回の変更は、GitLabの[Secure by Designへのコミットメント](https://about.gitlab.com/blog/last-year-we-signed-the-secure-by-design-pledge-heres-our-progress/)における重要な取り組みの1つです。MFAは、ソフトウェア開発業界全体で継続的な脅威となっているクレデンシャルスタッフィング攻撃やアカウント乗っ取り攻撃に対する重要な防御手段となります。\n\n## 知っておくべき重要な情報\n\n### 何が変わるのか？\n\nGitLabは、ユーザー名とパスワードで認証するサインインに対して、MFAを必須化します。これにより、パスワードだけでなく、重要な第2の認証レイヤーが追加されます。\n\n### 適用されるケースとされないケース\n\n1. ***適用されるケース：*** ユーザー名とパスワードでGitLab.comにサインインする場合、またはパスワードを使用してAPIに認証する場合\n2. ***適用されないケース：*** アクセスにソーシャルサインオン（Googleなど）またはシングルサインオン（SSO）のみを使用している場合（*注意：SSOを使用していても、直接ログイン用のパスワードを設定している場合は、SSO以外のパスワードベースのログインに対してMFAが必要になります）*\n\n### ロールアウトのタイムライン\n\n1. 実装は今後数か月にわたって段階的に行われます。これは、ユーザーの予期しない中断や生産性の低下を最小限に抑え、アカウントのロックアウトを防ぐことを目的としています。ユーザーグループによって時期は異なりますが、近日中にMFAの有効化を求められます。各グループは、実行したアクション、またはコントリビュートしたコードに基づいて選択されます。以下の方法で通知されます。\n\n   * ✉️ メール通知 - 影響を受けるフェーズの前\n   * 🔔 定期的な製品内リマインダー - 14日前\n   * ⏱️ 一定期間後（メールが届きます） - MFAを有効にするまでGitLabへのアクセスがブロックされます\n\n### 必要な対応\n\n1. ユーザー名とパスワードでGitLab.comにサインインする場合：\n\n   * パスキー、認証アプリ、WebAuthnデバイス、またはメール認証など、利用可能なMFA方法の1つを今すぐ事前に設定することを強くおすすめします。これにより、最も安全でシームレスな移行が保証されます。\n   * GitLab.comの**ユーザー設定**にアクセスします。\n   * **アカウント**セクションを選択します。\n   * **2要素認証**を有効にし、希望する方法（認証アプリやWebAuthnデバイスなど）を設定します。\n   * 必要に応じてアクセスを回復できるよう、**リカバリーコードを安全に保存**してください。\n2. パスワードを使用してAPIに認証する場合：\n\n   * 個人アクセストークン（PAT）への切り替えを事前に行うことを強くおすすめします。詳細については、[ドキュメント](https://docs.gitlab.com/ja-jp/user/profile/account/two_factor_authentication_troubleshooting/#error-http-basic-access-denied-if-a-password-was-provided-for-git-authentication-)をご確認ください。\n\n## よくある質問\n\n*期限までにMFAを有効にしないとどうなりますか？*\n\n* サインインする前にMFAの設定が必要になります。\n\n*CI/CDパイプラインや自動化に影響はありますか？*\n\n* はい、パスワードの代わりにPATまたはデプロイトークンを使用していない場合は影響があります。\n\n*SSOを使用していますが、直接サインインすることもあります。その場合、MFAは必要ですか？*\n\n* はい、フォールバックシナリオを含む、パスワードベースの認証にはMFAが必要です。\n\n*どのようなMFAリカバリーオプションが利用できますか？*\n\n* [トラブルシューティングドキュメント](https://docs.gitlab.com/ja-jp/user/profile/account/two_factor_authentication_troubleshooting/#recovery-options-and-2fa-reset)をご確認ください。*\n\n具体的なタイムラインとその他のリソースについては、ロールアウト日までに段階的に共有される予定です。この重要な変更についてご覧いただき、ありがとうございます。",[11,733],{"featured":31,"template":13,"slug":761},"strengthening-gitlab-com-security-mandatory-multi-factor-authentication",{"promotions":763},[764,778,789,800],{"id":765,"categories":766,"header":768,"text":769,"button":770,"image":775},"ai-modernization",[767],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":771,"config":772},"Get your AI maturity score",{"href":773,"dataGaName":774,"dataGaLocation":253},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":776},{"src":777},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":779,"categories":780,"header":781,"text":769,"button":782,"image":786},"devops-modernization",[733,578],"Are you just managing tools or shipping innovation?",{"text":783,"config":784},"Get your DevOps maturity score",{"href":785,"dataGaName":774,"dataGaLocation":253},"/assessments/devops-modernization-assessment/",{"config":787},{"src":788},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":790,"categories":791,"header":792,"text":769,"button":793,"image":797},"security-modernization",[11],"Are you trading speed for security?",{"text":794,"config":795},"Get your security maturity score",{"href":796,"dataGaName":774,"dataGaLocation":253},"/assessments/security-modernization-assessment/",{"config":798},{"src":799},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":801,"paths":802,"header":805,"text":806,"button":807,"image":812},"github-azure-migration",[803,804],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":808,"config":809},"See how GitLab compares to GitHub",{"href":810,"dataGaName":811,"dataGaLocation":253},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":813},{"src":788},{"header":815,"blurb":816,"button":817,"secondaryButton":821},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":47,"config":818},{"href":819,"dataGaName":50,"dataGaLocation":820},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":52,"config":822},{"href":54,"dataGaName":55,"dataGaLocation":820},1777934839324]