[{"data":1,"prerenderedAt":754},["ShallowReactive",2],{"/ja-jp/blog/software-supply-chain-security-guide-why-organizations-struggle":3,"navigation-ja-jp":36,"banner-ja-jp":436,"footer-ja-jp":446,"blog-post-authors-ja-jp-Itzik Gan Baruch":652,"blog-related-posts-ja-jp-software-supply-chain-security-guide-why-organizations-struggle":666,"assessment-promotions-ja-jp":706,"next-steps-ja-jp":745},{"id":4,"title":5,"authorSlugs":6,"body":8,"categorySlug":9,"config":10,"content":14,"description":8,"extension":26,"isFeatured":11,"meta":27,"navigation":11,"path":28,"publishedDate":20,"seo":29,"stem":31,"tagSlugs":32,"__hash__":35},"blogPosts/ja-jp/blog/software-supply-chain-security-guide-why-organizations-struggle.yml","Software Supply Chain Security Guide Why Organizations Struggle",[7],"itzik-gan-baruch",null,"security",{"featured":11,"template":12,"slug":13},true,"BlogPost","software-supply-chain-security-guide-why-organizations-struggle",{"title":15,"description":16,"authors":17,"heroImage":19,"date":20,"body":21,"category":9,"tags":22},"ソフトウェアサプライチェーンのセキュリティガイド：組織が直面する課題とは","この新シリーズの第1部では、すべての開発チームが理解すべき、基本的な課題、実践的な解決策、そしてAIを含む新たなトレンドを探ります。",[18],"Itzik Gan Baruch","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097701/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%285%29_1iy516k40hwBDChKcUJ2zb_1750097700983.png","2025-07-24","大抵の開発チームは、サプライチェーンセキュリティについて尋ねられると、脆弱性スキャンや依存関係の管理を挙げるでしょう。確かにそれらはサプライチェーンセキュリティの構成要素ではありますが、実際の課題のごく一部であり、その視点は非常に限定的で、危険です。\n\n**サプライチェーンセキュリティとは、単に依存関係をスキャンすることではありません。** コードの作成から本番環境へのデプロイまで、以下を含む一連のプロセス全体を対象としています。\n\n* **ソースセキュリティ**：コードリポジトリの保護、コントリビューターのアクセス管理、コードの整合性の確保  \n* **ビルドセキュリティ**：ビルド環境の保護、コンパイルやパッケージ化時の改ざん防止  \n* **アーティファクトセキュリティ**：コンテナやパッケージ、デプロイ用アーティファクトの整合性の確保  \n* **デプロイセキュリティ**：配信手段および実行環境の保護  \n* **ツールセキュリティ**：開発ツールやプラットフォーム自体の強化\n\nサプライチェーンセキュリティにおける「チェーン」とは、この一連の相互に連携したステップを指します。チェーンのどこかに脆弱性があると、ソフトウェアデリバリーのプロセス全体が危険にさらされてしまいます。\n\n[2020年に発生したSolarWinds攻撃](https://www.cisa.gov/news-events/news/joint-statement-federal-bureau-investigation-fbi-cybersecurity-and-infrastructure-security)は、その典型的な例です。これは史上最大級のサプライチェーン攻撃の一つであり、国家の支援を受けた攻撃者がSolarWindsのネットワーク管理ソフト「Orion」のビルドパイプラインを侵害しました。攻撃者は脆弱な依存関係を悪用したり、完成したアプリケーションをハッキングしたのではなく、コンパイルプロセスそのものに悪意あるコードを注入したのです。\n\nその結果は壊滅的でした。通常のソフトウェアアップデートを通じて、米国政府機関を含む18,000以上の組織が、気づかないうちにバックドア付きのソフトウェアをインストールしてしまいました。ソースコードには問題がなく、完成したアプリケーションも正規のものに見えましたが、ビルドプロセスが攻撃手段として利用されていたのです。この攻撃は数か月にわたって検出されず、サプライチェーンの脆弱性が従来のセキュリティ対策をいかに回避できるかを示す事例となりました。\n\n### 組織を脆弱にするよくある誤解\n\nサプライチェーンの脅威に対する認識は高まりつつありますが、多くの組織はいまだに危険にさらされています。というのも、「ソフトウェアサプライチェーンセキュリティとは何か」という根本的な理解に誤りがあるからです。こうした誤解が、重大な見落としを生んでしまいます。\n\n* ソフトウェアサプライチェーンセキュリティは依存関係スキャンだけだと考えている\n* オープンソースコンポーネントにばかり注目し、プロプライエタリコードのリスクを無視している\n* コード署名だけで十分に保護できると思っている\n* 安全なコーディング慣行さえ守っていれば、サプライチェーンのリスクはなくなると考えている\n* サプライチェーンセキュリティを、セキュリティチームだけの問題だと捉え、開発ワークフローの課題として見ていない\n\n![ソフトウェアサプライチェーンセキュリティ依存関係チャート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1753200077/kqndvlxyvncshdiq0xea.png)\n\n## AIが新たな脅威に\n\n多くの組織が従来型のソフトウェアサプライチェーンセキュリティの課題に取り組んでいる中、人工知能（AI）はまったく新しい攻撃ベクトルを生み出し、既存のリスクをこれまでにない形で拡大させています。\n\n### AIによる攻撃：より巧妙に、より大規模に\n\n攻撃者はAIを使って脆弱性の発見を自動化し、デベロッパーを狙った巧妙なソーシャルエンジニアリング攻撃を作成し、公開されているコードベースを体系的に分析して弱点を探しています。かつては手作業でしか行えなかったことが、いまや正確かつ大規模に実行できるようになっています。\n\n### AI開発のサプライチェーンがもたらす新たなリスク\n\nAIは開発ライフサイクル全体を再構築していますが、それと同時に深刻なセキュリティの死角も生み出しています。\n\n* **モデルのサプライチェーン攻撃**：Hugging FaceやGitHubなどから提供される事前学習済みモデルには、バックドアや汚染されたトレーニングデータが含まれている恐れがあります。\n* **安全でないAI生成コード**：AIコードアシスタントを使うデベロッパーが、気づかないうちに脆弱なパターンや危険な依存関係を導入することがあります。\n* **危険にさらされたAIツールチェーン**：AIモデルの学習、デプロイ、管理に使われるインフラが、新たなアタックサーフェス（攻撃対象領域）となります。\n* **自動化された偵察**：AIにより、攻撃者はエコシステム全体をスキャンして、高リスクなサプライチェーンの標的を特定できます。\n* **シャドーAIと非公認ツール**：デベロッパーが、安全性が確認されていない外部AIツールを組み込んでしまうことがあります。\n\nその結果どうなるか？AIは単に新しい脆弱性をもたらすだけでなく、既存のリスクの規模と影響を増幅します。もはや、段階的な改善では追いつけません。脅威の状況は、現在のセキュリティ対策が対応できるスピードを上回る勢いで進化しています。\n\n![AIによる増幅効果](https://res.cloudinary.com/about-gitlab-com/image/upload/v1753200139/xuxezxld6ztlvjocgjlx.png)\n\n## 多くの組織がいまだに苦戦している理由\n\nサプライチェーンセキュリティの重要性を理解している組織でさえ、効果的に対処できていないことがよくあります。統計は、「認識しているのに行動が伴わない」という深刻な傾向を明らかにしています。\n\n2021年に[コロニアル・パイプライン社が業務復旧のためにハッカーに440万ドルを支払った事件](https://www.cnn.com/2021/05/19/politics/colonial-pipeline-ransom/index.html)や、18,000もの組織が被害を受けたSolarWinds攻撃は、サプライチェーンの脆弱性が、重要インフラを停止させ、かつてない規模で機密データを危険にさらす可能性があることを世に知らしめました。\n\nそれにもかかわらず、多くの組織はいまだに従来どおりの運用を続けています。本質的な問いは、「組織がサプライチェーンセキュリティを重要だと考えているか」ではなく、「なぜそう考えていても、実効的な対策につながらないのか」という点です。\n\nその答えは、効果的な行動を妨げている4つの重要な障壁にあります。\n\n**1. 誤った「コスト優先」思考**\n\n組織はしばしば、「最も効果的な方法は何か？」ではなく、「コストがかからないのはどれか？」という観点で考えてしまいます。こうしたコスト第一の考え方は、後に高くつく問題を生み出すことになります。\n\n**2. スキル不足という現実**\n\nBSIMM（Building Security In Maturity Model）の調査によると、[組織にはデベロッパー100人あたり平均でセキュリティ専門家がわずか4人しかおらず](https://codific.com/bsimm-building-security-in-maturity-model-a-complete-guide/)、さらにISC2の調査では、[90%の組織が深刻なサイバーセキュリティ人材の不足を報告](https://www.isc2.org/Insights/2024/09/Employers-Must-Act-Cybersecurity-Workforce-Growth-Stalls-as-Skills-Gaps-Widen)しています。このような状況では、従来のアプローチをスケールさせることは数学的に不可能です。\n\n**3. 組織内のインセンティブの不一致**\n\nデベロッパーのOKR（Objective and Key Results）は機能の開発速度に重点が置かれる一方で、セキュリティチームはまったく異なる成果を指標にしています。経営陣が市場投入のスピードをセキュリティ対策状況よりも重視するような状況では、部門間の摩擦は避けられません。\n\n**4. 複雑すぎるツール環境**\n\n[一般的な企業では平均して45種類ものサイバーセキュリティツールを使っており](https://www.gartner.com/en/newsroom/press-releases/2025-03-03-gartner-identifiesthe-top-cybersecurity-trends-for-2025)、そのうちの[40%は誤検知](https://www.ponemon.org/news-updates/blog/security/new-ponemon-study-on-malware-detection-prevention-released.html)です。また、[インシデント対応には平均して19種類ものツールをまたいで調整を行う](https://newsroom.ibm.com/2020-06-30-IBM-Study-Security-Response-Planning-on-the-Rise-But-Containing-Attacks-Remains-an-Issue)必要があります。\n\nこうした障壁によって悪循環が生まれます。組織は脅威を認識し、セキュリティソリューションに投資はするものの、期待される効果が得られるような実装ができていないのです。\n\n## サプライチェーンの脆弱性がもたらす本当の代償\n\nサプライチェーン攻撃によって生じるリスクとコストは、初期の対処だけでは収まりません。こうした見えにくい追加的な負担を理解することで、予防が「望ましい」どころか、「ビジネスを継続するために不可欠」だということがわかります。\n\n**時間が最大の敵になる**\n\n* サプライチェーンの侵害を特定して封じ込めるまでの平均時間：[277日](https://keepnetlabs.com/blog/171-cyber-security-statistics-2024-s-updated-trends-and-data)\n* 顧客の信頼を回復するまでの期間：[2〜3年以上](https://www.bcg.com/publications/2024/rebuilding-corporate-trust)\n* 製品開発に充てるはずの工数が、セキュリティ対策に振り向けられる\n\n**評判へのダメージは拡大する一方** \n\n攻撃者にサプライチェーンを突破された場合、奪われるのはデータだけではありません。顧客との信頼関係という土台そのものが揺らいでしまいます。実際、侵害後には[顧客の解約率が平均で33%上昇](https://www.metacompliance.com/blog/data-breaches/5-damaging-consequences-of-a-data-breach)し、パートナーとの関係も再認証プロセスなどで多大なコストが発生します。さらに、「より安全だと見なされる」競合に見込み顧客が流れてしまい、競争力の低下にもつながります。\n\n**規制の現実が重くのしかかる** \n\n規制の状況は根本的に変化しています。[GDPR（EU一般データ保護規則）による罰金は、重大なデータ侵害の場合、平均して5,000万ドルを超えています](https://www.skillcast.com/blog/20-biggest-gdpr-fines)。EUの新しい[サイバーレジリエンス法](https://about.gitlab.com/blog/gitlab-supports-banks-in-navigating-regulatory-challenges/#european-cyber-resilience-act-\\(cra\\))では、サプライチェーンの透明性が義務づけられています。アメリカの連邦契約業者は、すべてのソフトウェア購入においてソフトウェア部品表（[SBOM](https://about.gitlab.com/ja-jp/blog/the-ultimate-guide-to-sboms/)）を提供しなければならず、この要件は民間企業の調達にも急速に広がりつつあります。\n\n**業務への混乱がさらに広がる** \n\n直接的なコストだけでなく、サプライチェーン攻撃は、攻撃対応中のプラットフォームのダウンタイム、テクノロジースタック全体にわたる緊急セキュリティ監査、顧客からの訴訟や規制当局の調査による法的コストなど、業務に深刻な混乱をもたらします。\n\n## 現在のアプローチの問題点\n\n多くの組織は、「セキュリティ対策をしていること」と「実際にセキュリティ効果があること」を混同しています。スキャナーを導入し、長大なレポートを作成して、各チームに手作業で対応させています。こうした取り組みはしばしば逆効果で、問題を解決するどころか、かえって新たな問題を生んでしまいます。\n\n### 大量のスキャンvs.実効性のある保護\n\n企業は[毎月1万件以上のセキュリティアラートを生成しており、中には1日15万件ものイベントを記録するケースもあります](https://www.securityweek.com/enterprises-generate-10000-security-events-day-average-report/)。しかし、これらの[63%](https://panther.com/blog/identifying-and-mitigating-false-positive-alerts)は誤検出や優先度の低いノイズにすぎません。結果として、セキュリティチームは処理しきれず、推進役ではなくボトルネックになってしまいます。\n\n### コラボレーションの崩壊\n\n最も安全な組織というのは、ツールをたくさん使っている組織ではなく、DevSecOps間の連携が強い組織です。しかし、現在のほとんどの体制では、この連携が難しくなっています。ワークフローが互換性のないツールで分断されているため、デベロッパーは自分の環境でセキュリティ結果を確認できず、リスクやビジネスへの影響もチーム間で共有できていません。\n\n## 今後に向けて\n\nこうした課題を理解することが、効果的なソフトウェアサプライチェーンセキュリティを構築するための第一歩です。成功している組織は、単にセキュリティツールを追加するのではなく、セキュリティを開発ワークフローにどのように統合するかを根本から見直しています。また、ソフトウエアデリバリーのプロセス全体を振り返り、プロセスの簡素化、ツールの削減、コラボレーションの改善にも取り組んでいます。\n\nGitLabでは、統合型DevSecOpsプラットフォームによって、セキュリティが開発ワークフローに直接組み込まれることで、こうした課題に対応できることを目の当たりにしてきました。このシリーズの次回の記事では、先進的な組織がどのようにして「デベロッパーにとって使いやすいソリューション」や「AIによる自動化」、そして「セキュリティをソフトウェア開発の自然な一部にできるプラットフォーム」を活用し、サプライチェーンセキュリティへの取り組みを根本から変えているのかをご紹介します。\n> GitLabのソフトウェアサプライチェーンのセキュリティ機能について詳しくは、[こちら](https://about.gitlab.com/ja-jp/solutions/supply-chain/)をご覧ください。",[23,24,25],"Security","Product","Tutorial","yml",{},"/ja-jp/blog/software-supply-chain-security-guide-why-organizations-struggle",{"noIndex":30,"title":15,"description":16},false,"ja-jp/blog/software-supply-chain-security-guide-why-organizations-struggle",[9,33,34],"product","tutorial","5mZAHOFWPPCkP7YC3ZZh63Zb8NYqB3C5ohAeudKclTo",{"data":37},{"logo":38,"freeTrial":43,"sales":48,"login":53,"items":58,"search":366,"minimal":399,"duo":416,"pricingDeployment":426},{"config":39},{"href":40,"dataGaName":41,"dataGaLocation":42},"/ja-jp/","gitlab logo","header",{"text":44,"config":45},"無料トライアルを開始",{"href":46,"dataGaName":47,"dataGaLocation":42},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":49,"config":50},"お問い合わせ",{"href":51,"dataGaName":52,"dataGaLocation":42},"/ja-jp/sales/","sales",{"text":54,"config":55},"サインイン",{"href":56,"dataGaName":57,"dataGaLocation":42},"https://gitlab.com/users/sign_in/","sign in",[59,86,182,187,288,348],{"text":60,"config":61,"cards":63},"プラットフォーム",{"dataNavLevelOne":62},"platform",[64,70,78],{"title":60,"description":65,"link":66},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":67,"config":68},"プラットフォームを詳しく見る",{"href":69,"dataGaName":62,"dataGaLocation":42},"/ja-jp/platform/",{"title":71,"description":72,"link":73},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":74,"config":75},"GitLab Duoのご紹介",{"href":76,"dataGaName":77,"dataGaLocation":42},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":79,"description":80,"link":81},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":82,"config":83},"詳細はこちら",{"href":84,"dataGaName":85,"dataGaLocation":42},"/ja-jp/why-gitlab/","why gitlab",{"text":87,"left":11,"config":88,"link":90,"lists":94,"footer":164},"製品",{"dataNavLevelOne":89},"solutions",{"text":91,"config":92},"すべてのソリューションを表示",{"href":93,"dataGaName":89,"dataGaLocation":42},"/ja-jp/solutions/",[95,120,142],{"title":96,"description":97,"link":98,"items":103},"自動化","CI/CDと自動化でデプロイを加速",{"config":99},{"icon":100,"href":101,"dataGaName":102,"dataGaLocation":42},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[104,108,111,116],{"text":105,"config":106},"CI/CD",{"href":107,"dataGaLocation":42,"dataGaName":105},"/ja-jp/solutions/continuous-integration/",{"text":71,"config":109},{"href":76,"dataGaLocation":42,"dataGaName":110},"gitlab duo agent platform - product menu",{"text":112,"config":113},"ソースコード管理",{"href":114,"dataGaLocation":42,"dataGaName":115},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":117,"config":118},"自動化されたソフトウェアデリバリー",{"href":101,"dataGaLocation":42,"dataGaName":119},"Automated software delivery",{"title":121,"description":122,"link":123,"items":128},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":124},{"href":125,"dataGaName":126,"dataGaLocation":42,"icon":127},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[129,133,138],{"text":130,"config":131},"Application Security Testing",{"href":125,"dataGaName":132,"dataGaLocation":42},"Application security testing",{"text":134,"config":135},"ソフトウェアサプライチェーンの安全性",{"href":136,"dataGaLocation":42,"dataGaName":137},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":139,"config":140},"Software Compliance",{"href":141,"dataGaName":139,"dataGaLocation":42},"/ja-jp/solutions/software-compliance/",{"title":143,"link":144,"items":149},"測定",{"config":145},{"icon":146,"href":147,"dataGaName":148,"dataGaLocation":42},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[150,154,159],{"text":151,"config":152},"可視性と測定",{"href":147,"dataGaLocation":42,"dataGaName":153},"Visibility and Measurement",{"text":155,"config":156},"バリューストリーム管理",{"href":157,"dataGaLocation":42,"dataGaName":158},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":160,"config":161},"分析とインサイト",{"href":162,"dataGaLocation":42,"dataGaName":163},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":165,"items":166},"GitLabが活躍する場所",[167,172,177],{"text":168,"config":169},"Enterprise",{"href":170,"dataGaLocation":42,"dataGaName":171},"/ja-jp/enterprise/","enterprise",{"text":173,"config":174},"スモールビジネス",{"href":175,"dataGaLocation":42,"dataGaName":176},"/ja-jp/small-business/","small business",{"text":178,"config":179},"公共機関",{"href":180,"dataGaLocation":42,"dataGaName":181},"/ja-jp/solutions/public-sector/","public sector",{"text":183,"config":184},"価格",{"href":185,"dataGaName":186,"dataGaLocation":42,"dataNavLevelOne":186},"/ja-jp/pricing/","pricing",{"text":188,"config":189,"link":191,"lists":195,"feature":275},"関連リソース",{"dataNavLevelOne":190},"resources",{"text":192,"config":193},"すべてのリソースを表示",{"href":194,"dataGaName":190,"dataGaLocation":42},"/ja-jp/resources/",[196,229,247],{"title":197,"items":198},"はじめに",[199,204,209,214,219,224],{"text":200,"config":201},"インストール",{"href":202,"dataGaName":203,"dataGaLocation":42},"/ja-jp/install/","install",{"text":205,"config":206},"クイックスタートガイド",{"href":207,"dataGaName":208,"dataGaLocation":42},"/ja-jp/get-started/","quick setup checklists",{"text":210,"config":211},"学ぶ",{"href":212,"dataGaLocation":42,"dataGaName":213},"https://university.gitlab.com/","learn",{"text":215,"config":216},"製品ドキュメント",{"href":217,"dataGaName":218,"dataGaLocation":42},"https://docs.gitlab.com/","product documentation",{"text":220,"config":221},"ベストプラクティスビデオ",{"href":222,"dataGaName":223,"dataGaLocation":42},"/ja-jp/getting-started-videos/","best practice videos",{"text":225,"config":226},"インテグレーション",{"href":227,"dataGaName":228,"dataGaLocation":42},"/ja-jp/integrations/","integrations",{"title":230,"items":231},"検索する",[232,237,242],{"text":233,"config":234},"お客様成功事例",{"href":235,"dataGaName":236,"dataGaLocation":42},"/ja-jp/customers/","customer success stories",{"text":238,"config":239},"ブログ",{"href":240,"dataGaName":241,"dataGaLocation":42},"/ja-jp/blog/","blog",{"text":243,"config":244},"リモート",{"href":245,"dataGaName":246,"dataGaLocation":42},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":248,"items":249},"つなげる",[250,255,260,265,270],{"text":251,"config":252},"GitLabサービス",{"href":253,"dataGaName":254,"dataGaLocation":42},"/ja-jp/services/","services",{"text":256,"config":257},"コミュニティ",{"href":258,"dataGaName":259,"dataGaLocation":42},"/community/","community",{"text":261,"config":262},"フォーラム",{"href":263,"dataGaName":264,"dataGaLocation":42},"https://forum.gitlab.com/","forum",{"text":266,"config":267},"イベント",{"href":268,"dataGaName":269,"dataGaLocation":42},"/events/","events",{"text":271,"config":272},"パートナー",{"href":273,"dataGaName":274,"dataGaLocation":42},"/ja-jp/partners/","partners",{"backgroundColor":276,"textColor":277,"text":278,"image":279,"link":283},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":280,"config":281},"ソースプロモカード",{"src":282},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":284,"config":285},"最新情報を読む",{"href":286,"dataGaName":287,"dataGaLocation":42},"/ja-jp/the-source/","the source",{"text":289,"config":290,"lists":292},"会社情報",{"dataNavLevelOne":291},"company",[293],{"items":294},[295,300,306,308,313,318,323,328,333,338,343],{"text":296,"config":297},"GitLabについて",{"href":298,"dataGaName":299,"dataGaLocation":42},"/ja-jp/company/","about",{"text":301,"config":302,"footerGa":305},"採用情報",{"href":303,"dataGaName":304,"dataGaLocation":42},"/jobs/","jobs",{"dataGaName":304},{"text":266,"config":307},{"href":268,"dataGaName":269,"dataGaLocation":42},{"text":309,"config":310},"経営陣",{"href":311,"dataGaName":312,"dataGaLocation":42},"/company/team/e-group/","leadership",{"text":314,"config":315},"チーム",{"href":316,"dataGaName":317,"dataGaLocation":42},"/company/team/","team",{"text":319,"config":320},"ハンドブック",{"href":321,"dataGaName":322,"dataGaLocation":42},"https://handbook.gitlab.com/","handbook",{"text":324,"config":325},"投資家向け情報",{"href":326,"dataGaName":327,"dataGaLocation":42},"https://ir.gitlab.com/","investor relations",{"text":329,"config":330},"トラストセンター",{"href":331,"dataGaName":332,"dataGaLocation":42},"/ja-jp/security/","trust center",{"text":334,"config":335},"AI Transparency Center",{"href":336,"dataGaName":337,"dataGaLocation":42},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":339,"config":340},"ニュースレター",{"href":341,"dataGaName":342,"dataGaLocation":42},"/company/contact/#contact-forms","newsletter",{"text":344,"config":345},"プレス",{"href":346,"dataGaName":347,"dataGaLocation":42},"/press/","press",{"text":49,"config":349,"lists":350},{"dataNavLevelOne":291},[351],{"items":352},[353,356,361],{"text":49,"config":354},{"href":51,"dataGaName":355,"dataGaLocation":42},"talk to sales",{"text":357,"config":358},"サポートポータル",{"href":359,"dataGaName":360,"dataGaLocation":42},"https://support.gitlab.com","support portal",{"text":362,"config":363},"カスタマーポータル",{"href":364,"dataGaName":365,"dataGaLocation":42},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":367,"login":368,"suggestions":375},"閉じる",{"text":369,"link":370},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":371,"config":372},"GitLab.com",{"href":56,"dataGaName":373,"dataGaLocation":374},"search login","search",{"text":376,"default":377},"提案",[378,380,385,387,391,395],{"text":71,"config":379},{"href":76,"dataGaName":71,"dataGaLocation":374},{"text":381,"config":382},"コード提案（AI）",{"href":383,"dataGaName":384,"dataGaLocation":374},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":105,"config":386},{"href":107,"dataGaName":105,"dataGaLocation":374},{"text":388,"config":389},"GitLab on AWS",{"href":390,"dataGaName":388,"dataGaLocation":374},"/ja-jp/partners/technology-partners/aws/",{"text":392,"config":393},"GitLab on Google Cloud",{"href":394,"dataGaName":392,"dataGaLocation":374},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":396,"config":397},"GitLabを選ぶ理由",{"href":84,"dataGaName":398,"dataGaLocation":374},"Why GitLab?",{"freeTrial":400,"mobileIcon":404,"desktopIcon":409,"secondaryButton":412},{"text":44,"config":401},{"href":402,"dataGaName":47,"dataGaLocation":403},"https://gitlab.com/-/trials/new/","nav",{"altText":405,"config":406},"GitLabアイコン",{"src":407,"dataGaName":408,"dataGaLocation":403},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":405,"config":410},{"src":411,"dataGaName":408,"dataGaLocation":403},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":197,"config":413},{"href":414,"dataGaName":415,"dataGaLocation":403},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":417,"mobileIcon":422,"desktopIcon":424},{"text":418,"config":419},"GitLab Duoの詳細について",{"href":420,"dataGaName":421,"dataGaLocation":403},"/ja-jp/gitlab-duo/","gitlab duo",{"altText":405,"config":423},{"src":407,"dataGaName":408,"dataGaLocation":403},{"altText":405,"config":425},{"src":411,"dataGaName":408,"dataGaLocation":403},{"freeTrial":427,"mobileIcon":432,"desktopIcon":434},{"text":428,"config":429},"料金ページに戻る",{"href":185,"dataGaName":430,"dataGaLocation":403,"icon":431},"back to pricing","GoBack",{"altText":405,"config":433},{"src":407,"dataGaName":408,"dataGaLocation":403},{"altText":405,"config":435},{"src":411,"dataGaName":408,"dataGaLocation":403},{"title":437,"button":438,"config":443},"エージェント型AIがソフトウェア配信をどのように変革するかをご覧ください",{"text":439,"config":440},"GitLab Transcendを今すぐ視聴",{"href":441,"dataGaName":442,"dataGaLocation":42},"/ja-jp/events/transcend/virtual/","transcend event",{"layout":444,"icon":445},"release","AiStar",{"data":447},{"text":448,"source":449,"edit":455,"contribute":460,"config":465,"items":470,"minimal":644},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":450,"config":451},"ページのソースを表示",{"href":452,"dataGaName":453,"dataGaLocation":454},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":456,"config":457},"このページを編集",{"href":458,"dataGaName":459,"dataGaLocation":454},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":461,"config":462},"ご協力をお願いします",{"href":463,"dataGaName":464,"dataGaLocation":454},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":466,"facebook":467,"youtube":468,"linkedin":469},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[471,494,548,578,613],{"title":60,"links":472,"subMenu":477},[473],{"text":474,"config":475},"DevSecOpsプラットフォーム",{"href":69,"dataGaName":476,"dataGaLocation":454},"devsecops platform",[478],{"title":183,"links":479},[480,484,489],{"text":481,"config":482},"プランの表示",{"href":185,"dataGaName":483,"dataGaLocation":454},"view plans",{"text":485,"config":486},"Premiumを選ぶ理由",{"href":487,"dataGaName":488,"dataGaLocation":454},"/ja-jp/pricing/premium/","why premium",{"text":490,"config":491},"Ultimateを選ぶ理由",{"href":492,"dataGaName":493,"dataGaLocation":454},"/ja-jp/pricing/ultimate/","why ultimate",{"title":495,"links":496},"ソリューション",[497,502,505,507,512,517,521,524,527,532,534,536,538,543],{"text":498,"config":499},"デジタルトランスフォーメーション",{"href":500,"dataGaName":501,"dataGaLocation":454},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":503,"config":504},"セキュリティとコンプライアンス",{"href":125,"dataGaName":132,"dataGaLocation":454},{"text":117,"config":506},{"href":101,"dataGaName":102,"dataGaLocation":454},{"text":508,"config":509},"アジャイル開発",{"href":510,"dataGaName":511,"dataGaLocation":454},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":513,"config":514},"クラウドトランスフォーメーション",{"href":515,"dataGaName":516,"dataGaLocation":454},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":518,"config":519},"SCM",{"href":114,"dataGaName":520,"dataGaLocation":454},"source code management",{"text":105,"config":522},{"href":107,"dataGaName":523,"dataGaLocation":454},"continuous integration & delivery",{"text":155,"config":525},{"href":157,"dataGaName":526,"dataGaLocation":454},"value stream management",{"text":528,"config":529},"GitOps",{"href":530,"dataGaName":531,"dataGaLocation":454},"/ja-jp/solutions/gitops/","gitops",{"text":168,"config":533},{"href":170,"dataGaName":171,"dataGaLocation":454},{"text":173,"config":535},{"href":175,"dataGaName":176,"dataGaLocation":454},{"text":178,"config":537},{"href":180,"dataGaName":181,"dataGaLocation":454},{"text":539,"config":540},"教育",{"href":541,"dataGaName":542,"dataGaLocation":454},"/ja-jp/solutions/education/","education",{"text":544,"config":545},"金融サービス",{"href":546,"dataGaName":547,"dataGaLocation":454},"/ja-jp/solutions/finance/","financial services",{"title":188,"links":549},[550,552,554,556,559,561,564,566,568,570,572,574,576],{"text":200,"config":551},{"href":202,"dataGaName":203,"dataGaLocation":454},{"text":205,"config":553},{"href":207,"dataGaName":208,"dataGaLocation":454},{"text":210,"config":555},{"href":212,"dataGaName":213,"dataGaLocation":454},{"text":215,"config":557},{"href":217,"dataGaName":558,"dataGaLocation":454},"docs",{"text":238,"config":560},{"href":240,"dataGaName":241},{"text":562,"config":563},"お客様の成功事例",{"href":235,"dataGaLocation":454},{"text":233,"config":565},{"href":235,"dataGaName":236,"dataGaLocation":454},{"text":243,"config":567},{"href":245,"dataGaName":246,"dataGaLocation":454},{"text":251,"config":569},{"href":253,"dataGaName":254,"dataGaLocation":454},{"text":256,"config":571},{"href":258,"dataGaName":259,"dataGaLocation":454},{"text":261,"config":573},{"href":263,"dataGaName":264,"dataGaLocation":454},{"text":266,"config":575},{"href":268,"dataGaName":269,"dataGaLocation":454},{"text":271,"config":577},{"href":273,"dataGaName":274,"dataGaLocation":454},{"title":579,"links":580},"Company",[581,583,585,587,589,591,593,597,602,604,606,608],{"text":296,"config":582},{"href":298,"dataGaName":291,"dataGaLocation":454},{"text":301,"config":584},{"href":303,"dataGaName":304,"dataGaLocation":454},{"text":309,"config":586},{"href":311,"dataGaName":312,"dataGaLocation":454},{"text":314,"config":588},{"href":316,"dataGaName":317,"dataGaLocation":454},{"text":319,"config":590},{"href":321,"dataGaName":322,"dataGaLocation":454},{"text":324,"config":592},{"href":326,"dataGaName":327,"dataGaLocation":454},{"text":594,"config":595},"Sustainability",{"href":596,"dataGaName":594,"dataGaLocation":454},"/sustainability/",{"text":598,"config":599},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":600,"dataGaName":601,"dataGaLocation":454},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":329,"config":603},{"href":331,"dataGaName":332,"dataGaLocation":454},{"text":339,"config":605},{"href":341,"dataGaName":342,"dataGaLocation":454},{"text":344,"config":607},{"href":346,"dataGaName":347,"dataGaLocation":454},{"text":609,"config":610},"現代奴隷制の透明性に関する声明",{"href":611,"dataGaName":612,"dataGaLocation":454},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":49,"links":614},[615,617,622,624,629,634,639],{"text":49,"config":616},{"href":51,"dataGaName":52,"dataGaLocation":454},{"text":618,"config":619},"サポートを受ける",{"href":620,"dataGaName":621,"dataGaLocation":454},"https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support","get help",{"text":362,"config":623},{"href":364,"dataGaName":365,"dataGaLocation":454},{"text":625,"config":626},"ステータス",{"href":627,"dataGaName":628,"dataGaLocation":454},"https://status.gitlab.com/","status",{"text":630,"config":631},"利用規約",{"href":632,"dataGaName":633,"dataGaLocation":454},"/terms/","terms of use",{"text":635,"config":636},"プライバシーに関する声明",{"href":637,"dataGaName":638,"dataGaLocation":454},"/ja-jp/privacy/","privacy statement",{"text":640,"config":641},"Cookieの設定",{"dataGaName":642,"dataGaLocation":454,"id":643,"isOneTrustButton":11},"cookie preferences","ot-sdk-btn",{"items":645},[646,648,650],{"text":630,"config":647},{"href":632,"dataGaName":633,"dataGaLocation":454},{"text":635,"config":649},{"href":637,"dataGaName":638,"dataGaLocation":454},{"text":640,"config":651},{"dataGaName":642,"dataGaLocation":454,"id":643,"isOneTrustButton":11},[653],{"id":654,"title":18,"body":8,"config":655,"content":657,"description":8,"extension":26,"meta":661,"navigation":11,"path":662,"seo":663,"stem":664,"__hash__":665},"blogAuthors/en-us/blog/authors/itzik-gan-baruch.yml",{"template":656},"BlogAuthor",{"name":18,"config":658},{"headshot":659,"ctfId":660},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749658921/Blog/Author%20Headshots/iganbaruch-headshot.jpg","iganbaruch",{},"/en-us/blog/authors/itzik-gan-baruch",{},"en-us/blog/authors/itzik-gan-baruch","bz9VMiTQ1ixvnoxUFk0jiUcnLG3oQsymgXNCqyRqfsk",[667,680,692],{"content":668,"config":678},{"heroImage":669,"body":670,"authors":671,"updatedDate":673,"date":674,"title":675,"tags":676,"description":677,"category":9},"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/)をご覧ください。",[672],"Fernando Diaz","2026-03-09","2026-03-05","GitLab コンテナスキャン完全ガイド：SBOM生成から運用監視まで5つのスキャン手法",[9,34],"GitLab のさまざまなコンテナスキャン方法を詳しく解説し、コンテナライフサイクルの各段階でセキュリティを確保する方法をご紹介します。",{"slug":679,"featured":11,"template":12},"complete-guide-to-gitlab-container-scanning",{"content":681,"config":690},{"title":682,"description":683,"authors":684,"heroImage":686,"date":687,"body":688,"category":9,"tags":689},"GitLab.comのセキュリティ強化：多要素認証の必須化","Secure by Designへのコミットメントの一環として、GitLabが多要素認証（MFA）を必須化する方法と、それがユーザーに与える影響について解説します。",[685],"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具体的なタイムラインとその他のリソースについては、ロールアウト日までに段階的に共有される予定です。この重要な変更についてご覧いただき、ありがとうございます。",[9,33],{"featured":30,"template":12,"slug":691},"strengthening-gitlab-com-security-mandatory-multi-factor-authentication",{"content":693,"config":704},{"heroImage":694,"body":695,"authors":696,"updatedDate":698,"date":699,"title":700,"tags":701,"description":703,"category":9},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","[パイプライン変数](https://docs.gitlab.com/ci/variables/#use-pipeline-variables)は、GitLab\nCI/CDパイプラインを実行時にカスタマイズする便利な方法として長く活用されてきました。しかし、CI/CDセキュリティのベストプラクティスが進化するにつれ、パイプラインのカスタマイズに関してより強力な制御が必要であることが明らかになりました。制限のないパイプライン変数では、パイプライントリガー権限を持つユーザーが、検証や型のチェックなしに値を上書きできてしまいます。\n\n\n\nセキュリティ上の考慮事項に加えて、パイプライン変数には適切なドキュメントと明示的な宣言が欠けているため、どのような入力が想定され、パイプライン全体でどのように使用されるかを理解することが困難です。これにより、メンテナンスの課題が生じ、[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)プロセスに対する適切なガバナンスの確立が難しくなります。\n\n\n\n## パイプライン入力の導入\n\n\n\nパイプライン変数に依存する代わりに、GitLabの[パイプライン入力](https://docs.gitlab.com/ci/inputs/#for-a-pipeline)機能の使用を強く推奨します。パイプライン入力には次の利点があります：\n\n\n\n* **明示的な宣言**: 入力は`.gitlab-ci.yml`で明示的に宣言する必要があり、自己文書化されます。\n\n\n* **型安全性**: 異なる入力型(文字列、ブール値、数値、配列)をサポートします。\n\n\n* **組み込みの検証**: 入力値の自動検証が行われます。\n\n\n* **セキュリティの向上**: 変数インジェクション攻撃のリスクがなく、宣言された入力のみが外部から渡されます。\n\n\n\n### 基本的な例\n\n\n\n```yaml\n\nspec:\n  inputs:\n    deployment_env:\n      description: \"ターゲットデプロイメント環境\"\n      type: string\n      options: [\"staging\", \"production\"]\n      default: \"staging\"\n    enable_tests:\n      description: \"テストスイートを実行\"\n      type: boolean\n      default: true\n\ntest:\n  script:\n    - echo \"テストを実行中\"\n  rules:\n    - if: $[[ inputs.enable_tests ]] == true\n\ndeploy:\n  script:\n    - echo \"$[[ inputs.deployment_env ]]へデプロイ中\"\n```\n\n\n\nCI/CD入力が検証付きで型安全なパラメータ渡しを実現する方法については、この[チュートリアル](https://about.gitlab.com/blog/ci-cd-inputs-secure-and-preferred-method-to-pass-parameters-to-a-pipeline/)をご覧ください。\n\n\n\n## パイプライン変数の制限\n\n\n\nパイプライン入力への移行を効果的に進め、パイプライン変数からの移行を促進するには、[「パイプライン変数が使用できる最小ロール」](https://docs.gitlab.com/ci/variables/#restrict-pipeline-variables)設定を構成する必要があります。この設定により、パイプラインをトリガーする際にどのロールがパイプライン変数を使用できるかを細かく制御できます。\n\n\n\n**プロジェクトレベル:** プロジェクトの **[設定] > [CI/CD] > [変数] > [パイプライン変数が使用できる最小ロール]** の順に移動して、設定を構成します。\n\n\n\n利用可能なオプション:\n\n\n\n* **誰にも許可しない**(`no_one_allowed`) - 推奨される最も安全なオプションです。すべての変数の上書きを防ぎます。\n\n\n* **デベロッパー**(`developer`) - デベロッパー以上のロールが変数を上書きできます。\n\n\n* **メンテナー**(`maintainer`) - メンテナーロール以上が必要です。\n\n\n* **オーナー**(`owner`) - プロジェクトオーナーのみが変数を上書きできます。\n\n\n\n**グループレベル:** グループメンテナーは、**[設定] > [CI/CD] > [変数] > [パイプライン変数を使えるデフォルトロール]**の順に移動して、グループ内のすべての新規プロジェクトに適用される安全なデフォルト値を設定できます。これにより組織全体で一貫したセキュリティポリシーを確保できます。ここでも、デフォルト値として**誰にも許可しない**を使用することを推奨します。これにより、このグループ内の新規プロジェクトは安全なデフォルト設定で作成されます。なお、プロジェクトオーナーは引き続きこの設定を変更できます。\n\n\n\nパイプライン変数が完全に制限されている場合(「誰にも許可しない」の場合)、[事前入力された変数](https://docs.gitlab.com/ci/pipelines/#prefill-variables-in-manual-pipelines)は「新しいパイプラインUI」フォームに表示されません。\n\n\n\n## パイプライン変数から移行する方法\n\n\n\n### ギャップを埋める\n\n\n\n組織内には、パイプラインをトリガーする際に一度も使用したことがないにもかかわらず、パイプライン変数がデフォルトで有効になっているプロジェクトが存在する可能性があります。これらのプロジェクトは、中断のリスクなしにより安全な設定に移行できます。GitLabは、グループ設定を通じて[移行機能を提供](https://docs.gitlab.com/ci/variables/#enable-pipeline-variable-restriction-for-multiple-projects)しています：\n\n\n\n* **[設定] > [CI/CD] > [変数]** の順に移動します。\n\n\n* **パイプライン変数を使用していないプロジェクトで、パイプライン変数を無効にする**で、**マイグレーションの開始**を選択します。\n\n\n\nこの移行は、過去に使用したことがないすべてのプロジェクトのプロジェクト設定を通じて、パイプライン変数を安全に無効にするバックグラウンドジョブです。\n\n\n\n### パイプライン変数を入力に変換\n\n\n\n特定されたパイプライン変数ごとに、対応するパイプライン入力を作成します。\n\n\n\n**変更前(パイプライン変数を使用)**\n\n\n\n```text\n\nvariables:\n  DEPLOY_ENV:\n    description: \"デプロイメント環境\"\n    value: \"staging\"\n  ENABLE_CACHE:\n    description: \"デプロイメントキャッシュを有効化\"\n    value: \"true\"\n  VERSION:\n    description: \"アプリケーションバージョン\"\n    value: \"1.0.0\"\n\ndeploy:\n  script:\n    - echo \"$DEPLOY_ENVへバージョン$VERSIONをデプロイ中\"\n    - |\n      if [ \"$ENABLE_CACHE\" = \"true\" ]; then\n        echo \"キャッシュが有効です\"\n      fi\n```\n\n\n\n**変更後(パイプライン入力を使用)**\n\n\n\n```text\n\nspec:\n  inputs:\n    deploy_env:\n      description: \"デプロイメント環境\"\n      type: string\n      default: \"staging\"\n      options: [\"dev\", \"staging\", \"production\"]\n\n    enable_cache:\n      description: \"デプロイメントキャッシュを有効化\"\n      type: boolean\n      default: true\n    \n    version:\n      description: \"アプリケーションバージョン\"\n      type: string\n      default: \"1.0.0\"\n      regex: '^[0-9]+\\.[0-9]+\\.[0-9]+$'\n\ndeploy:\n  script:\n    - echo \"$[[ inputs.deploy_env ]]へバージョン$[[ inputs.version ]]をデプロイ中\"\n    - |\n      if [ \"$[[ inputs.enable_cache ]]\" = \"true\" ]; then\n        echo \"キャッシュが有効です\"\n      fi\n```\n\n\n\n### トリガージョブの移行\n\n\n\n`trigger`キーワードでトリガージョブを使用している場合は、ジョブレベルの`variables`を定義していないこと、またはトップレベルの`variables`、`extends`、`include`からの変数の継承を無効にしていないことを確認してください。変数が暗黙的にダウンストリームにパイプライン変数として渡される可能性があるためです。ダウンストリームプロジェクトでパイプライン変数が制限されている場合、パイプラインの作成は失敗します。\n\n\n\nパイプライン変数の代わりに、パイプライン入力を使用するようにCI構成を更新することを検討してください。\n\n\n\n```yaml\n\nvariables:\n  FOO: bar\n\ndeploy-staging:\n  inherit:\n    variables: false # そうしないとFOOがダウンストリームにパイプライン変数として送信されます\n  trigger:\n    project: myorg/deployer\n    inputs:\n      deployment_env: staging\n      enable_tests: true\n```\n\n\n\n## まとめ\n\n\n\nパイプライン変数からパイプライン入力への移行は、変数インジェクションからCI/CDインフラを保護するセキュリティ強化であり、同時により優れたドキュメント、型安全性、検証を提供します。これらの制限を実装し、パイプライン入力を採用することで、セキュリティを向上させるだけでなく、パイプラインをよりメンテナンスしやすく、自己文書化され、耐障害性の高いものにすることができます。\n\n\n\n移行には初期の労力が必要ですが、長期的なメリットは移行コストをはるかに上回ります。まず、新規プロジェクトのグループレベルでパイプライン変数を制限ることから始め、次に上記の段階的なアプローチを使用して既存のパイプラインを体系的に移行してください。\n\n\n\nセキュリティの強化は、終わりのない継続的なプロセスです。パイプライン入力は、保護されたブランチ、ジョブトークン許可リスト、コンテナレジストリ保護など、他のGitLabセキュリティ機能を補完し、より安全なCI/CD環境を構築するための重要なステップです。\n\n\n\n> パイプライン入力を始めるには、[GitLab Ultimateの無料トライアルに今すぐ登録](https://about.gitlab.com/ja-jp/free-trial/devsecops/)してください。\n",[697],"Fabio Pitino","2025-11-12","2025-11-04","パイプライン変数からパイプライン入力への移行でセキュリティを強化",[9,702,34,105],"DevSecOps","このガイドでは、明示的な宣言、型安全性、検証の実装など、パイプラインのカスタマイズに関するより強力な制御について説明します。",{"featured":11,"template":12,"slug":705},"migrate-from-pipeline-variables-to-pipeline-inputs-for-better-security",{"promotions":707},[708,722,734],{"id":709,"categories":710,"header":712,"text":713,"button":714,"image":719},"ai-modernization",[711],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":715,"config":716},"Get your AI maturity score",{"href":717,"dataGaName":718,"dataGaLocation":241},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":720},{"src":721},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":723,"categories":724,"header":726,"text":713,"button":727,"image":731},"devops-modernization",[33,725],"devsecops","Are you just managing tools or shipping innovation?",{"text":728,"config":729},"Get your DevOps maturity score",{"href":730,"dataGaName":718,"dataGaLocation":241},"/assessments/devops-modernization-assessment/",{"config":732},{"src":733},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":735,"categories":736,"header":737,"text":713,"button":738,"image":742},"security-modernization",[9],"Are you trading speed for security?",{"text":739,"config":740},"Get your security maturity score",{"href":741,"dataGaName":718,"dataGaLocation":241},"/assessments/security-modernization-assessment/",{"config":743},{"src":744},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":746,"blurb":747,"button":748,"secondaryButton":752},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":44,"config":749},{"href":750,"dataGaName":47,"dataGaLocation":751},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":49,"config":753},{"href":51,"dataGaName":52,"dataGaLocation":751},1773350852120]