[{"data":1,"prerenderedAt":905},["ShallowReactive",2],{"/ja-jp/blog/categories/security/":3,"navigation-ja-jp":22,"banner-ja-jp":438,"footer-ja-jp":451,"security-category-page-ja-jp":661},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"config":12,"_id":15,"_type":16,"title":17,"_source":18,"_file":19,"_stem":20,"_extension":21},"/ja-jp/blog/categories/security","categories",false,"",{"title":9,"description":10},"セキュリティ","Browse articles related to セキュリティ on the GitLab Blog",{"name":9},{"template":13,"slug":14,"hide":6},"BlogCategory","security","content:ja-jp:blog:categories:security.yml","yaml","Security","content","ja-jp/blog/categories/security.yml","ja-jp/blog/categories/security","yml",{"_path":23,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"data":25,"_id":434,"_type":16,"title":435,"_source":18,"_file":436,"_stem":437,"_extension":21},"/shared/ja-jp/main-navigation","ja-jp",{"logo":26,"freeTrial":31,"sales":36,"login":41,"items":46,"search":378,"minimal":412,"duo":425},{"config":27},{"href":28,"dataGaName":29,"dataGaLocation":30},"/ja-jp/","gitlab logo","header",{"text":32,"config":33},"無料トライアルを開始",{"href":34,"dataGaName":35,"dataGaLocation":30},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":37,"config":38},"お問い合わせ",{"href":39,"dataGaName":40,"dataGaLocation":30},"/ja-jp/sales/","sales",{"text":42,"config":43},"サインイン",{"href":44,"dataGaName":45,"dataGaLocation":30},"https://gitlab.com/users/sign_in/","sign in",[47,91,189,194,300,360],{"text":48,"config":49,"cards":51,"footer":74},"プラットフォーム",{"dataNavLevelOne":50},"platform",[52,58,66],{"title":48,"description":53,"link":54},"最も包括的かつAIで強化されたDevSecOpsプラットフォーム",{"text":55,"config":56},"プラットフォームを詳しく見る",{"href":57,"dataGaName":50,"dataGaLocation":30},"/ja-jp/platform/",{"title":59,"description":60,"link":61},"GitLab Duo（AI）","開発のすべてのステージでAIを活用し、ソフトウェアをより迅速にビルド",{"text":62,"config":63},"GitLab Duoのご紹介",{"href":64,"dataGaName":65,"dataGaLocation":30},"/ja-jp/gitlab-duo/","gitlab duo ai",{"title":67,"description":68,"link":69},"GitLabが選ばれる理由","GitLabが大企業に選ばれる理由10選",{"text":70,"config":71},"詳細はこちら",{"href":72,"dataGaName":73,"dataGaLocation":30},"/ja-jp/why-gitlab/","why gitlab",{"title":75,"items":76},"利用を開始：",[77,82,87],{"text":78,"config":79},"プラットフォームエンジニアリング",{"href":80,"dataGaName":81,"dataGaLocation":30},"/ja-jp/solutions/platform-engineering/","platform engineering",{"text":83,"config":84},"開発者の経験",{"href":85,"dataGaName":86,"dataGaLocation":30},"/ja-jp/developer-experience/","Developer experience",{"text":88,"config":89},"MLOps",{"href":90,"dataGaName":88,"dataGaLocation":30},"/ja-jp/topics/devops/the-role-of-ai-in-devops/",{"text":92,"left":93,"config":94,"link":96,"lists":100,"footer":171},"製品",true,{"dataNavLevelOne":95},"solutions",{"text":97,"config":98},"すべてのソリューションを表示",{"href":99,"dataGaName":95,"dataGaLocation":30},"/ja-jp/solutions/",[101,127,149],{"title":102,"description":103,"link":104,"items":109},"自動化","CI/CDと自動化でデプロイを加速",{"config":105},{"icon":106,"href":107,"dataGaName":108,"dataGaLocation":30},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[110,114,118,123],{"text":111,"config":112},"CI/CD",{"href":113,"dataGaLocation":30,"dataGaName":111},"/ja-jp/solutions/continuous-integration/",{"text":115,"config":116},"AIアシストによる開発",{"href":64,"dataGaLocation":30,"dataGaName":117},"AI assisted development",{"text":119,"config":120},"ソースコード管理",{"href":121,"dataGaLocation":30,"dataGaName":122},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":124,"config":125},"自動化されたソフトウェアデリバリー",{"href":107,"dataGaLocation":30,"dataGaName":126},"Automated software delivery",{"title":9,"description":128,"link":129,"items":134},"セキュリティを損なうことなくコードをより迅速に完成",{"config":130},{"href":131,"dataGaName":132,"dataGaLocation":30,"icon":133},"/ja-jp/solutions/security-compliance/","security and compliance","ShieldCheckLight",[135,139,144],{"text":136,"config":137},"セキュリティとコンプライアンス",{"href":131,"dataGaLocation":30,"dataGaName":138},"Security & Compliance",{"text":140,"config":141},"ソフトウェアサプライチェーンの安全性",{"href":142,"dataGaLocation":30,"dataGaName":143},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":145,"config":146},"コンプライアンスとガバナンス",{"href":147,"dataGaLocation":30,"dataGaName":148},"/ja-jp/solutions/continuous-software-compliance/","Compliance and governance",{"title":150,"link":151,"items":156},"測定",{"config":152},{"icon":153,"href":154,"dataGaName":155,"dataGaLocation":30},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[157,161,166],{"text":158,"config":159},"可視性と測定",{"href":154,"dataGaLocation":30,"dataGaName":160},"Visibility and Measurement",{"text":162,"config":163},"バリューストリーム管理",{"href":164,"dataGaLocation":30,"dataGaName":165},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":167,"config":168},"分析とインサイト",{"href":169,"dataGaLocation":30,"dataGaName":170},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":172,"items":173},"GitLabが活躍する場所",[174,179,184],{"text":175,"config":176},"Enterprise",{"href":177,"dataGaLocation":30,"dataGaName":178},"/ja-jp/enterprise/","enterprise",{"text":180,"config":181},"スモールビジネス",{"href":182,"dataGaLocation":30,"dataGaName":183},"/ja-jp/small-business/","small business",{"text":185,"config":186},"公共機関",{"href":187,"dataGaLocation":30,"dataGaName":188},"/ja-jp/solutions/public-sector/","public sector",{"text":190,"config":191},"価格",{"href":192,"dataGaName":193,"dataGaLocation":30,"dataNavLevelOne":193},"/ja-jp/pricing/","pricing",{"text":195,"config":196,"link":198,"lists":202,"feature":287},"関連リソース",{"dataNavLevelOne":197},"resources",{"text":199,"config":200},"すべてのリソースを表示",{"href":201,"dataGaName":197,"dataGaLocation":30},"/ja-jp/resources/",[203,236,259],{"title":204,"items":205},"はじめに",[206,211,216,221,226,231],{"text":207,"config":208},"インストール",{"href":209,"dataGaName":210,"dataGaLocation":30},"/ja-jp/install/","install",{"text":212,"config":213},"クイックスタートガイド",{"href":214,"dataGaName":215,"dataGaLocation":30},"/ja-jp/get-started/","quick setup checklists",{"text":217,"config":218},"学ぶ",{"href":219,"dataGaLocation":30,"dataGaName":220},"https://university.gitlab.com/","learn",{"text":222,"config":223},"製品ドキュメント",{"href":224,"dataGaName":225,"dataGaLocation":30},"https://docs.gitlab.com/","product documentation",{"text":227,"config":228},"ベストプラクティスビデオ",{"href":229,"dataGaName":230,"dataGaLocation":30},"/ja-jp/getting-started-videos/","best practice videos",{"text":232,"config":233},"インテグレーション",{"href":234,"dataGaName":235,"dataGaLocation":30},"/ja-jp/integrations/","integrations",{"title":237,"items":238},"検索する",[239,244,249,254],{"text":240,"config":241},"お客様成功事例",{"href":242,"dataGaName":243,"dataGaLocation":30},"/ja-jp/customers/","customer success stories",{"text":245,"config":246},"ブログ",{"href":247,"dataGaName":248,"dataGaLocation":30},"/ja-jp/blog/","blog",{"text":250,"config":251},"リモート",{"href":252,"dataGaName":253,"dataGaLocation":30},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":255,"config":256},"TeamOps",{"href":257,"dataGaName":258,"dataGaLocation":30},"/ja-jp/teamops/","teamops",{"title":260,"items":261},"つなげる",[262,267,272,277,282],{"text":263,"config":264},"GitLabサービス",{"href":265,"dataGaName":266,"dataGaLocation":30},"/ja-jp/services/","services",{"text":268,"config":269},"コミュニティ",{"href":270,"dataGaName":271,"dataGaLocation":30},"/community/","community",{"text":273,"config":274},"フォーラム",{"href":275,"dataGaName":276,"dataGaLocation":30},"https://forum.gitlab.com/","forum",{"text":278,"config":279},"イベント",{"href":280,"dataGaName":281,"dataGaLocation":30},"/events/","events",{"text":283,"config":284},"パートナー",{"href":285,"dataGaName":286,"dataGaLocation":30},"/ja-jp/partners/","partners",{"backgroundColor":288,"textColor":289,"text":290,"image":291,"link":295},"#2f2a6b","#fff","ソフトウェア開発の未来への洞察",{"altText":292,"config":293},"ソースプロモカード",{"src":294},"/images/navigation/the-source-promo-card.svg",{"text":296,"config":297},"最新情報を読む",{"href":298,"dataGaName":299,"dataGaLocation":30},"/ja-jp/the-source/","the source",{"text":301,"config":302,"lists":304},"Company",{"dataNavLevelOne":303},"company",[305],{"items":306},[307,312,318,320,325,330,335,340,345,350,355],{"text":308,"config":309},"GitLabについて",{"href":310,"dataGaName":311,"dataGaLocation":30},"/ja-jp/company/","about",{"text":313,"config":314,"footerGa":317},"採用情報",{"href":315,"dataGaName":316,"dataGaLocation":30},"/jobs/","jobs",{"dataGaName":316},{"text":278,"config":319},{"href":280,"dataGaName":281,"dataGaLocation":30},{"text":321,"config":322},"経営陣",{"href":323,"dataGaName":324,"dataGaLocation":30},"/company/team/e-group/","leadership",{"text":326,"config":327},"チーム",{"href":328,"dataGaName":329,"dataGaLocation":30},"/company/team/","team",{"text":331,"config":332},"ハンドブック",{"href":333,"dataGaName":334,"dataGaLocation":30},"https://handbook.gitlab.com/","handbook",{"text":336,"config":337},"投資家向け情報",{"href":338,"dataGaName":339,"dataGaLocation":30},"https://ir.gitlab.com/","investor relations",{"text":341,"config":342},"トラストセンター",{"href":343,"dataGaName":344,"dataGaLocation":30},"/ja-jp/security/","trust center",{"text":346,"config":347},"AI Transparency Center",{"href":348,"dataGaName":349,"dataGaLocation":30},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":351,"config":352},"ニュースレター",{"href":353,"dataGaName":354,"dataGaLocation":30},"/company/contact/","newsletter",{"text":356,"config":357},"プレス",{"href":358,"dataGaName":359,"dataGaLocation":30},"/press/","press",{"text":37,"config":361,"lists":362},{"dataNavLevelOne":303},[363],{"items":364},[365,368,373],{"text":37,"config":366},{"href":39,"dataGaName":367,"dataGaLocation":30},"talk to sales",{"text":369,"config":370},"サポートを受ける",{"href":371,"dataGaName":372,"dataGaLocation":30},"/support/","get help",{"text":374,"config":375},"カスタマーポータル",{"href":376,"dataGaName":377,"dataGaLocation":30},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":379,"login":380,"suggestions":387},"閉じる",{"text":381,"link":382},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":383,"config":384},"GitLab.com",{"href":44,"dataGaName":385,"dataGaLocation":386},"search login","search",{"text":388,"default":389},"提案",[390,393,398,400,404,408],{"text":59,"config":391},{"href":64,"dataGaName":392,"dataGaLocation":386},"GitLab Duo (AI)",{"text":394,"config":395},"コード提案（AI）",{"href":396,"dataGaName":397,"dataGaLocation":386},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":111,"config":399},{"href":113,"dataGaName":111,"dataGaLocation":386},{"text":401,"config":402},"GitLab on AWS",{"href":403,"dataGaName":401,"dataGaLocation":386},"/ja-jp/partners/technology-partners/aws/",{"text":405,"config":406},"GitLab on Google Cloud",{"href":407,"dataGaName":405,"dataGaLocation":386},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":409,"config":410},"GitLabを選ぶ理由",{"href":72,"dataGaName":411,"dataGaLocation":386},"Why GitLab?",{"freeTrial":413,"mobileIcon":417,"desktopIcon":422},{"text":32,"config":414},{"href":415,"dataGaName":35,"dataGaLocation":416},"https://gitlab.com/-/trials/new/","nav",{"altText":418,"config":419},"GitLabアイコン",{"src":420,"dataGaName":421,"dataGaLocation":416},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":418,"config":423},{"src":424,"dataGaName":421,"dataGaLocation":416},"/images/brand/gitlab-logo-type.svg",{"freeTrial":426,"mobileIcon":430,"desktopIcon":432},{"text":427,"config":428},"GitLab Duoの詳細について",{"href":64,"dataGaName":429,"dataGaLocation":416},"gitlab duo",{"altText":418,"config":431},{"src":420,"dataGaName":421,"dataGaLocation":416},{"altText":418,"config":433},{"src":424,"dataGaName":421,"dataGaLocation":416},"content:shared:ja-jp:main-navigation.yml","Main Navigation","shared/ja-jp/main-navigation.yml","shared/ja-jp/main-navigation",{"_path":439,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"title":440,"button":441,"config":446,"_id":448,"_type":16,"_source":18,"_file":449,"_stem":450,"_extension":21},"/shared/ja-jp/banner","GitLab Duo Agent Platformがパブリックベータ版で利用可能に！",{"text":442,"config":443},"詳しく見る",{"href":444,"dataGaName":445,"dataGaLocation":30},"/gitlab-duo/agent-platform/","duo banner",{"layout":447},"release","content:shared:ja-jp:banner.yml","shared/ja-jp/banner.yml","shared/ja-jp/banner",{"_path":452,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"data":453,"_id":657,"_type":16,"title":658,"_source":18,"_file":659,"_stem":660,"_extension":21},"/shared/ja-jp/main-footer",{"text":454,"source":455,"edit":461,"contribute":466,"config":471,"items":476,"minimal":649},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":456,"config":457},"ページのソースを表示",{"href":458,"dataGaName":459,"dataGaLocation":460},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":462,"config":463},"このページを編集",{"href":464,"dataGaName":465,"dataGaLocation":460},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":467,"config":468},"ご協力をお願いします",{"href":469,"dataGaName":470,"dataGaLocation":460},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":472,"facebook":473,"youtube":474,"linkedin":475},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[477,500,554,587,621],{"title":48,"links":478,"subMenu":483},[479],{"text":480,"config":481},"DevSecOpsプラットフォーム",{"href":57,"dataGaName":482,"dataGaLocation":460},"devsecops platform",[484],{"title":190,"links":485},[486,490,495],{"text":487,"config":488},"プランの表示",{"href":192,"dataGaName":489,"dataGaLocation":460},"view plans",{"text":491,"config":492},"Premiumを選ぶ理由",{"href":493,"dataGaName":494,"dataGaLocation":460},"/ja-jp/pricing/premium/","why premium",{"text":496,"config":497},"Ultimateを選ぶ理由",{"href":498,"dataGaName":499,"dataGaLocation":460},"/ja-jp/pricing/ultimate/","why ultimate",{"title":501,"links":502},"ソリューション",[503,508,511,513,518,523,527,530,533,538,540,542,544,549],{"text":504,"config":505},"デジタルトランスフォーメーション",{"href":506,"dataGaName":507,"dataGaLocation":460},"/ja-jp/topics/digital-transformation/","digital transformation",{"text":136,"config":509},{"href":131,"dataGaName":510,"dataGaLocation":460},"security & compliance",{"text":124,"config":512},{"href":107,"dataGaName":108,"dataGaLocation":460},{"text":514,"config":515},"アジャイル開発",{"href":516,"dataGaName":517,"dataGaLocation":460},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":519,"config":520},"クラウドトランスフォーメーション",{"href":521,"dataGaName":522,"dataGaLocation":460},"/ja-jp/topics/cloud-native/","cloud transformation",{"text":524,"config":525},"SCM",{"href":121,"dataGaName":526,"dataGaLocation":460},"source code management",{"text":111,"config":528},{"href":113,"dataGaName":529,"dataGaLocation":460},"continuous integration & delivery",{"text":162,"config":531},{"href":164,"dataGaName":532,"dataGaLocation":460},"value stream management",{"text":534,"config":535},"GitOps",{"href":536,"dataGaName":537,"dataGaLocation":460},"/ja-jp/solutions/gitops/","gitops",{"text":175,"config":539},{"href":177,"dataGaName":178,"dataGaLocation":460},{"text":180,"config":541},{"href":182,"dataGaName":183,"dataGaLocation":460},{"text":185,"config":543},{"href":187,"dataGaName":188,"dataGaLocation":460},{"text":545,"config":546},"教育",{"href":547,"dataGaName":548,"dataGaLocation":460},"/ja-jp/solutions/education/","education",{"text":550,"config":551},"金融サービス",{"href":552,"dataGaName":553,"dataGaLocation":460},"/ja-jp/solutions/finance/","financial services",{"title":195,"links":555},[556,558,560,562,565,567,571,573,575,577,579,581,583,585],{"text":207,"config":557},{"href":209,"dataGaName":210,"dataGaLocation":460},{"text":212,"config":559},{"href":214,"dataGaName":215,"dataGaLocation":460},{"text":217,"config":561},{"href":219,"dataGaName":220,"dataGaLocation":460},{"text":222,"config":563},{"href":224,"dataGaName":564,"dataGaLocation":460},"docs",{"text":245,"config":566},{"href":247,"dataGaName":248},{"text":568,"config":569},"お客様の成功事例",{"href":570,"dataGaLocation":460},"/customers/",{"text":240,"config":572},{"href":242,"dataGaName":243,"dataGaLocation":460},{"text":250,"config":574},{"href":252,"dataGaName":253,"dataGaLocation":460},{"text":263,"config":576},{"href":265,"dataGaName":266,"dataGaLocation":460},{"text":255,"config":578},{"href":257,"dataGaName":258,"dataGaLocation":460},{"text":268,"config":580},{"href":270,"dataGaName":271,"dataGaLocation":460},{"text":273,"config":582},{"href":275,"dataGaName":276,"dataGaLocation":460},{"text":278,"config":584},{"href":280,"dataGaName":281,"dataGaLocation":460},{"text":283,"config":586},{"href":285,"dataGaName":286,"dataGaLocation":460},{"title":301,"links":588},[589,591,593,595,597,599,601,605,610,612,614,616],{"text":308,"config":590},{"href":310,"dataGaName":303,"dataGaLocation":460},{"text":313,"config":592},{"href":315,"dataGaName":316,"dataGaLocation":460},{"text":321,"config":594},{"href":323,"dataGaName":324,"dataGaLocation":460},{"text":326,"config":596},{"href":328,"dataGaName":329,"dataGaLocation":460},{"text":331,"config":598},{"href":333,"dataGaName":334,"dataGaLocation":460},{"text":336,"config":600},{"href":338,"dataGaName":339,"dataGaLocation":460},{"text":602,"config":603},"Sustainability",{"href":604,"dataGaName":602,"dataGaLocation":460},"/sustainability/",{"text":606,"config":607},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":608,"dataGaName":609,"dataGaLocation":460},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":341,"config":611},{"href":343,"dataGaName":344,"dataGaLocation":460},{"text":351,"config":613},{"href":353,"dataGaName":354,"dataGaLocation":460},{"text":356,"config":615},{"href":358,"dataGaName":359,"dataGaLocation":460},{"text":617,"config":618},"現代奴隷制の透明性に関する声明",{"href":619,"dataGaName":620,"dataGaLocation":460},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":37,"links":622},[623,625,627,629,634,639,644],{"text":37,"config":624},{"href":39,"dataGaName":40,"dataGaLocation":460},{"text":369,"config":626},{"href":371,"dataGaName":372,"dataGaLocation":460},{"text":374,"config":628},{"href":376,"dataGaName":377,"dataGaLocation":460},{"text":630,"config":631},"ステータス",{"href":632,"dataGaName":633,"dataGaLocation":460},"https://status.gitlab.com/","status",{"text":635,"config":636},"利用規約",{"href":637,"dataGaName":638,"dataGaLocation":460},"/terms/","terms of use",{"text":640,"config":641},"プライバシーに関する声明",{"href":642,"dataGaName":643,"dataGaLocation":460},"/ja-jp/privacy/","privacy statement",{"text":645,"config":646},"Cookieの設定",{"dataGaName":647,"dataGaLocation":460,"id":648,"isOneTrustButton":93},"cookie preferences","ot-sdk-btn",{"items":650},[651,653,655],{"text":635,"config":652},{"href":637,"dataGaName":638,"dataGaLocation":460},{"text":640,"config":654},{"href":642,"dataGaName":643,"dataGaLocation":460},{"text":645,"config":656},{"dataGaName":647,"dataGaLocation":460,"id":648,"isOneTrustButton":93},"content:shared:ja-jp:main-footer.yml","Main Footer","shared/ja-jp/main-footer.yml","shared/ja-jp/main-footer",{"featuredPost":662,"allPosts":689,"totalPages":903,"initialPosts":904},{"_path":663,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":664,"content":672,"config":682,"_id":685,"_type":16,"title":686,"_source":18,"_file":687,"_stem":688,"_extension":21},"/ja-jp/blog/what-is-ide",{"title":665,"description":666,"ogTitle":665,"ogDescription":666,"noIndex":6,"ogImage":667,"ogUrl":668,"ogSiteName":669,"ogType":670,"canonicalUrls":668,"schema":671},"IDE、そしてWeb IDEとは","Web IDE や IDE の知識を身に付け、統合開発環境ツール使用時や、開発自体に生かしましょう。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660036/Blog/Hero%20Images/ide.jpg","https://about.gitlab.com/blog/what-is-ide","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"IDE、そしてWeb IDEとは\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab Team\"}],\n        \"datePublished\": \"2025-06-03\",\n      }",{"title":665,"description":666,"authors":673,"heroImage":667,"date":675,"body":676,"category":14,"tags":677},[674],"GitLab Team","2025-06-03","Web IDEとは、クラウドベースで機能する、Webブラウザ上でソースのコミットまで行える高度なIDEです。では、IDEとは？ Web IDEやIDEを知らなかった人にもわかりやすいように、その仕組みや概要を、ここで簡単に説明します。\n\n## 目次\n\n* IDE（統合開発環境）とは\n* IDEの主な特徴\n* IDEの仕組み\n* IDEの種類\n* IDEを使うメリット\n* IDEの例\n* Web IDEとは\n* IDEのFAQ（よくある質問）\n\n## IDE（統合開発環境）とは\n\nIDEはIntegrated Development Environmentの略で、日本語では「統合開発環境」と訳されます。IDEは、開発者がソフトウェアのコードを開発する際に必要なソフトウェアをひとつにまとめ、単一の画面で操作できるようにしたものです。\n\nプログラミングには次のようなプログラムが必要になります。\n\n* テキストエディタ：ソースコードを記述  \n* コンパイラー：ソースコードからオブジェクトコードを生成  \n* リンカー：ターゲットとなるCPU用に実行コードを生成  \n* デバッガー：作成したプログラムのバグ検出に使用  \n* コードのバージョン管理：ほとんどのIDEはシームレスにバージョン管理システムを統合  \n* 自動化ビルド：ビルドプロセスを自動化\n\nIDEがなかった時代は、これら一つひとつを手作業で統合しなければなりませんでした。しかし、現在ではすべてがIDEツールに統合されているため、IDEをインストールするか、Web IDEにアクセスすれば、開発環境が瞬時に整います。ほとんどのIDEには、ソースコードを自動的に書いたり、編集したりするための機能が含まれています。そのため、コード開発を効率的に行うことが可能になります。\n\n## IDEの主な特徴\n\nIDEはこれまで、パソコンにインストールして使用するものが主流でしたが、現在はWeb IDEなど、クラウドベースのものが増えてきています。GitLabのWeb IDEも、Webブラウザにアクセスできれば、簡単に開発ができるため、複数の開発者で開発環境を共有することが可能です。\n\n統合開発環境（IDE）の特徴は、次のとおりです。\n\n1. 時間の節約：上述のように、各種プログラムがひとつのプラットフォーム上に統合されているため、ソフトウェア開発にかかる時間が短縮できます。  \n2. チームでの開発の効率化：バージョン管理やソースコードの管理など、引き継ぎにかかる手間が省け、ミスが予防できます。  \n3. ヒューマンエラーの防止：IDEのエディタには入力サポート機能があり、コンパイラにはシンタックスチェック、つまり構文の間違いチェック機能があります。こういった機能はヒューマンエラーを防止してくれます。\n\n## IDEの仕組み\n\nIDEとは、ソフトウェアの開発で使用するさまざまなソフトウェアを支援ツールと合わせてまとめ、統合開発環境として使えるようにしたものです。\n\n## IDEの種類\n\nIDEには、さまざまな種類があります。用途や目的、プログラミング言語、ターゲットとする OS や動作環境によって、選ぶポイントがあります。何を作るのか、どういうソフトウェアやアプリケーションを開発するのかによっても、最適 IDEは変わります。どのIDEを選ぶかによって、できることが異なるからです。しかし、異なるIDEで共通してできることは、次のようなものです。\n\n* ソースファイルの構成管理  \n* ビルドの自動実行  \n* デバッグ\n\nまた、たとえば、プログラミング言語には Java、Swift、C++、C\\#、UnityやPythonなどがあるため、コードを書く言語に対応しているIDEを選ぶべきでしょう。IDEの種類としては：\n\n* 多言語対応IDE  \n* モバイル開発用IDE  \n* WebまたはクラウドベースのIDE  \n* 単言語のIDE\n\nなどがあります。\n\nまた、IDEにはダウンロードして使うものと、クラウドで使用するもの、たとえばWeb IDEなどがあります。クラウドベースのものは、複数の開発者の間で開発環境が共有できるため、各々のチームメンバーの環境設定の違いは問題になりません。また、ビルドの際はCPUの速度低下により時間がかかるものですが、クラウドIDEでは速度低下は発生しません。ソースコード開発は、Gitなどと連携すれば、チーム間での共有も行えます。\n\n## IDEを使うメリット\n\nIDE、統合開発環境を使うメリットは、一言で言うなら「開発の効率化」です。「IDEとは」で記述したように、IDEにはテキストエディタ、コンパイル、デバッグなどの機能がすべて統合されています。そのため、コード開発の効率化が図れます。\n\nIDEを使うと、環境設定を行う手間が省けますが、逆に、IDEを使わないと、各種ツールを設定しなければならず、時間がかかります。また、IDEはインストール後すぐ使えるため、プログラミングの初心者にもお勧めできます。\n\n## IDEの例\n\nIDE、統合開発環境にはたくさんの種類があります。現在よく使われているIDEのうち、例を 5 つ挙げます。\n\n●        Visual Studio/Visual Studio Code – Microsoftが開発。市場でとくに人気がある\n\n●        IntelliJ IDEA – JetBrains が開発した、多言語対応型IDE\n\n●        Vim - Bram Moolenaar氏が開発した軽量のテキストエディタでIDEとして使用可\n\n●        Eclipse – IBMが開発した、オープンソースのIDE\n\n●        Jupyter Notebook – Pythonの実行環境をもつ、ブラウザベースのIDE\n\n## Web IDEとは\n\nWeb IDEとは、前述のように、WebベースのIDEで、WebブラウザさえあればアクセスできるIDEを意味します。個々に IDE を利用するのではなく、利用者はみな、ブラウザを介してIDEにアクセスするため、各種設定のわずらわしさから解放されます。\n\n### [GitLab Web IDE](https://docs.gitlab.com/ee/user/project/web_ide/)を使うメリット\n\nGitLabには、クラウドベースの、オンライン[Web IDE（英語版）](https://about.gitlab.com/blog/get-ready-for-new-gitlab-web-ide/)があります。Web IDEは、コミットのステージング機能を備えた高度なエディタです。Web IDEを使うと、GitLab UIから直接複数のファイルに変更を加えることができます。\n\n* フレキシブルでカスタム化可能なインターフェース  \n* パネルは折りたたみ可能で、テーマもカスタム化可能  \n* コンテキストアクションとドラッグ＆ドロップサポート  \n* 開いているファイル全部を一度に検索・置換  \n* GitLab UIから直接ブラウザで開けるため、クイックなコード修正などに便利\n\n## IDEのFAQ（よくある質問）\n\n### Q: IDE（統合開発環境）を使う理由は何ですか。  \nA: IDEはソフトウェア開発環境の一部を構成しています。よく設計されたIDEを使うと、ソフトウェア開発が大幅に効率化できます。\n\n### Q: IDEの3つの主要コンポーネントは何ですか。\n\nA: コードエディタ、コンパイラ、デバッガーが三大コンポーネントです。\n\n### Q: IDEのインストール、設定方法は？\n\nA: ニーズに合ったIDEを選び、最新バージョンを公式サイトから入手してインストールします。ほとんどのIDEで、各種設定は使用環境に合わせてカスタマイズ可能です。 \n\n## GitLab Web IDEを使ってみる\n\nGitLabのWeb IDE は、SaaSおよびSelf-Managedのサブスクリプションを購入されているお客様には無償でお試しいただけます。詳しくは[こちら](https://about.gitlab.com/direction/create/ide/web_ide/)をご覧ください。\n\n\u003Cbr>\u003Cbr>\n*監修：知念 梨果 [@rikachinen](https://gitlab.com/rikachinen)* \u003Cbr>\n*（GitLab合同会社 カスタマーサクセス本部 カスタマーサクセスエンジニア）*\n",[678,679,680,681],"collaboration","features","product","tutorial",{"slug":683,"featured":93,"template":684},"what-is-ide","BlogPost","content:ja-jp:blog:what-is-ide.yml","What Is Ide","ja-jp/blog/what-is-ide.yml","ja-jp/blog/what-is-ide",[690,711,732,755,775,797,818,840,859,880],{"_path":691,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":692,"content":698,"config":705,"_id":707,"_type":16,"title":708,"_source":18,"_file":709,"_stem":710,"_extension":21},"/ja-jp/blog/how-to-use-gitlabs-custom-compliance-frameworks-in-your-devsecops",{"title":693,"description":694,"ogTitle":693,"ogDescription":694,"noIndex":6,"ogImage":695,"ogUrl":696,"ogSiteName":669,"ogType":670,"canonicalUrls":696,"schema":697},"GitLabのカスタムコンプライアンスフレームワークをDevSecOps環境で活用する方法","新しいフレームワークと、50個を超えるすぐに使えるコントロールを活用することで、これまでひとつずつチェックしていた規制要件を、統合された自動化ワークフローの一部へと変換する方法をご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097104/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750097104092.png","https://about.gitlab.com/blog/how-to-use-gitlabs-custom-compliance-frameworks-in-your-devsecops","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLabのカスタムコンプライアンスフレームワークをDevSecOps環境で活用する方法\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2025-04-30\",\n      }",{"title":693,"description":694,"authors":699,"heroImage":695,"date":701,"body":702,"category":14,"tags":703},[700],"Fernando Diaz","2025-04-30","コンプライアンスは、単なるチェック項目ではなく、業務リスクから顧客の信頼に至るまで、あらゆるものに影響を与える重要なビジネス機能です。開発チームにとっては、コンプライアンス要件と開発速度のバランスを取ることは特に困難です。GitLabの[カスタムコンプライアンスフレームワーク](https://about.gitlab.com/blog/introducing-custom-compliance-frameworks-in-gitlab/)を使えば、コンプライアンスの確認を開発ワークフローに直接統合することができます。この記事では、この機能の概要と、その効果を最大限に活用する方法についてご紹介します。\n\n## GitLabのカスタムコンプライアンスフレームワークとは？\n\nGitLabのカスタムコンプライアンスフレームワークを使うと、組織は自社のGitLabインスタンス内で、コンプライアンス基準を定義・実装・適用できます。この機能により、GitLabに元々備わっているコンプライアンス機能を拡張し、特定の規制要件や社内ポリシー、業界標準に合わせたカスタマイズ可能なフレームワークを作成できるようになります。\n\nカスタムコンプライアンスフレームワークには、次のようなメリットがあります。\n* 手動での追跡作業にかかる手間を削減\n* 監査対応の準備を加速\n* コンプライアンス制御をGitLab上でネイティブに適用\n\n![フレームワークが一覧表示されたコンプライアンスセンターのスクリーンショット](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097114254.png)\n\n今回のリリースでは、50個を超えるすぐに使える（OOTB）コントロールが提供されており（今後さらに追加予定）、医療分野のHIPAA、データプライバシーに関するGDPR（EU一般データ保護規則）、サービス組織向けのシステムおよび組織管理（SOC）2、その他業界固有の規制など、組織ごとのコンプライアンスのニーズに合わせて調整できます。OOTBコントロールの一例は以下のとおりです。\n\n* 職務分離（SoD、例：最低2名の承認者が必要、作成者によるマージリクエストの承認）\n* セキュリティスキャナの実行（例：SASTの実行、[依存関係スキャン](https://docs.gitlab.com/user/application_security/dependency_scanning/)の実行）\n* 認証/認可（例：プロジェクトの公開設定が非公開、AuthSSOが必須）\n* アプリケーション構成（例：ステータスチェックが必須、Terraformが必須）\n\nさらに、GitLab APIを使用して外部環境のコントロールを構成することもでき、外部環境のステータスや詳細を確認できます。\n\n## ゼロからカスタムコンプライアンスフレームワークを作成する\n\nその価値を理解できたところで、次はGitLab環境でカスタムコンプライアンスフレームワークを実装する方法を見ていきましょう。デモアプリケーションを使って説明しますので、動画を見ながら一緒に進めてください。\n\n**注：** GitLab Ultimateのサブスクリプションが必要です。\n\n\u003C!-- TODO: EMBED_YT_VIDEO -->\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/bSwwv5XeMdQ?si=unDwCltF4vTHT4mB\" title=\"Adhering to compliance requirements with built-in compliance controls\n\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n**ステップ1：コンプライアンス要件を定義する**\n\nカスタムフレームワークを構築する前に、まずはコンプライアンス要件を明確に定義する必要があります。\n\n1. **適用される規制を特定する：** 自社に適用される規制や標準（例：GDPR、PCI DSS、HIPAA）を確認します。\n2. **各要件に対応するコントロールを割り当てる：** 各規制を、具体的で実行可能なコントロールとして整理します。\n3. **要件に優先順位を付ける：** リスクの高い領域や、影響の大きい要件を優先します。\n\n**ステップ2：カスタムコンプライアンスフレームワークを作成する**\n\n以下の手順でカスタムコンプライアンスフレームワークを作成できます。\n\n1. GitLabグループの**セキュア  > コンプライアンスセンター**セクションに移動します。\n2. **新しいフレームワーク**ボタンを押します。  \n3. **空のフレームワークを作成**を選択します。\n\n![カスタムコンプライアンスフレームワークの作成画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750097114255.png)\n\n4. フレームワークの名前、説明、色を設定します。\n\n![「新しいコンプライアンスフレームワーク」の画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097114257.png)\n\n5. フレームワークに要件を追加します：\n   a. ページを下にスクロールして**要件**タブを開きます。\n\n   b. **新しい要件**ボタンをクリックします。\n\n   c. 名前と説明を入力します。\n   d. **コントロール**セクションで**GitLab コントロールを選択**をクリックします。  \n   e. 一覧からコントロールを選択します（例：少なくとも 2 つの承認、SAST の実行など）。 \n   f.  **要求事項を作成**ボタンをクリックします。\n\n![「要求事項を作成」ボタン](https://res.cloudinary.com/about-gitlab-com/image/upload/v1752378652/Blog/oufh8frdwiq1os85byin.png)\n\n6. **フレームワークを作成**ボタンをクリックします。\n\n指定した内容でフレームワークが作成され、プロジェクトに追加できるようになります。また、適切なスキーマに準拠したJSONを使用して、コンプライアンスフレームワークを[インポート](http://TODO)することも可能です。\n\n**ステップ3：プロジェクトにフレームワークを適用する**\n\nフレームワークを作成したら、以下の手順に従います。\n1. コンプライアンスセンターから**プロジェクト**タブを選択します。\n2. 検索バーを使って対象のプロジェクトを**検索**または**絞り込み**ます。 \n3. フレームワークを適用するプロジェクトを選択します。\n4. **一括操作を選択**ボタンをクリックします。\n5. **選択したプロジェクトにフレームワークを適用する**を選択します。\n6. **フレームワークを選択**ボタンをクリックします。\n7. 一覧から適用するフレームワークを選択します。\n8. **適用**ボタンをクリックします。\n\n![SOC 2フレームワークのドロップダウンが表示されたコンプライアンスセンターの画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097114258.png)\n\n適用されたフレームワークは、プロジェクト内で要求事項として可視化され、追跡できるようになります。\n\n**ステップ4：コンプライアンスの状況をモニタリング・報告する**\n\nフレームワークを設定したら、以下のことができるようになります。\n\n1. コンプライアンスセンターを使って、プロジェクト全体のコンプライアンス状況を管理する。不合格となったコントロールの詳細や、推奨される修正方法も確認できます。\n2. 監査や関係者によるレビューへ向けた、**コンプライアンスレポート**を生成する。\n3. **コンプライアンスに関するアラート**を設定し、潜在的な問題を関係者へ通知する。\n4. **監査イベント**で、コンプライアンス設定に対して行われた操作の概要を確認する。\n\n![SOC2テストフレームワークが表示されたコンプライアンスセンターの画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097114260.png)\n\n## 実例：SOC2 コンプライアンスフレームワークの実装\n\nシステムおよび組織管理（SOC）2、通称SOC2は、米国公認会計士協会（AICPA）によって策定された、厳格な監査基準です。SOC2は、サービス組織のセキュリティ、可用性、処理の完全性、機密性、プライバシーに関するコントロールを評価します。詳細については、[GitLabでSOC 2のセキュリティ要件を満たすためのガイド](https://about.gitlab.com/blog/guide-to-fulfilling-soc-2-security-requirements-with-gitlab/)をご覧ください。\n\nそれでは、カスタムコンプライアンスフレームワークを使って SOC2 のセキュリティコンプライアンスを検証する実践的な例を見てみましょう。SOC2 のセキュリティ基準には以下が求められます。\n\n* 不正アクセスを防ぐためのコントロールの導入\n* リスクを特定し、軽減するための手順の確立\n* セキュリティインシデントの検出および対応のためのシステムの構築\n\n**免責事項：** これはSOC2の要件に準拠するために利用可能な一部のコントロールを紹介する例です。本番環境に導入する前に、必ずセキュリティ/コンプライアンスチームと相談してください。\n\nGitLabのOOTB（すぐに使える）コントロールを活用したSOC2用カスタムコンプライアンスフレームワークの例：\n\n* **名前：** SOC2セキュリティ要件\n* **説明：** SOC2フレームワークに準拠するためのセキュリティ要件を追加します\n* **要件：**  \n  * **不正アクセスを防ぐためのコントロールの導入**  \n    * Auth SSOを有効化\n    * CI/CDジョブトークンのスコープを有効化\n    * 組織レベルでMFA（多要素認証）を必須化\n  * **リスクを特定し、軽減するための手順の確立**  \n    * 少なくとも2つの承認\n    * 作成者によるマージリクエストの承認\n    * コミッターによるマージリクエストの承認\n    * デフォルトブランチの保護\n  * **セキュリティインシデントの検出および対応のためのシステムの構築**  \n    * 依存関係スキャンの実行\n    * SASTの実行\n    * DASTの実行\n\nこのフレームワークをプロジェクトに適用することで、コンプライアンスが崩れたタイミングや、再度準拠するために必要な対策を把握できるようになります。なお、1つのプロジェクトに対して複数のコンプライアンスフレームワークを作成・適用することも可能です。たとえば、SOC2のプロセス整合性要件専用のフレームワークを別途設けることもできます。\n\n## コンプライアンス要件を満たすためにセキュリティポリシーを実装する\n\n必須ではありませんが、カスタムコンプライアンスフレームワークを含むプロジェクトにセキュリティポリシーを適用することができます。これにより、特定のコンプライアンス基準がセキュリティポリシーによって強制されることを保証できます。たとえば、セキュリティスキャンを求めるカスタムコンプライアンスフレームワークが適用されたプロジェクトに対して、セキュリティスキャナーの実行を強制できます。\n\nGitLab では、以下のようなさまざまなセキュリティポリシーが提供されています。\n\n* [スキャン実行ポリシー](https://docs.gitlab.com/user/application_security/policies/scan_execution_policies/)：パイプラインの一部または指定されたスケジュールでセキュリティスキャンを実行します。\n* [マージリクエスト承認ポリシー](https://docs.gitlab.com/user/application_security/policies/merge_request_approval_policies/)：スキャン結果に基づいて、プロジェクトレベルの設定や承認ルールを強制します。\n* [パイプライン実行ポリシー](https://docs.gitlab.com/user/application_security/policies/pipeline_execution_policies/)：プロジェクトのパイプラインにおけるCI/CDジョブの実行を強制します。\n* [脆弱性管理ポリシー](https://docs.gitlab.com/user/application_security/policies/vulnerability_management_policy/)：デフォルトブランチで検出されなくなった脆弱性を自動的に解決します。\n\nここでは、SASTスキャナーを実行することで、SASTスキャンを要求する要件への準拠を自動的に行う方法を紹介します。特定のフレームワークが適用されたプロジェクトに対してセキュリティポリシーを作成・適用するには、次の手順に従います。\n\n1. **SAST スキャン**が求められるカスタムコンプライアンスフレームワークが適用されているプロジェクトに移動します。\n2. サイドバーで、**セキュア > ポリシー**の順に選択します。\n3. **新しいポリシー**ボタンをクリックします。\n4. **スキャン実行ポリシー**で、**ポリシーを選択**ボタンをクリックします。\n5. **名前**と**説明**を入力します。\n6. **アクション**で、実行するスキャンとして**SAST**を選択します。\n\n![「アクション」画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097114263.png)\n\n7. **条件**で、すべてのブランチでパイプラインが実行されたときにトリガーされるように設定します。\n\n![「条件」画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097114/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097114264.png)\n\n8. **マージリクエスト経由で設定** ボタンをクリックします。\n9. この時点で、すべてのセキュリティポリシーが含まれた別プロジェクトでマージリクエスト（MR）が作成されます。\n10. **マージ**ボタンをクリックします。\n\nこれで、すべてのブランチでSASTが実行されるようになり、その領域におけるコンプライアンスが保証されます。他にもさまざまな種類のセキュリティポリシーがありますので、要件に合うものを探してみてください。\n\n\n\n## 5つのベストプラクティス\n\nカスタムコンプライアンスフレームワークを最大限に活用するために、以下のベストプラクティスに従いましょう。\n\n1. **小さく始める：** まずは、重要な規制や標準のうち1つから着手し、そこから範囲を広げていきましょう。\n2. **関係者を巻き込む：** フレームワークの作成には、コンプライアンスチーム、セキュリティチーム、デベロッパーチームを含めることが重要です。\n3. **可能な限り自動化する：** GitLab CI/CDを活用して、コンプライアンスチェックの自動化を図りましょう。\n4. **しっかりと文書化する：** フレームワークがどのように規制要件に対応しているか、明確に文書化しておきましょう。\n5. **定期的に見直す：** 規制の変更や新たな要件の発生に応じて、フレームワークを更新するようにしましょう。\n\n## 無料トライアルで今すぐスタート！\n\nGitLabのカスタムコンプライアンスフレームワークは、コンプライアンスを開発ワークフローに直接組み込むことで、DevSecOpsにおける大きな進化をもたらします。カスタムフレームワークを導入することで、コンプライアンス業務の負担を軽減し、リスク管理を強化しながら、規制要件を満たしたまま開発サイクルを加速させることが可能になります。\n\nカスタムコンプライアンスフレームワークを定義・適用できる機能により、チームは自社特有の規制状況に対応する柔軟性を得られる一方で、組織全体のコンプライアンスの慣習を一貫させるために必要な構造も得られます。\n\n今後さらに規制要件が複雑化していく中で、カスタムコンプライアンスフレームワークのようなツールを活用して、コンプライアンスと開発速度のバランスを持続的に両立させることが、ますます重要になるでしょう。\n\n> 今すぐカスタムコンプライアンスフレームワークをお試しになりたい場合は、[GitLab Ultimateの60日間無料トライアル](https://about.gitlab.com/ja-jp/free-trial/?hosted=saas)にぜひお申し込みください。\n\n## 関連リンク\n\n以下のリソースで、カスタムコンプライアンスフレームワークの詳細や、そのメリットについてご覧いただけます。\n\n* [カスタムコンプライアンスフレームワークのドキュメント](https://docs.gitlab.com/user/compliance/compliance_center/compliance_status_report/)  \n* [カスタムコンプライアンスフレームワークに関するエピック](https://gitlab.com/groups/gitlab-org/-/epics/13295)  \n* [セキュリティポリシーに関するドキュメント](https://docs.gitlab.com/user/application_security/policies/)  \n* [GitLabのセキュリティおよびコンプライアンスソリューション](https://about.gitlab.com/ja-jp/solutions/security-compliance/)",[14,681,704,679,680],"DevSecOps platform",{"slug":706,"featured":93,"template":684},"how-to-use-gitlabs-custom-compliance-frameworks-in-your-devsecops","content:ja-jp:blog:how-to-use-gitlabs-custom-compliance-frameworks-in-your-devsecops.yml","How To Use Gitlabs Custom Compliance Frameworks In Your Devsecops","ja-jp/blog/how-to-use-gitlabs-custom-compliance-frameworks-in-your-devsecops.yml","ja-jp/blog/how-to-use-gitlabs-custom-compliance-frameworks-in-your-devsecops",{"_path":712,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":713,"content":719,"config":726,"_id":728,"_type":16,"title":729,"_source":18,"_file":730,"_stem":731,"_extension":21},"/ja-jp/blog/enhance-application-security-with-gitlab-hackerone",{"title":714,"description":715,"ogTitle":714,"ogDescription":715,"noIndex":6,"ogImage":716,"ogUrl":717,"ogSiteName":669,"ogType":670,"canonicalUrls":717,"schema":718},"GitLab + HackerOneでアプリケーションセキュリティを強化","GitLabとHackerOne社のパートナーシップの詳細と、組織のアプリケーションセキュリティ対策状況を強化するインテグレーションを簡単に導入する方法をご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097503/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2810%29_5ET24Q6i8ihqrAOkge7a1R_1750097503214.png","https://about.gitlab.com/blog/enhance-application-security-with-gitlab-hackerone","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab + HackerOneでアプリケーションセキュリティを強化\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2025-04-03\",\n      }",{"title":714,"description":715,"authors":720,"heroImage":716,"date":721,"body":722,"category":14,"tags":723},[700],"2025-04-03","開発プロセスにおいて、セキュリティはもはや後回しにできるものではありません。組織には、ソフトウェア開発ライフサイクル全体にセキュリティを統合できる堅牢なソリューションが求められています。ここで、HackerOne社とGitLabのパートナーシップが、現代のアプリケーション開発チームにとって魅力的な組み合わせとなります。\n\nGitLabはAI搭載の包括的なDevSecOpsプラットフォームであり、HackerOneは業界をリードするクラウドソーシング型セキュリティプラットフォームです。この2社がパートナーシップを結び、GitLabの効率的なDevSecOpsワークフローと、HackerOneの強力な脆弱性管理機能という両者の強みを融合させました。\n\nこのチュートリアルでは、HackerOneのGitLabインテグレーションを実装することで、デベロッパーの生産性とセキュリティ対策状況を強化する方法を説明します。\n\n## デベロッパーを支援するインテグレーション\n\nHackerOneのGitLabインテグレーションは、非常にシンプルでありながら強力です。セキュリティ研究者がHackerOneのプラットフォーム上で脆弱性を発見すると、その情報で自動的にGitLabのイシューが作成されます。これにより、以下のようなシームレスなワークフローが実現します。\n\n* セキュリティ研究者がHackerOneのプラットフォームで脆弱性を特定\n* 検証済みの脆弱性について自動的にGitLabのイシューが作成される\n* 開発チームは既存のワークフロー内でこれらのイシューに直接対応できる\n* 解決状況は両プラットフォーム間で同期される\n\nこの[インテグレーション](https://docs.hackerone.com/en/articles/8571227-gitlab-integration)を使うことで、GitLabイシューをHackerOne上の参照として追跡でき、GitLabとHackerOneの強みをすぐに取り入れることができます。このインテグレーションにより、HackerOneのレポートとGitLabイシュー間で双方向かつシームレスなデータ同期が可能となり、開発チームとセキュリティチームの連携が強化され、セキュリティの脆弱性への対応が効率化します。\n\nHackerOneレポートとGitLabイシュー間で情報を同期するには、[HackerOneのGitLabインテグレーションのドキュメント](https://docs.hackerone.com/en/articles/10394699-gitlab-setup)に従って設定を行ってください。このドキュメントでは、以下の手順が解説されています。\n\n1. HackerOneの設定に基づいた[OAuth 2.0アプリケーション](https://docs.gitlab.com/ee/integration/oauth_provider.html)をGitLabインスタンス上に作成する\n2. HackerOneと新たに作成したGitLabのOAuth 2.0を接続する\n3. GitLab APIへのアクセスをHackerOneに許可する \n4. HackerOneレポートをエスカレーションするGitLabプロジェクトを設定する\n5. HackerOneの各フィールドをGitLabの対応するフィールドにマッピングする\n6. GitLabからHackerOne、およびHackerOneからGitLabへのイベントを設定する\n\nインテグレーションを完了すると、GitLabとHackerOneの間でデータが双方向にシームレスに同期されます。これにより、コンテキストの切り替えが簡素化され、両方のシステムで脆弱性を簡単に追跡できるようになります。このインテグレーションにより、次の機能が使用できます。\n\n* **HackerOneからGitLabイシューを作成：**HackerOneで受け取ったレポートに基づき、新しいGitLabイシューを作成できます。\n* **HackerOneレポートを既存のGitLabタスクにリンク**   \n* **HackerOneからGitLabへの更新内容の同期：** レポートの以下の更新情報がGitLabのコメントとして同期されます。\n   * レポートのコメント\n  * ステータスの変更  \n  * 報酬情報\n  * 担当者の変更\n  * 公開設定の変更\n  * GitLabイシューのクローズ\n* **GitLabからHackerOneへの更新内容の同期：** GitLabの以下の更新情報がHackerOneの関連レポートの内部コメントとして反映されます。 \n  * コメント \n  * ステータスの変更\n* **HackerOneの重大度とGitLabラベルのマッピング：** レポートをGitLabにエスカレーションする際、カスタムの優先度を設定できます。 \n* **期限のマッピング：** レポートの重大度に基づいて、自動で期限を設定できます。\n\n![GitLab + HackerOneによる、GitLabでのレポートへのコメント追加およびステータス変更](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097510/Blog/Content%20Images/Blog/Content%20Images/sync_aHR0cHM6_1750097509644.png)\n\nこれらの機能により、開発チームとセキュリティチームの連携がよりスムーズになり、効率よくセキュリティの脆弱性に対応できます。インテグレーションの仕組みについてさらに詳しく知りたい場合は、[インテグレーションドキュメント](https://docs.hackerone.com/en/articles/8571227-gitlab-integration)をご覧ください。\n\n## HackerOne社のバグバウンティプログラムについて\n\nHackerOne社は、顧客のソフトウェアシステム、Webサイト、またはアプリケーションに存在する脆弱性を発見・報告することで報酬が得られる、バグバウンティプログラムやサイバーセキュリティ施策を提供しています。バグバウンティプログラムは、アプリケーションのセキュリティを強化する上で、以下のような役割を果たします。\n\n* 悪意ある攻撃者に悪用される前にセキュリティ上の欠陥を特定する\n* 世界中のセキュリティ研究者による多様な専門知識を活用する\n* コスト効率の高いサイバーセキュリティ強化手段を提供する\n* 社内のセキュリティ対策や従来型のペネトレーションテストを補完する\n\nGitLabはHackerOne社のバグバウンティプログラムを活用しており、セキュリティ研究者はGitLabのアプリケーションやインフラにおける脆弱性を報告できます。このクラウドソーシングによるアプローチにより、GitLabは潜在的なセキュリティ問題をより効果的に特定し、対処できます。\n\n![HackerOne社のGitLabバグバウンティページ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097510/Blog/Content%20Images/Blog/Content%20Images/hackerone_gitlab_bug_bounty_page_aHR0cHM6_1750097509645.png)\n\nHackerOneのプラットフォームと世界中のハッカーコミュニティを活用することで、組織はセキュリティ対策状況を大幅に強化し、脆弱性をより迅速に特定し、潜在的な脅威に先手を打つことができます。\n\n## GitLabでアプリケーションを保護し、効率性を向上させる\n\nGitLabは、セキュリティおよびコンプライアンスツールを含む、ソフトウェア開発ライフサイクル全体をカバーする完全なDevSecOpsプラットフォームを提供しています。GitLabは、以下の種類のセキュリティスキャナーに対応しています。\n- 静的アプリケーションセキュリティテスト（SAST）\n- 動的アプリケーションセキュリティテスト（DAST）\n- コンテナスキャン\n- 依存関係スキャン\n- Infrastructure as Codeスキャン\n- カバレッジガイド付きファジング\n- Web APIファジング\n\nGitLabを使えば、CI/CDパイプラインの定義ファイルにテンプレートを追加するだけで、セキュリティスキャンを導入できます。たとえば、SASTを有効にするには、.gitlab-ci.ymlファイルに数行のコードを追加するだけです。\n\n```yaml\nstage:\n  - test\n\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n```\n\nこれにより、testステージでSASTが実行され、アプリケーションで[使用されている言語を自動で検出](https://docs.gitlab.com/ee/user/application_security/sast/#supported-languages-and-frameworks)します。そして、マージリクエストが作成されるたびに、SASTがフィーチャーブランチとターゲットブランチ間の差分にある脆弱性を検出し、それぞれの脆弱性に関する修正のためのデータを提供します。\n\n![マージリクエストで検出されたNoSQLインジェクションの脆弱性](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097510/Blog/Content%20Images/Blog/Content%20Images/no_sql_injection_vulnerability_mr_view_aHR0cHM6_1750097509647.png)\n\nSASTスキャナーの結果は、セキュリティポリシーが適用されている場合、コードのマージをブロックすることができます。GitLabのネイティブユーザーを承認者として設定でき、脆弱なコードがマージされる前に必ずレビューを行うようにできます。これにより、すべての脆弱性が適切な関係者によって確認される体制が整います。\n\n![マージリクエストの承認ポリシー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097510/Blog/Content%20Images/Blog/Content%20Images/merge_request_approval_policy_aHR0cHM6_1750097509649.png)\n\nHackerOneは、オペレーションおよび開発プロセスにおいてGitLabを複数の重要な方法で統合しており、それにより開発プロセスの改善、スケーラビリティの向上、チーム間のコラボレーションの強化を実現しています。こうした改善によって、デプロイがより迅速になり、チームプランニングもスムーズになります。\n\n## HackerOneのGitLabインテグレーションの主な利点\n\nHackerOneとGitLabを組み合わせて活用することで、以下のような主なメリットがあります。\n\n* **セキュリティの可視性向上：** デベロッパーは、普段の作業環境から離れることなく、セキュリティ上の脆弱性を即座に把握できます。リアルタイムで認識できるので、機能開発と並行してセキュリティ問題に優先順位を付けて対応できます。\n* **修正プロセスの効率化：** HackerOneのレポートを直接GitLabイシューに変換することで、修正作業が標準の開発サイクルに組み込まれます。プラットフォームを行き来する際の頭の切り替えを減らし、セキュリティ修正を他の開発作業と一緒に追跡できます。\n* **修正までの時間を短縮：** このインテグレーションにより、脆弱性の発見から解決までの時間が大幅に短縮されます。HackerOneからの報告が即座にGitLabで確認できるため、デベロッパーは遅延なく修正に着手でき、全体的なセキュリティ対策状況の強化にもつながります。\n* **コラボレーションの改善：** セキュリティ研究者、セキュリティチーム、デベロッパーがこのインテグレーションを通じてより効果的に連携できます。コメントや更新情報が両プラットフォーム間でやり取りされ、セキュリティ強化に向けた協力体制が整います。\n* **実際の導入効果：** HackerOneとGitLabのインテグレーションを導入した組織では、以下のような成果が報告されています。\n  * 脆弱性の発見から修正までの時間が最大70%短縮\n  * デベロッパーが慣れ親しんだ作業環境のまま対応できることによる満足度の向上\n  * 組織全体でのセキュリティ可視性の向上\n  * セキュリティリソースのより効果的な活用\n\n> [インテグレーション設定ページ](https://docs.hackerone.com/en/articles/10394699-gitlab-setup)にアクセスして、今日から導入を始めましょう。\n\n## 関連リンク\n\nGitLabとHackerOneの詳細、およびセキュリティ対策状況の強化については、以下のリソースをご覧ください。\n* [HackerOneのGitLabインテグレーションの使用方法](https://docs.hackerone.com/en/articles/8571227-gitlab-integration)  \n* [HackerOneのGitLabバグバウンティプログラム](https://hackerone.com/gitlab?type=team)\n* [GitLabのセキュリティおよびコンプライアンスソリューション](https://about.gitlab.com/ja-jp/solutions/security-compliance/)  \n* [HackerOne社は、GitLabにビルトインされたセキュリティにより、デプロイ速度を5倍まで高めることに成功](https://about.gitlab.com/ja-jp/customers/hackerone/)  \n* [GitLabアプリケーションセキュリティドキュメント](https://docs.gitlab.com/ee/user/application_security/)\n",[14,681,235,286,704,724,725],"DevSecOps","bug bounty",{"slug":727,"featured":6,"template":684},"enhance-application-security-with-gitlab-hackerone","content:ja-jp:blog:enhance-application-security-with-gitlab-hackerone.yml","Enhance Application Security With Gitlab Hackerone","ja-jp/blog/enhance-application-security-with-gitlab-hackerone.yml","ja-jp/blog/enhance-application-security-with-gitlab-hackerone",{"_path":733,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":734,"content":740,"config":749,"_id":751,"_type":16,"title":752,"_source":18,"_file":753,"_stem":754,"_extension":21},"/ja-jp/blog/what-is-sbom",{"title":735,"description":736,"ogTitle":735,"ogDescription":736,"noIndex":6,"ogImage":737,"ogUrl":738,"ogSiteName":669,"ogType":670,"canonicalUrls":738,"schema":739},"SBOMの基本と導入方法｜ソフトウェアのセキュリティを守るための実践ガイド","この記事では、SBOMの基本知識や注目されている背景、導入方法などを詳しく解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663321/Blog/Hero%20Images/SBOM_keyvisual.jpg","https://about.gitlab.com/blog/what-is-sbom","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"SBOMの基本と導入方法｜ソフトウェアのセキュリティを守るための実践ガイド\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab Japan Team\"},{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2025-03-26\",\n      }",{"title":735,"description":736,"authors":741,"heroImage":737,"date":744,"body":745,"category":14,"tags":746},[742,743],"GitLab Japan Team","GitLab","2025-03-26","ソフトウェア開発において、セキュリティリスクへの対応は年々重要性を増しています。特に、OSS（オープンソースソフトウェア）の普及に伴い、脆弱性管理やライセンス対応の課題に直面している方も多いのではないでしょうか。\n\nこうした中で注目を集めているのが、ソフトウェアの構成要素を可視化する「SBOM」です。本記事では、SBOMの基本知識や注目されている背景、導入方法などを詳しく解説します。セキュリティの強化や開発の効率化を目指す方は、ぜひ参考にしてください。\n\n## 1. SBOMとは？基本知識と重要性\n\nSBOMは「Software Bill of Materials」の略で、ソフトウェアに含まれるすべての構成要素（コンポーネント）を一覧化した「部品表」のことです。\n\nSBOMには、使用されているOSS、サードパーティ製ライブラリ、独自開発のコンポーネントなど、ソフトウェアを構成するすべての要素を記載します。各コンポーネントのバージョン情報、ライセンス情報、依存関係なども含まれており、これらの情報を一元管理し、製品全体の透明性や安全性を確保する重要な役割を果たします。\n\n## 2. SBOMが注目されている背景\n\n![SBOMとは3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749687588/Blog/Content%20Images/SBOM%E3%81%A8%E3%81%AF3.jpg)\n\n近年、ソフトウェア開発の環境が大きく変化する中で、SBOMの重要性が急速に高まっています。ここでは、SBOMの注目度が高まっている3つの背景について、詳しく見ていきましょう。\n\n### 2-1 ソフトウェアサプライチェーン攻撃の増加\n\nソフトウェアサプライチェーン攻撃とは、開発・供給過程で使用されるソフトウェアやツールに不正なコードや脆弱性を仕込む手法です。この攻撃は、正規の更新プログラムやコンポーネントを介して攻撃が拡散するという特徴があります。信頼される配布チャネルを利用するため攻撃の検知が極めて困難であり、被害が広範囲に及ぶケースも少なくありません。\n\n独立行政法人 情報処理推進機構（IPA）が発表した「[情報セキュリティ10大脅威 2024[組織]](https://www.ipa.go.jp/security/10threats/10threats2024.html)」（外部サイト）では、サプライチェーンを狙った攻撃が2位にランクインしており、その深刻さが伺えるでしょう。また、同ランキングの5位「修正プログラムの公開前を狙う攻撃（ゼロデイ攻撃）」や7位「脆弱性対策情報の公開に伴う悪用増加」では、脆弱性が指摘されたコンポーネントの存在や依存関係を迅速に把握できなければ、被害拡大の要因になります。\n\nこのような背景から、ソフトウェアの構成要素を詳細に可視化し、脆弱性や不正コードの混入を早期に検知できるSBOMの重要性が高まっています。\n\n#### 2-1-1 アメリカの大統領令のひとつにSBOMの提供が挙げられたことも\n\n2020年に発生したSolarWinds事件は、サプライチェーン攻撃の脅威を世界に示した象徴的な出来事です。この事件では、SolarWinds社が提供するツールを通じてマルウェアが配布され、約17,000の企業・組織に影響を与えています。\n\nこれを受け、2021年にはアメリカ政府が「国家のサイバーセキュリティ向上に関する大統領令」を発令しました。この中でSBOMの提供が重要な要件として位置づけられ、連邦政府機関に製品を提供するソフトウェア開発者や供給者は、正確なSBOMを提供することが求められるようになりました。\n\n### 2-2 OSSの普及\n\nOSSは、現代のソフトウェア開発において不可欠な要素のひとつです。OSSの活用は、開発コストの削減や開発スピードの向上、品質の確保など、多くのメリットをもたらします。\n\n一方で、OSSの利用拡大に関しては、一部課題もあります。特に深刻なのが、OSSコンポーネントを標的としたサプライチェーン攻撃の増加です。また、使用しているOSSの脆弱性対応やライセンスコンプライアンスの確保も、重要な課題となっています。\n\nこのような課題を解決するためにも、OSSを含めコンポーネントのバージョンやライセンス情報まで管理できるSBOMの有効性が注目されるようになりました。\n\n### 2-3 経済産業省による推進\n\n日本でSBOMへの注目が高まっている要因のひとつとして、経済産業省による積極的な推進も挙げられます。同省では、サイバーセキュリティリスクの増大に対応するため、SBOMの活用を含めた包括的なセキュリティ対策の強化を推進しています。\n\nたとえば、2024年8月には、SBOMを導入する具体的なメリットや導入プロセスを詳細に解説した「[ソフトウェア管理に向けたSBOM（Software Bill of Materials）の導入に関する手引ver2.0](https://www.meti.go.jp/press/2023/07/20230728004/20230728004-3.pdf)」が公開されました。\n\nまた、中小企業も含め、あらゆる企業でSBOM導入を効率的に活用できるよう、検討会や啓発活動も行われています。これらの取り組みにより、SBOMは今後さらに普及が進んでいくでしょう。\n\n## 3. SBOMを導入すべき理由とその効果\n\n![SBOMとは](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749687588/Blog/Content%20Images/SBOM%E3%81%A8%E3%81%AF.jpg)\n\nSBOMの導入によって、セキュリティリスクの可視化や脆弱性管理の効率化など、多くのメリットがあります。ここでは、SBOMを導入すべき理由とその効果について詳しく解説します。\n\n### 3-1 ソフトウェアサプライチェーンリスクの可視化\n\nSBOMを導入する最大のメリットのひとつは、ソフトウェアサプライチェーンのリスクを可視化できる点です。開発・運用するソフトウェアの全構成要素が一覧化され、各コンポーネントのバージョンや依存関係を明確に把握できるため、効率的かつ効果的なセキュリティ対策が可能となります。\n\n特に、複数のベンダーが関与する大規模なシステム開発において、すべてのコンポーネントが同じセキュリティ基準を満たしているかを確認するのは容易ではありません。一方、SBOMがあれば、各ベンダーが提供するソフトウェア部品のセキュリティ状況を統一的に管理でき、潜在的な不備やリスクを早期に発見できます。\n\nこのように、SBOMは組織のセキュリティリスク管理を強化し、セキュリティ事故を未然に防ぐための重要な基盤となります。\n\n### 3-2 脆弱性管理の効率化と迅速な対応\n\nSBOMを活用すると、システム全体の脆弱性管理を大幅に効率化できます。特に、新たな脆弱性が報告された際の迅速な対応が可能になるのは大きなメリットです。SBOMがあれば、脆弱性が指摘されたコンポーネントや、セキュリティリスクの高い古いバージョンのソフトウェアを即座に特定し、対処することができます。\n\nさらに、各コンポーネント間の依存関係も詳細に記録されているため、特定の脆弱性が他の部品に与える影響範囲の正確な把握が可能です。これにより、問題解決に向けた対応を効率的に進められ、被害を最小限に抑えられます。\n\nこのような迅速で正確な対応力は、セキュリティ事故への対処だけでなく、顧客や取引先からの信頼を維持するためにも欠かせません。\n\n### 3-3 コンプライアンス対応とライセンス管理\n\nSBOMは、ソフトウェア開発におけるコンプライアンス対応とライセンス管理の効率化を支援する強力なツールです。特にOSSを利用する場合、それぞれのコンポーネントには固有のライセンス条件が設定されており、これらを適切に管理しなければなりません。\n\nSBOMを活用すると使用しているOSSのライセンス情報を正確かつ迅速に確認できるため、ライセンス違反のリスクを回避できます。これにより、法的トラブルやブランドイメージの毀損といった事態も防げるでしょう。\n\nまた、ライセンス管理を手動で行う場合、見落としや記録ミスが発生しやすく、チェックに多くの時間を要するケースがあります。SBOMを活用するとライセンス情報の管理を自動化でき、運用効率が大幅に向上するのもメリットのひとつです。\n\n### 3-4 コスト削減や開発の効率化\n\nSBOMの導入は、組織全体のコスト削減や開発の効率化にも寄与します。まず、脆弱性の特定やライセンス違反の確認にかかる手間を大幅に削減できるため、人的リソースの効率的な活用が可能になります。\n\nまた、セキュリティリスクの早期発見と対応が可能になることで、インシデントへの対処や顧客補償にかかるコストを抑えられる点も大きなメリットです。加えて、ライセンス違反による法的対応コストや、プロジェクトの遅延によるペナルティコストなども抑えられます。\n\nさらに、ソフトウェアの全体構成が明確になるため、新しい機能追加やメンテナンス作業も効率的に行えます。そのため、SBOMの活用は、結果として開発チームの生産性の向上にもつながるでしょう。\n\n## 4. SBOMツールを導入する際の課題\n\n![SBOMとは4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749687588/Blog/Content%20Images/SBOM%E3%81%A8%E3%81%AF4.jpg)\n\nSBOMを作成するには、専用ツールの導入が一般的です。しかし、適切なツールの選定や運用に必要なリソースの確保といった課題に直面するケースも少なくありません。ここでは、SBOMツールの導入時に、特に注意しておきたい2つの課題を紹介します。\n\n### 4-1 ツール選びが難航する可能性がある\n\nSBOMツールは有償版と無償版を含め多くの選択肢があり、それぞれの特徴を理解したうえで適切なツールを選定しなければなりません。\n\n有償ツールは機能が豊富でサポートが充実していますが、導入コストが高くなる傾向があります。一方、無償ツールはコスト負担が少ないものの、機能やサポート範囲が限定的な場合が多く、使い方によっては十分な効果が得られない可能性があります。さらに、海外製のSBOMツールは問い合わせやサポートが英語のみの場合もあり、言語の壁が障害となるケースも考えられます。\n\nこのように、SBOMツールを選定する際には、ツールの特性だけでなく、自社のニーズやリソースに適合しているかを慎重に評価することが重要です。\n\n### 4-2 SBOMの運用には十分なリソースが必要\n\nSBOMを効果的に運用するには、まずツールを使いこなすための専門知識とスキルを持つ人材が必要不可欠です。特に、SBOMの作成や更新、脆弱性情報のモニタリング、影響範囲の分析といった業務を適切に行うには、高度なスキルと経験が求められます。また、有償ツールを導入する場合には、ライセンス料や月額費用といった運用コストが発生するため、予算の確保も課題のひとつです。\n\nさらに、SBOM運用の効果を十分に発揮するためには、運用プロセスの標準化や体制の整備も必要です。運用体制が不十分だとSBOMの管理が滞り、結果としてセキュリティリスクの増大やコンプライアンス違反などを招く可能性が高まります。\n\nこのように、SBOMの効果を最大限に引き出すには十分なリソースを確保する必要があり、これらが不足すると適切に運用できないおそれがあるため、注意が必要です。\n\n## 5. SBOMを導入する流れ\n\n![SBOMとは2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749687588/Blog/Content%20Images/SBOM%E3%81%A8%E3%81%AF2.jpg)\nSBOMを導入するには、社内体制の整備やツールの選定、解析作業など、いくつかのステップを踏む必要があります。スムーズに導入を進められるよう、事前に各工程のポイントを把握しておきましょう。以下で、具体的なSBOM導入の流れを解説します。\n\n### 5-1 社内体制の構築\n\nSBOMを効果的に導入・運用するためには、まず社内体制を整える必要があります。SBOM活用を推進する責任者を配置し、組織体制を整備しましょう。また、課題でも触れたように、実際にSBOMを管理・運用できる専門的な知識やスキルを持つ人材の確保も欠かせません。さらに、作成したSBOMの管理体制や管理方法を事前に決定しておくと、スムーズに運用を開始できます。\n\n### 5-2 SBOMツールの選定\n\nSBOMツールは、自社の目的や規模に応じたものを選ぶことが重要です。経済産業省の手引では、次のような選定観点の例が示されています。\n\n* 機能  \n* 性能  \n* 解析可能な情報  \n* データ形式  \n* コスト  \n* 対応フォーマット  \n* コンポーネント解析方法  \n* サポート体制  \n* 他ツールとの連携  \n* 提供形態  \n* ユーザーインターフェース  \n* 運用方法  \n* 対応するソフトウェア開発言語  \n* 日本語対応 など\n\nこれらに関して自社の制限や優先度を明確にした上で、最適なSBOMツールを選びましょう。\n\n参考：[ソフトウェア管理に向けたSBOM（Software Bill of Materials）の導入に関する手引 ～全体概要～（経済産業省）](https://www.meti.go.jp/press/2023/07/20230728004/20230728004-3.pdf)\n\n### 5-3 コンポーネントの解析\n\n選定したSBOMツールを導入したら、対象ソフトウェアのスキャンを行い、コンポーネントを解析します。この段階で、誤検出や検出漏れがないかを慎重に確認しておかなければなりません。特に、重要なコンポーネントが漏れている場合、脆弱性やライセンスの管理に重大な影響を及ぼす可能性があるため、解析結果を丁寧に精査することが大切です。\n\n### 5-4 SBOMの作成と共有\n\n解析したコンポーネントのデータをもとに、SBOMを作成します。SBOMのフォーマットや項目、出力ファイル形式などについてあらかじめ基準を決めておくと、効率的にSBOMの作成を進められます。また、SBOMを対象ソフトウェアの利用者やサプライヤーに共有する際は、その方法についても事前に検討しておきましょう。\n\nたとえば、クラウドストレージやWebサイト、製品への組み込みなど、SBOMの共有方法にはいくつかの選択肢があります。公開範囲やデータ改ざん防止策、サプライヤーからの要件なども踏まえて、適切な方法を採用してください。\n\n### 5-5 SBOMの運用と管理\n\nSBOMは作成して終わりではなく、継続的な運用と管理が求められます。定期的に脆弱性スキャンを実施し、セキュリティ事故やコンプライアンス違反のリスクがないか確認しましょう。脆弱性情報が自動更新・通知されるツールを活用すれば、効率的かつ正確な運用が可能です。さらに、ソフトウェアのアップデートや新規コンポーネントの追加があった際にはSBOMも適宜更新し、常に最新の状態を保つ必要があります。\n\n### 5-6 SBOMの運用にAIを活用する方法も\n\nSBOMを効率的に運用・管理するために、AIを活用する方法もあります。過去の脆弱性データからSBOMに含まれるコンポーネントの潜在的なリスクを事前に予測する機能や、ソフトウェアの更新やコンポーネントの追加に応じて自動でSBOMを作成・更新する機能を活用すれば、管理負担の大幅な軽減が可能です。\n\n例えば、AI搭載のDevSecOpsプラットフォーム「[GitLab](https://about.gitlab.com/ja-jp/)」はSBOMを生成する機能がソースコード管理サービスと一体化していて、普段のソフトウェア開発とコンテキストスイッチなしに即時可視化状況を確認できるなど、独自の機能を備えています。\n\nまた、SBOMと脆弱性スキャンを連携させることで、依存コンポーネントの脆弱性を自動検出し、修復提案まで一元的に管理できるため、セキュリティ対策の効率が大幅に向上します。\n\n手間を削減しながらSBOMを適切に管理したい場合は、このような高性能なツールの活用を検討するとよいでしょう。\n\n## まとめ：SBOMを活用したセキュリティ対策が求められる\n\nSBOMは、ソフトウェアの構成要素を可視化し、脆弱性やライセンスの管理を効率的に行うための重要なツールです。特に、近年増加しているソフトウェアサプライチェーン攻撃やOSSの普及に伴うセキュリティリスクへの対策として、SBOMの注目度が高まっています。\n\nさらに、[DevOps](https://about.gitlab.com/ja-jp/topics/devops/)にセキュリティを融合させた「[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/)」の実践においても、SBOMは重要な役割を果たします。セキュリティを確保しながら迅速に開発を進めたい場合にも、SBOMツールの活用を検討してみてください。\n\nより詳しい情報や、今後の[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/)の展開について知りたい方は、ぜひ「2024 グローバルDevSecOpsレポート」をご活用ください。世界各地のDevSecOps専門家5000名を対象に行った調査結果をご覧いただけます。\n\n> [2024グローバルDevSecOpsレポートはこちら](https://about.gitlab.com/ja-jp/developer-survey/?utm_medium=blog&utm_source=blog&utm_campaign=eg_apac_brand_x_x_ja_gitlabjapanblogseo_what-is-sbom)  \n\n*監修：ハシュカ アンドリュー / Andrew Haschka [@ahaschka](https://gitlab.com/ahaschka)\u003Cbr>\n（GitLab フィールド最高技術責任者）*",[14,724,747,748],"performance","open source",{"slug":750,"featured":93,"template":684},"what-is-sbom","content:ja-jp:blog:what-is-sbom.yml","What Is Sbom","ja-jp/blog/what-is-sbom.yml","ja-jp/blog/what-is-sbom",{"_path":756,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":757,"content":763,"config":769,"_id":771,"_type":16,"title":772,"_source":18,"_file":773,"_stem":774,"_extension":21},"/ja-jp/blog/the-ultimate-guide-to-token-management-at-gitlab",{"title":758,"description":759,"ogTitle":758,"ogDescription":759,"noIndex":6,"ogImage":760,"ogUrl":761,"ogSiteName":669,"ogType":670,"canonicalUrls":761,"schema":762},"GitLabにおけるトークン管理の究極ガイド","ソフトウェア開発ライフサイクル全体のセキュリティを向上させるために、トークンを特定、管理、保護するためのエンドツーエンドのプロセスをすべてご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097408/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_1097303277_6gTk7M1DNx0tFuovupVFB1_1750097407860.jpg","https://about.gitlab.com/blog/the-ultimate-guide-to-token-management-at-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLabにおけるトークン管理の究極ガイド\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Hakeem Abdul-Razak\"}],\n        \"datePublished\": \"2025-02-25\",\n      }",{"title":758,"description":759,"authors":764,"heroImage":760,"date":766,"body":767,"category":14,"tags":768},[765],"Hakeem Abdul-Razak","2025-02-25","深夜2時、成長中のテック企業でエンジニアとして働いているあなたに、緊急の電話がかかってきました。重要なデプロイパイプラインが失敗し、チームはその原因を突き止めようと必死です。数時間後、1週間前に退職したエンジニアのパーソナルアクセストークンが失効していたことが判明します。そのトークンは複数の重要な自動化プロセスで使用されており、その影響でシステム全体が混乱状態に陥ってしまいました。これを防ぐためには、どのようにトークンを管理すべきなのでしょうか？\n\nこのガイドでは、トークンを適切に特定、管理、保護するためのエンドツーエンドのプロセスをご紹介します。このガイドは、プロジェクト内でのトークン管理を徹底したいGitLabの管理者、デベロッパー、セキュリティチームに向けて、[トークンに関する詳しい文書](https://docs.gitlab.com/ee/security/tokens)を補う参考資料として活用いただけます。\n\nこのガイドでは、以下の内容を取り上げています。\n- [ジョブに適したトークンの選び方](#how-to-select-the-right-token-for-the-job)\n- [トークンの種類](#token-types)\n- [自分が使用しているトークンの把握方法](#discovering-your-tokens)\n    - [認証情報インベントリ](#credentials-inventory)\n- [GitLab UIおよびAPIでのトークン管理](#managing-tokens-in-the-gitlab-ui-and-api)\n- [トークンのローテーションと有効期限の管理](#token-rotation-and-expiration-management)\n- [トークン管理のベストプラクティス](#token-management-best-practices)\n    - [サービスアカウント](#service-accounts)\n\n## ジョブに適したトークンの選び方\n\nユースケースに合ったトークンを選ぶことで、セキュリティと機能性の両面で最適な運用が可能になります。\nトークンは、APIリクエストの認証、CI/CDパイプラインの自動化、サードパーティツールとの統合、デプロイやリポジトリの管理など、幅広い場面で活用できます。\n\n![トークン管理ガイド - トークンのフローチャート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097435/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097434869.png)\n\nわかりやすさを重視し、この図では1人のユーザーがトークンを所有するシンプルなユースケースを例にしています。詳細については、インスタンスまたはトップレベルグループの各[ネームスペース](https://docs.gitlab.com/ee/user/permissions.html)（ユーザー/グループ）におけるユーザーロールや権限に関するGitLabの文書をご参照ください。以下のようなユースケースが考えられます。\n\n- **パーソナルアクセストークン**（[PAT] (https://docs.gitlab.com/user/profile/personal_access_tokens/#personal-access-token-scopes)）：デベロッパーがユーザーの個人アクセスや権限を必要とする場合に使えるトークンです。このトークンは、ユーザーのステータスと権限に従って認証情報が管理されるため、ユーザーが特定のプロジェクトやグループへのアクセス権を失った場合や、アカウントが無効化された場合には、自動的にそのトークンも無効になります。\n- **プロジェクト/グループアクセストークン**（[PrAT](https://docs.gitlab.com/user/project/settings/project_access_tokens/#scopes-for-a-project-access-token)/[GrAT](https://docs.gitlab.com/user/group/settings/group_access_tokens/#scopes-for-a-group-access-token)）：特定のプロジェクトまたはグループ内でのリソースへのアクセスを制限する必要がある場合に適したトークンです。PrAT/GrATを持つユーザーは、割り当てられたスコープを通じてこれらのリソースにアクセスできるようになります。\n\n## トークンの種類\n\nこちらは、GitLabトークンの種類と、それぞれのデフォルトのプレフィックスおよびユースケースの一覧です。詳細については、[GitLabトークンの概要ページ](https://docs.gitlab.com/ee/security/tokens/#available-scopes)をご覧ください。\n\n| トークン | プレフィックス | 説明 |\n| :---: | :---: | :---: |\n| パーソナルアクセストークン | glpat | ユーザー固有のデータにアクセス |\n| OAuth 2.0トークン | gloas | OAuth2.0 認証プロトコルを使ったサードパーティアプリとの連携 |\n| なりすましトークン | glpat | 他のユーザーの代わりに管理操作を実行 |\n| プロジェクトアクセストークン | glpat | 特定のプロジェクトのデータにアクセス |\n| グループアクセストークン | glpat | 特定のグループのデータにアクセス |\n| デプロイトークン | gldt | ユーザー名とパスワードなしでプロジェクトのコンテナイメージをクローン、プッシュ、プル |\n| デプロイキー | 該当なし | リポジトリへの読み取り専用または読み書きアクセスを許可 |\n| Runner認証トークン | glrt | GitLab Runnerを認証 |\n| CI/CDジョブトークン | glcbt | CI/CDプロセスを自動化 |\n|トリガートークン| glptt | パイプラインを手動またはプログラムでトリガー |\n| フィードトークン | glft | パッケージ/RSSフィードへのアクセス認証 |\n| 受信メールトークン | glimt | 受信メールの処理 |\n| Kubernetes向けGitLabエージェントトークン | glagent | GitLabGitLabエージェントを通じてKubernetesクラスターを管理 |\n| SCIMトークン | glsoat | SCIMを利用したユーザー管理の統合 |\n| 機能フラグクライアントトークン | glffct | プログラムで機能フラグを有効化 |\n| Webhookトークン | 該当なし | WebhookのリクエストがGitLabから送信されたことを検証するための秘密トークン（ユーザーが設定） |\n\n## トークンの確認方法\n\n### 認証情報インベントリ\n\nGitLab Ultimateでは、GitLab Self-Managedの管理者や、GitLab.com（バージョン17.5以降）における企業組織のトップレベルグループのオーナーが、自身のネームスペース内の認証情報を監視できます。\n\nこのインベントリでは、以下のようなトークン情報を確認できます。\n\n* トークンの種類\n  * [GitLab.com](https://docs.gitlab.com/ee/user/group/credentials_inventory.html)で利用可能なトークン\n  * [GitLab Self-Managed](https://docs.gitlab.com/ee/administration/credentials_inventory.html)で利用可能なトークン\n* 関連付けられたユーザーアカウント \n* トークンのスコープ、および作成日と有効期限 \n* 最終使用時のIPアドレス（GitLab 17.10時点）\n* 上記のユーザー定義パラメータに基づくトークンのフィルタリング\n* トークンの取り消しおよびローテーションの機能\n\n認証情報インベントリを適切に管理することで、権限が過剰なトークンの特定や、ローテーションが必要な認証情報の把握が可能になり、安全かつ効率的な運用が実現します。\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/A9ONfnwswd0?si=4VIEUgJaD4daj81b&amp;start=105\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n#### 認証情報インベントリAPI\n\nUIの機能に加えて、新しい/group/:id/manage[エンドポイント](https://docs.gitlab.com/ee/api/members.html#list-all-members-of-a-group-or-project)を通じて認証情報インベントリAPIをリリースするための[開発が進行中](https://gitlab.com/groups/gitlab-org/-/epics/16343)です。このエンドポイントでアクセスできる認証情報は企業[ユーザー](https://docs.gitlab.com/ee/user/enterprise_user/)に限定されており、企業組織のトップレベルグループのオーナーが利用可能です。将来のAPIコールの例は以下のとおりです。\n\n```console\ncurl --header \"PRIVATE-TOKEN: \u003Cpat>\" \"https://verified_domain.com/api/v4/groups/\u003Cgroup_id>/manage/personal_access_tokens\"           \n```\n### GitLab API\n\nGitLab APIを使用すると、組織内のトークンをプログラムで一覧表示および管理できます。主要な認証関連エンドポイントは、個人用、グループ用、CI/CDトークンなど、[さまざまなトークンの種類](https://docs.gitlab.com/ee/api/rest/authentication.html)をサポートしています。GitLab上で認証済みユーザーがアクセスできるすべてのプロジェクトを一覧表示する際のパーソナルアクセストークンの使用方法は次のとおりです。\n\n```console\ncurl --header \"PRIVATE-TOKEN: \u003Cyour_access_token>\" \\\n     \"https://gitlab.example.com/api/v4/projects\"\n\n```\n\nGitLab APIへのAPIコールの方法については、次の動画をご覧ください。\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/0LsMC3ZiXkA?si=vj871YH610jwQdFc\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### トークンの使用場所の確認\n\nトークンの使用場所を確認する方法は以下のとおりです。\n* **ユーザープロフィール > [アクセストークン](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#view-the-time-at-and-ips-where-a-token-was-last-used)**\n* 認証情報インベントリ\n* 監査イベント\n* API経由\n\nトークンの使用状況に関する情報は、**last_used**は10分ごと、**last_used_ip**は1分ごとに更新されます。\n\nIPアドレスの確認機能はGitLab 17.9で追加され、**:pat_ip**機能フラグにより管理されます。[トークンの最終使用時間](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#view-the-time-at-and-ips-where-a-token-was-last-used)と、そのトークンが使われた最後の5つの異なるIPアドレスを表示する方法は以下のとおりです。\n\n![トークン管理ガイド - パーソナルアクセストークンの設定](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097435/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097434870.png)\n\n## GitLab UIとAPIにおけるトークンの管理\n以下の表には、UIにおけるトークン作成の詳細と、APIを介したトークンの使用方法を示すビデオが含まれています。\n\n| トークン | GitLab UI | GitLab API |\n| ---------- | ---------- | ---------- |\n| パーソナルアクセストークン | [ドキュメント](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=3) | [ドキュメント](https://docs.gitlab.com/ee/api/personal_access_tokens.html)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=43) |\n| グループアクセストークン | [ドキュメント](https://docs.gitlab.com/ee/user/group/settings/group_access_tokens.html#group-access-tokens)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=120) | [ドキュメント](https://docs.gitlab.com/ee/api/group_access_tokens.html)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=157) |\n| プロジェクトアクセストークン | [ドキュメント](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html#project-access-tokens)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=254) | [ドキュメント](https://docs.gitlab.com/ee/api/project_access_tokens.html)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=285) |\n\n## トークンのローテーションと有効期限の管理\n\nトークンローテーションと厳格な有効期限管理を実施することで、セキュリティリスクを減らし、セキュリティ基準への準拠を確保できます。定期的なローテーションと有効期限の強制により、期限切れの認証情報がセキュリティの脆弱性となるのを防ぎます。\n\nこれまで、グループおよびプロジェクトのアクセストークンは、有効期限が切れると自動的に削除されていました。そのため、無効なトークンの記録が残らず、監査やセキュリティレビューを行う上で課題となっていました。この問題に対応するため、[最近のアップデート](https://gitlab.com/gitlab-org/gitlab/-/issues/462217)により、無効化されたグループおよびプロジェクトのアクセストークンの記録が、無効になってからUI上に30日間保持されるようになりました。これにより、トークンの使用状況や有効期限、取り消しの履歴を追跡しやすくなり、コンプライアンスやモニタリングの強化につながります。\n\nトークンのローテーションと有効期限の管理をより積極的に行うには、次の手順を実行します。\n\n* UIまたはAPIを介してトークンを積極的にローテーションする。APIを使用する場合は、[自動的にトークンの再利用を検知](https://docs.gitlab.com/ee/api/personal_access_tokens.html#automatic-reuse-detection)するセキュリティ機能に注意が必要です。\n* インスタンス全体で、[アクセストークンの最大有効期間](https://docs.gitlab.com/ee/administration/settings/account_and_limit_settings.html#limit-the-lifetime-of-access-tokens)を制限する設定を導入。\n\n### トークンローテーションAPI\n\nGitLab 17.7までは、アクセストークンのローテーションはAPIを通じてプログラム上で行う必要がありましたが、現在はUI上でも実行可能になりました。操作方法は以下の表の動画または[ドキュメント](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html#use-the-ui)をご確認ください。\n\n### トークンローテーションスニペット\n\n以下の表には、GitLabトークンのローテーションに関する動画のリンクをまとめています。\n\n| トークン | 前提条件 | GitLab UI | GitLab API |\n| :---: | :---: | ----- | ----- |\n| パーソナルアクセストークン | スコープ：api  | [ドキュメント](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=76)  | [ドキュメント](https://docs.gitlab.com/ee/api/personal_access_tokens.html#rotate-a-personal-access-token) と[動画](https://youtu.be/v5Nj3Jy4vaI?t=92)  |\n| グループアクセストークン | スコープ：apiと役割：オーナー | [ドキュメント](https://docs.gitlab.com/ee/user/group/settings/group_access_tokens.html#create-a-group-access-token-using-ui)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=203)  | [ドキュメント](https://docs.gitlab.com/ee/api/group_access_tokens.html)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=214)  |\n| プロジェクトアクセストークン | スコープ：apiと役割：オーナー、メンテナー | [ドキュメント](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html#create-a-project-access-token)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=335)  | [ドキュメント](https://docs.gitlab.com/ee/api/project_access_tokens.html)と[動画](https://youtu.be/v5Nj3Jy4vaI?t=349)  |\n\n## トークン管理のベストプラクティス\n\n### 最小権限の原則\n\n各トークンに割り当てる権限を、それぞれのタスクに必要な最小限に制限することで、リスクを軽減します。これにより、システム内の潜在的な障害箇所を事前に予測・対処しやすくなります。以下のような方法で、この原則を実践できます。\n\n* それぞれのジョブに合った適切なトークンを選ぶ。フローチャートを参照。\n* トークンの作成時に必要なスコープのみを割り当てる。たとえば、監査目的のようなジョブには読み取り専用のスコープを使用します。詳細は[ロール](https://docs.gitlab.com/ee/user/permissions.html#roles)を参照。\n* 特別な理由がない限り、管理者権限を付与しない。\n* インスタンス全体でのデフォルトのトークン[有効期限](https://docs.gitlab.com/ee/administration/settings/account_and_limit_settings.html#set-a-lifetime-1)を設定する。\n* トークンの権限を定期的に確認・監査し、運用実態に合っているか見直す。\n* タスク完了後は速やかにトークンを無効化する。\n\n### サービスアカウント\n\n[サービスアカウント](https://docs.gitlab.com/ee/user/profile/service_accounts.html)を使用することで、トークンを人間のユーザーではなく非人間エンティティに紐づけることができ、特定ユーザーへの依存を減らせます。自動化にトークンを使う場合、個人アカウントではなく、スコープを制限したサービスアカウントを作成することが推奨されます。サービスアカウントを使用する主なメリットは次のとおりです。\n\n* CI/CDパイプラインでサービスアカウントのトークンを使うことで、ユーザーアカウントの変更による中断を防げる\n* 個人アカウントに影響を与えずに、プログラム上でトークンのローテーション処理を自動化できる\n* サービスアカウントによる操作のモニタリング・監査がより明確になる \n* [有効期限のない](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-service-account-personal-access-token-with-no-expiry-date)サービスアカウントを作成できる\n* [ライセンスシート](https://docs.gitlab.com/user/profile/service_accounts/#create-a-service-account)を消費しない\nGitLabでは、サービスアカウントとそのトークンの管理をより簡単にするために、[APIベースでの作成](https://docs.gitlab.com/ee/api/user_service_accounts.html#create-a-service-account-user)に対応する新しい[サービスアカウントUI](https://gitlab.com/groups/gitlab-org/-/epics/9965)の提供を予定しています。以下のデモでは、サービスアカウントをプログラム上で使用する方法を紹介しています。\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/oZvjg0SCsqY?si=cj-0LjfeonLGXv9u\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### 脆弱性ツール\n\nGitLabに組み込まれたセキュリティツールを活用することで、トークンの使用に関連する脆弱性を特定し、リスクを軽減できます。最大限のカバレッジを得るには、各ツールを併用することを推奨します。\n\n* [シークレット検出](https://docs.gitlab.com/ee/user/application_security/secret_detection/)：リポジトリ内にハードコードされたシークレット（APIトークン、パスワード、その他の機密情報）がないかをスキャンします。[検出されたシークレットの一覧](https://docs.gitlab.com/ee/user/application_security/secret_detection/detected_secrets.html)も確認可能です。\n* [静的アプリケーションセキュリティテスト（SAST）](https://docs.gitlab.com/ee/user/application_security/sast/)：ソースコードに存在するセキュリティ上の脆弱性を分析し、[マージリクエスト内でUI上のレポートとして表示](https://docs.gitlab.com/ee/user/application_security/sast/#features)するなどの機能を提供します。\n* [依存関係スキャン](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/)：プロジェクトで使用しているサードパーティライブラリに、トークンに関連する脆弱性が含まれていないかを確認します\n\n### 監査ログとモニタリング\n\nインスタンスまたはグループ単位で、監査ログとトークンの使用状況を定期的に確認することで、トークンの健全性を維持できます。\n\n* [監査イベント](https://docs.gitlab.com/ee/user/compliance/audit_events.html)：GitLabの監査イベントログを有効にすると、トークンの作成、使用、削除、不審なAPIコール（ログ内の許可されていないパラメーターやレートリミッターの継続的なトリガーなど）を追跡できます。\n* [IP許可リスト](https://docs.gitlab.com/ee/administration/reporting/ip_addr_restrictions.html#configure-ip-address-restrictions)：悪意のあるユーザーが複数のIPアドレスを使ってアクティビティを隠すことを防ぎます。\n* [アラート](https://docs.gitlab.com/ee/operations/incident_management/alerts.html)：不審なアクティビティに対してアラートを設定できます（オンコールローテーションに関するページングのトリガーやインシデントの作成に活用可能）。\n* [認証情報インベントリ](https://docs.gitlab.com/ee/administration/credentials_inventory.html)：利用可能なすべてのアクセストークンを完全に管理し、必要に応じて取り消すことができます。\n* [通知](https://docs.gitlab.com/ee/user/profile/notifications.html)：グループ、プロジェクト、パーソナルの各種トークンについて、有効期限が近づいた際に送信される通知メールを積極的に処理します。お客様からのご要望に応え、この通知機能は従来の7日前に加え、30日前、60日前の通知にも対応しました。\n* [Webhooks](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#create-a-webhook)：アクセストークンのWebhookをグループとプロジェクトに設定して、トークンの有効期限7日前の通知イベントを送信できるようになりました。この機能も最近、**:extended_expiry_webhook_execution_setting**機能 フラグ（デフォルトでは無効）によって、30日、60日前の通知送信に対応しました。\n\n## 今後の展開\n\nGitLabでは多くの種類のトークンを提供しており、今後はそれらを統合しつつ、トークンの有効期間や細かなスコープ設定、一貫した管理・運用に重点を置いた改善を進めていく[予定](https://gitlab.com/gitlab-org/gitlab/-/issues/502630)です。現在注力しているトークン関連の機能には、サービスアカウント用の完全なUI、認証情報インベントリへの追加認証情報タイプの対応、トークンおよびサービスアカウントの監査強化などが含まれます。\n\n> トークン管理機能を体験するには、[GitLab Ultimateの60日間無料トライアル](https://about.gitlab.com/ja-jp/free-trial/?hosted=saas)にぜひご登録ください。",[681,14,704,679,680],{"slug":770,"featured":93,"template":684},"the-ultimate-guide-to-token-management-at-gitlab","content:ja-jp:blog:the-ultimate-guide-to-token-management-at-gitlab.yml","The Ultimate Guide To Token Management At Gitlab","ja-jp/blog/the-ultimate-guide-to-token-management-at-gitlab.yml","ja-jp/blog/the-ultimate-guide-to-token-management-at-gitlab",{"_path":776,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":777,"content":784,"config":791,"_id":793,"_type":16,"title":794,"_source":18,"_file":795,"_stem":796,"_extension":21},"/ja-jp/blog/guide-to-fulfilling-soc-2-security-requirements-with-gitlab",{"title":778,"description":779,"ogTitle":778,"ogDescription":779,"noIndex":6,"ogImage":780,"ogUrl":781,"ogSiteName":669,"ogType":782,"canonicalUrls":781,"schema":783},"GitLabでSOC2セキュリティ要件に対応するためのガイド","SOC2セキュリティ要件に対応する、GitLab DevSecOpsプラットフォームのアプリケーションセキュリティ機能について解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099576/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_1172300481_IGPi3TS4VzFgcqhvEdBlR_1750099575518.jpg","https://about.gitlab.com/blog/guide-to-fulfilling-soc-2-security-requirements-with-gitlab","記事","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLabでSOC2セキュリティ要件に対応するためのガイド\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2025-01-22\",\n      }",{"title":778,"description":779,"authors":785,"heroImage":780,"date":786,"body":787,"category":14,"tags":788},[700],"2025-01-22","機密性の高い顧客情報を扱う企業にとって、SOC（システムおよび組織管理）2コンプライアンスの達成は単なる推奨事項ではなく、多くの場合、必要不可欠です。SOC2は、米国公認会計士協会（AICPA）が策定した厳格な監査基準であり、サービス組織のセキュリティ、可用性、処理の完全性、機密性、プライバシーに関する管理体制を評価します。\n\nSOC2は法的義務ではありませんが、ニュースで頻繁に報じられる情報漏洩事件の影響もあり、重要性が高まっています。SOC2コンプライアンスを達成することで、顧客データを適切に保管し、第三者によるセキュリティ管理の評価を受けていることが伝わり、顧客からの信頼を得られます。\n\n本ガイドでは、SOC2コンプライアンスの要件を解説し、GitLabがどのように組織のアプリケーションセキュリティの最高水準の達成に役立つかをご紹介します。\n\n## SOC 2で定められている要件\n\nSOC2コンプライアンスを達成するには、独立した監査担当者による監査が必要となります。監査では、組織の管理体制の設計および運用の有効性を評価します。監査プロセスは非常にコストがかかることが多く、多くの組織は監査前の準備を十分に行えていないのが現状です。通常、SOC2監査は約1年を要するため、効率的な事前監査プロセスを確立することが重要です。\n\nSOC2コンプライアンスを達成するには、組織は以下のトラストサービス規準に基づく要件を満たす必要があります。\n\n| 規準 | 要件 |\n| :---- | :---- |\n| セキュリティ | - 不正アクセスを防ぐための管理策を実施 \u003Cbr> - リスクの特定と軽減のための手順を確立\u003Cbr> - セキュリティインシデントを検知および対応するためのシステムを構築 |\n| 可用性 | - 合意されたとおりにシステムの稼働を保証\u003Cbr> - 現在の使用状況と容量をモニタリング \u003Cbr> - システム可用性に影響を与えうる環境リスクを特定・対処 |\n| 処理の完全性 | - システムの入力・出力の正確な記録を維持 \u003Cbr> - システムエラーを迅速に特定し修正する手順を実施 \u003Cbr> - 製品・サービスが仕様を満たすよう処理作業を定義 |\n| 機密性 | - 機密情報を特定し保護 \u003Cbr> - データ保持期間のポリシーを策定 \u003Cbr> - 保持期間終了後、機密データを安全に破棄する方法を確保 |\n| プライバシー | - 機密個人情報を収集する前に同意を取得 \u003Cbr> - プライバシーポリシーを明確かつわかりやすく伝達 \u003Cbr> - 法的手段を通じて信頼できる情報源からのみデータを収集 |\n\u003Cbr>\n\nなお、これらの要件は一度達成すれば終わりではなく、継続的に準拠する必要があります。監査担当者は一定期間にわたる管理策の有効性の有無を評価します。\n\n## セキュリティ要件を満たし、維持する方法\n\nGitLabには、SOC2のセキュリティ要件を満たすためにすぐに活用できる機能が数多く用意されています。\n\n| セキュリティ要件 | 対応機能 |\n| :---- | :---- |\n| 不正アクセスを防ぐための管理策を実施 | - 非公開のイシュー／マージリクエスト \u003Cbr> -  カスタムロールときめ細かい権限設定 \u003Cbr> - セキュリティポリシー \u003Cbr> - 検証済みコミット \u003Cbr> - コンテナイメージの署名 \u003Cbr> - CodeOwners \u003Cbr> - 保護ブランチ |\n| セキュリティインシデントを検知および対応するためのシステムを構築 | - 脆弱性スキャン \u003Cbr> - マージリクエスト内セキュリティウィジェット \u003Cbr> -  脆弱性インサイトコンプライアンスセンター \u003Cbr> - 監査イベント \u003Cbr> -脆弱性レポート依存関係リスト \u003Cbr> - AIによる脆弱性の説明 \u003Cbr> - AIによる脆弱性の修正 |\n| リスクの特定と軽減のための手順を確立 | 上記すべてのツールを活用して、セキュリティチームが脆弱性発見時の対応および軽減手順を確立できます |\n\u003Cbr>\nそれでは、各要件に対応するセキュリティ機能についてさらに詳しく解説しましょう。なお、上記のほとんどの機能は、[GitLab Ultimateプランのサブスクリプション](https://about.gitlab.com/ja-jp/free-trial/)および適切なロールと権限設定が必要となります。詳細については、該当するドキュメントをご確認ください。\n\n## 不正アクセスから保護するための制御の実装\n\n組織の資産を保護して、規制遵守を達成し、業務の継続性を維持し、信頼を築くためには、強固なアクセス制御の実装が不可欠です。GitLabでは、[最小権限の原則](https://about.gitlab.com/blog/the-ultimate-guide-to-least-privilege-access-with-gitlab/)に従ったアクセス制御を実装でき、不正アクセスからの保護を実現します。ここでは以下の項目について簡単に紹介します。\n\n* [セキュリティポリシー](#security-policies)\n* [カスタムロールときめ細かい権限設定](#custom-roles-and-granular-permissions)\n* [ブランチ保護とCodeOwners](#branch-protections-and-codeowners)\n* [検証済みコミット](#verified-commits)\n\n### セキュリティポリシー\n\nGitLabのセキュリティポリシー（いわゆるガードレール）を使用すると、セキュリティおよびコンプライアンスチームは組織全体で一貫した制御を実装できます。これにより、セキュリティインシデントの予防、コンプライアンス基準の維持、一括でのベストプラクティスの自動適用によるリスクの低減が可能になります。\n\n![マージリクエスト承認ポリシーの活用例](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/merge_request_approval_policy_aHR0cHM6_1750099596925.png)\n\n\u003Ccenter>\u003Ci>マージリクエスト承認ポリシーの活用例\u003C/i>\u003C/center>\u003Cbr>\n\n以下のようなポリシーを利用できます。\n\n* スキャン実行ポリシー：パイプラインの一部として、または指定したスケジュールに応じてセキュリティスキャンの実行を強制\n* マージリクエスト承認ポリシー：スキャン結果に基づいて、プロジェクトレベルの設定や承認ルールを適用\n* パイプライン実行ポリシー：プロジェクトパイプライン内でCI/CDジョブの実行を強制\n* 脆弱性管理ポリシー：脆弱性の対応ワークフローを自動化\n\n以下に、パイプライン実行ポリシーを活用してコンプライアンスを確保する例をご紹介します。\n\n1. 複数のコンプライアンスジョブをまとめたプロジェクトを作成します。たとえば、デプロイされるファイルの権限を確認するジョブを含めます。これらのジョブは、複数のアプリケーションで再利用できるように汎用的な内容にしておきます。\n2. このプロジェクトへの権限はセキュリティ／コンプライアンス担当者に限定し、デベロッパーがジョブを削除できないようにします。これにより職務分離が実現します。\n3. 対象のプロジェクトにこれらのコンプライアンスジョブを一括で挿入します。ジョブが必ず実行されるよう強制しつつ、開発の妨げにならないようにチームリーダーが実行を承認できるようにします。これにより、コンプライアンスジョブが常に実行され、デベロッパーによって削除されることがなくなり、ご利用の環境にて常にコンプライアンスが確保されるようになります。\n\n> ##### セキュリティポリシーの作成方法については、GitLabの[セキュリティポリシーに関するページ](https://docs.gitlab.com/ee/user/application_security/policies/)をご覧ください。\n\n### カスタムロールと詳細な権限\n\nGitLabのカスタム権限を使用すると、標準のロールベースの権限ではできないきめ細かいアクセス制御を実装できます。これにより、以下のような利点が得られます。\n\n* より正確なアクセス制御\n* セキュリティコンプライアンスの向上\n* 誤ったアクセスのリスク軽減\n* ユーザー管理の効率化\n* 複雑な組織構造への対応\n\n![GitLabカスタムロール](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/custom_roles_aHR0cHM6_1750099596926.png)\n\n\u003Ccenter>\u003Ci>ロールと権限の設定（カスタムロールを含む）\u003C/i>\u003C/center>\n\n> ##### [カスタムロールに関するページ](https://docs.gitlab.com/ee/user/custom_roles.html)を参照して、きめ細かな権限を設定できるカスタムロールの作成方法をご確認ください。\n\n### ブランチ保護とCodeOwners\n\nGitLabでは、次の2つの主要な機能により、コードに変更を加えられるユーザーをさらに厳密に管理できます。\n* ブランチ保護：変更をマージする前に承認を必須とするなど、特定のブランチを変更できるユーザーに関するルールを設定できます。\n* CodeOwners：各ファイルを指定された所有者に関連付け、該当ファイルが変更された際に自動的に適切なレビュアーを指定します。\n\nこれらの機能を組み合わせることで、適切な担当者がレビュー・承認を行う体制を構築でき、コードのセキュリティと品質を高い水準で維持できます。\n\n![保護ブランチ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/protected_branches_aHR0cHM6_1750099596928.png)\n\n\u003Ccenter>\u003Ci>保護ブランチの設定\u003C/i>\u003C/center>\n\n> ##### 保護ブランチとCodeOwnersの設定方法については、[保護ブランチ](https://docs.gitlab.com/ee/user/project/repository/branches/protected.html)および[CodeOwner](https://docs.gitlab.com/ee/user/project/codeowners/)のページをご参照ください。\n\n### 検証済みコミット\n\nコミットにデジタル署名を追加することで、なりすましではなく、本当に自分が作成したものであることを証明できます。デジタル署名は、自分だけが発行できる「電子印鑑」のようなものです。GitLabに公開GPG鍵を登録すれば、署名が正しいかを確認でき、マッチすればそのコミットには`Verified`（検証済み）のマークが付きます。さらに、未署名のコミットを拒否したり、本人確認ができていないユーザーのコミットをブロックしたりするルールも設定可能です。\n\n![検証済み署名付きコミット](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/signed_commit_aHR0cHM6_1750099596929.png)\n\n\u003Ccenter>\u003Ci>検証済み署名付きコミット\u003C/i>\u003C/center>\u003Cbr>\n\nコミットには以下の方法で署名できます。\n\n* SSH鍵\n* GPG鍵\n* 個人用x.509証明書\n\n> ##### 検証済みコミットの詳細は、[署名付きコミットに関するページ](https://docs.gitlab.com/ee/user/project/repository/signed_commits/)をご覧ください。\n\n## セキュリティインシデントの検出と対応のためのシステムの構築\n\n強固なセキュリティ対策状況の維持、規制遵守の確保、被害の最小化、変化し続ける脅威への迅速な対応には、セキュリティインシデントを検知し対応するシステムの構築が不可欠です。\n\nGitLabには、アプリケーションのライフサイクル全体を対象とするセキュリティスキャンと脆弱性管理機能が備わっています。以下の機能について簡単に説明します。\n\n* [セキュリティスキャンと脆弱性管理](#security-scanning-and-vulnerability-management)\n* [ソフトウェア部品表（SBOM）](#software-bill-of-materials)\n* [システム監査とセキュリティ対策状況のレビュー](#system-auditing-and-security-posture-review)\n* [コンプライアンスおよびセキュリティ対策状況の監視](#compliance-and-security-posture-oversight)\n\n### セキュリティスキャンと脆弱性管理\n\nGitLabには以下のような多様なセキュリティスキャナーが備わっており、アプリケーションのライフサイクル全体をカバーします。\n\n* 静的アプリケーションセキュリティテスト（SAST）\n* 動的アプリケーションセキュリティテスト（DAST）\n* コンテナスキャン\n* 依存関係スキャン\n* Infrastructure as Code（IaC）スキャン\n* カバレッジガイドファジング\n* Web APIファジング\n\nこれらのスキャナーはテンプレートを利用すれば、パイプラインに追加できます。たとえば、テストステージでSASTと依存関係スキャンのジョブを実行するには、.gitlab-ci.ymlに以下を追加します。\n\n```yaml\nstages:   - test\ninclude:   - template: Jobs/Dependency-Scanning.gitlab-ci.yml   - template: Jobs/SAST.gitlab-ci.yml   ```\n\nこれらのジョブは環境変数やGitLabジョブ構文を使ってすべて設定可能です。パイプラインが起動すると、セキュリティスキャナーが動作し、現在のブランチとターゲットブランチの差分から脆弱性を検出します。検出された脆弱性はマージリクエスト（MR）内で確認でき、コードがターゲットブランチにマージされる前に細部まで監視する必要があります。MRには脆弱性に関して以下の情報が表示されます。\n\n* 説明\n* ステータス\n* 重大度\n* 証拠\n* 識別子\n* URL（該当する場合）\n* リクエスト／レスポンス（該当する場合）\n* 再現用資産（該当する場合）\n* トレーニング情報（該当する場合）\n* コードフロー（高度なSAST使用時）\n\n![脆弱性を紹介するMRの表示画面](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/no_sql_injection_vulnerability_mr_view_aHR0cHM6_1750099596931.png)\n\n\u003Ccenter>\u003Ci>脆弱性を紹介するMRの表示画面\u003C/i>\u003C/center>\u003Cbr>\n\nデベロッパーはこれらの情報を活用して、セキュリティチームのワークフローを妨げることなく脆弱性を修正できます。デベロッパーは、レビュープロセスにかかる時間を短縮するために、理由を添えて脆弱性を無視したり、もしくは脆弱性を追跡するための非公開イシューを作成したりすることが可能です。\n\nマージリクエストのコードがデフォルトブランチ（通常は本番環境レベル）にマージされると、脆弱性レポートにセキュリティスキャナーの結果が反映されます。セキュリティチームはこれらの結果をもとに、本番環境で見つかった脆弱性の管理・トリアージを行います。\n\n![バッチステータス設定が表示された脆弱性レポート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/vulnerability_report_aHR0cHM6_1750099596936.png)\n\n\u003Ccenter>\u003Ci>バッチステータス設定が表示された脆弱性レポート\u003C/i>\u003C/center>\u003Cbr>\n\n脆弱性レポート内の脆弱性の説明をクリックすると、MRと同じ脆弱性データが表示される脆弱性ページに移動します。これらの情報は、影響評価や修正作業の際に信頼できる唯一の情報源として活用できます。脆弱性ページでは、[GitLab Duo](https://about.gitlab.com/ja-jp/gitlab-duo/)のAI機能を使って脆弱性の説明を生成したり、修正のためのMRを作成したりして、解決までの時間を短縮できます。\n\n> ##### GitLabに含まれるセキュリティスキャナーや脆弱性管理の詳細は、[アプリケーションセキュリティに関するページ](https://docs.gitlab.com/ee/user/application_security/)をご覧ください。\n\n### ソフトウェア部品表\n\nGitLabはソフトウェアで使用されているコンポーネント（部品）の詳細をリスト化できます。これはコードの「材料表」のようなもので、ソフトウェア部品表（[SBOM](https://about.gitlab.com/ja-jp/blog/the-ultimate-guide-to-sboms/)）と呼ばれます。プロジェクトで使われている外部コードに関して、直接使われているコードやそれらが依存するコードも含め、すべてを把握できます。各項目について、使用バージョンやライセンス情報、既知のセキュリティ問題の有無も表示されます。これにより、自社のソフトウェアの構成を把握し、潜在的なリスクを見つけやすくなります。\n\n![グループレベルの依存関係リスト（SBOM）](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/sbom_aHR0cHM6_1750099596937.png)\n\n\u003Ccenter>\u003Ci>グループレベルの依存関係リスト（SBOM）\u003C/i>\u003C/center>\n\n> ##### 依存関係リストのアクセス方法と活用法は、[依存関係リストに関するページ](https://docs.gitlab.com/ee/user/application_security/dependency_list/)をご参照ください。\n\n### システム監査とセキュリティ対策状況のレビュー\n\nGitLabは、誰がいつ何を変更したかなど、システム内のすべての動きを記録します。コードを監視するセキュリティカメラのようなものだと考えてください。これにより、以下が可能になります。\n\n* 不審な動きを発見する\n* 規制当局にルール遵守を証明する\n* 問題が発生した際に状況を把握する\n* GitLabの利用状況を把握する\n\nこれらの情報は一元管理されているため、必要に応じて容易に確認・調査できます。たとえば、監査イベントを使うと以下の情報を追跡できます。\n\n* GitLabプロジェクトにおいて、誰がいつ特定ユーザーの権限レベルを変更したか\n* 誰がいつ新しいユーザーを追加または削除したか\n\n![プロジェクトレベルの監査イベント](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/audit_events_aHR0cHM6_1750099596938.png)\n\n\u003Ccenter>\u003Ci>プロジェクトレベルの監査イベント\u003C/i>\u003C/center>\n\n> ##### 監査イベントの詳細については、[監査イベントに関するページ](https://docs.gitlab.com/ee/user/compliance/audit_events.html)をご覧ください。\n\n## コンプライアンスとセキュリティ対策状況の監視\n\nGitLabのセキュリティダッシュボードは、すべてのセキュリティリスクを1か所で表示する「コントロールルーム」のような機能です。複数のセキュリティツールを個別に確認する必要はなく、全プロジェクトの調査情報を1つの画面でまとめて把握できます。これにより、プロジェクトに潜む問題の早期発見と迅速な対応が可能になります。\n\n![グループレベルのセキュリティダッシュボード](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099597/Blog/Content%20Images/Blog/Content%20Images/security_dashboard_aHR0cHM6_1750099596939.png)\n\u003Ccenter>\u003Ci>グループレベルのセキュリティダッシュボード\u003C/i>\u003C/center>\n\n> ##### セキュリティダッシュボードの詳細については、[セキュリティダッシュボードに関するページ](https://docs.gitlab.com/ee/user/application_security/security_dashboard/)をご覧ください。\n\n## リスクを特定し、軽減するための手順の確立\n\n脆弱性には特定のライフサイクルがあります。たとえば、セキュリティポリシーを使って、脆弱なコードを保護ブランチにマージするには承認が必要という手続きを設けることができます。さらに、本番環境で脆弱なコードが検出された場合、優先的に対応し、評価・修正・検証を行うという流れを定めることも可能です。\n\n* 優先順位は、GitLabのスキャナーによって提供される脆弱性の重大度に基づいて決められます。\n* 評価は、AIによる脆弱性の説明機能が提供する悪用の詳細情報を使って行えます。\n* 修正後は、GitLabに組み込まれた回帰テストやスキャナーを使用して検証できます。\n\nすべての組織に共通の対応策はありませんが、GitLabのような統合プラットフォームを活用することで、複数の異なるツールを使う場合と比べて、リスクをすばやく把握・対処でき、リスク全体を低減することが可能です。\n\n### SOC 2コンプライアンスに関するベストプラクティス\n\n* 強固なセキュリティ文化を確立する：組織全体でセキュリティへの意識と責任感を高めましょう。\n* すべてを文書化する：ポリシー、手順、コントロールの詳細なドキュメントを維持しましょう。\n* 自動化できる部分は自動化する：自動化ツールを使用してコンプライアンスプロセスを効率化し、エラーを削減しましょう。\n* 効果的に情報を共有する：関係者に対し、コンプライアンスの取り組みについて情報を伝えましょう。\n* 専門家の助言を求める：SOC2準拠の取り組みにおいて、信頼できるコンサルタントとの連携を検討しましょう。\n\nSOC2コンプライアンスは大きな取り組みですが、その価値は計り知れません。アプリケーションセキュリティと運用上の卓越性への取り組みを示すことで、顧客からの信頼を築き、企業としての評判を高め、市場における競争力を強化できます。\n\n## 詳細はこちら\n\nGitLabの詳細、またGitLabがSOC2コンプライアンスの達成とセキュリティ対策状況の強化にどのように役立つかについては、以下のリソースをご覧ください。\n\n* [GitLab Ultimate](https://about.gitlab.com/ja-jp/pricing/ultimate/)\n* [GitLabのセキュリティおよびコンプライアンスソリューション](https://about.gitlab.com/ja-jp/solutions/security-compliance/)\n* [GitLabアプリケーションセキュリティに関するページ](https://docs.gitlab.com/ee/user/application_security/)\n* [GitLab DevSecOpsチュートリアルプロジェクト](https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/simply-vulnerable-notes)\n",[789,9,480,790,92],"チュートリアル","機能",{"slug":792,"featured":93,"template":684},"guide-to-fulfilling-soc-2-security-requirements-with-gitlab","content:ja-jp:blog:guide-to-fulfilling-soc-2-security-requirements-with-gitlab.yml","Guide To Fulfilling Soc 2 Security Requirements With Gitlab","ja-jp/blog/guide-to-fulfilling-soc-2-security-requirements-with-gitlab.yml","ja-jp/blog/guide-to-fulfilling-soc-2-security-requirements-with-gitlab",{"_path":798,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":799,"content":805,"config":812,"_id":814,"_type":16,"title":815,"_source":18,"_file":816,"_stem":817,"_extension":21},"/ja-jp/blog/finserv-how-to-implement-gitlabs-separation-of-duties-features",{"title":800,"description":801,"ogTitle":800,"ogDescription":801,"noIndex":6,"ogImage":802,"ogUrl":803,"ogSiteName":669,"ogType":670,"canonicalUrls":803,"schema":804},"金融サービス業界向け：GitLabの職務分離機能を実装する方法","金融サービス業界において、GitLabの職務分離機能を活用して安全でコンプライアンスに準拠したソフトウェア開発を実現する方法をご説明します。また、規制フレームワークの遵守を支援する機能も併せてご紹介します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097688/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%286%29_6vL96ttKF8zJLLqfPpvFs_1750097687913.png","https://about.gitlab.com/blog/finserv-how-to-implement-gitlabs-separation-of-duties-features","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"金融サービス業界向け：GitLabの職務分離機能を実装する方法\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Cherry Han\"},{\"@type\":\"Person\",\"name\":\"Gavin Peltz\"}],\n        \"datePublished\": \"2024-08-13\",\n      }",{"title":800,"description":801,"authors":806,"heroImage":802,"date":809,"body":810,"category":14,"tags":811},[807,808],"Cherry Han","Gavin Peltz","2024-08-13","ソフトウェア開発の過程において、特に金融サービスのようなデータの完全性や規制の遵守が不可欠な業界では、強固なセキュリティとコンプライアンス対策が求められます。これらの基準を維持する上で重要な要素の1つが職務分離（SoD）です。SoDは、プロセス全体の管理を1人に割り当てないようにすることで、エラーや不正行為のリスクを軽減するアプローチです。SoDにより、ソフトウェア開発プロセスの完全性を損なう可能性のある外部からの悪意ある行為を防ぎ、ソフトウェアサプライチェーンにおけるリスクを軽減できます。\n\n## 金融サービス業界におけるSoDの重要性\n\n金融サービス業界では、SoDが機密情報の保護やコンプライアンス遵守の確保を実現する上で重要な役割を果たします。SoDは、金融サービス業界において戦略的に以下のようなメリットをがあります。\n\n* **リスク軽減**：職務を複数の役割に分担することで、システムの完全性や規制コンプライアンスの遵守を損なう可能性のあるエラー、不正行為、無許可のアクティビティのリスクを軽減します。\n* **責任の強化**：明確な職務分担により、1人の担当者がプロセス全体を一貫して管理することができなくなり、結果として透明性と責任意識が高まります。透明性と責任意識は、ステークホルダーや規制当局との信頼関係を維持する上で不可欠です。\n* **規制コンプライアンス**：SoDは、機密性の高い業務が監視と審査の下で行われることを保証する目的で、金融規制によって義務付けられています。これらの基準を遵守することで、ペナルティを回避できるだけでなく、組織の評判も保護されます。\n* **運用の強靭性**：意思決定と実行を分散することで、組織は人的ミスや悪意ある行為、および予期せぬ出来事によってもたらされる混乱の影響を受けにくくなります。\n\n## GitLabによる職務分離とベストプラクティス\nGitLabでは、DevSecOpsワークフロー全体を対象としたエンドツーエンドの職務分離機能を使用できます。\n\n![金融サービスのSoD - 画像1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097695/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097695697.png)\n\n上記の図は、SoDの原則を維持するために、マージリクエスト承認ポリシー、保護機能、ユーザー権限、コンプライアンスフレームワーク、監査イベントといった重要な要素がどのように統合され、連携しているかを示しています。各要素については、後続のセクションで安全かつコンプライアンスに準拠した開発環境の構築方法を解説する中で、詳述します。\n\n### マージリクエスト承認ポリシー\n\n金融サービス業界が直面する課題のひとつに、不正またはチェックされていない変更が統合されるのを防ぐ承認メカニズムの実装があります。ここで役立つのが[マージリクエスト承認ポリシー](https://docs.gitlab.com/ee/user/application_security/policies/scan-result-policies.html)です。このポリシーにより、セキュリティと開発の職務分離が強制され、デベロッパーが脆弱性を含むコード変更を自分で承認したり、開発チームが適切な監視なしにコードを本番環境に直接デプロイしたりすることを防止できます。\n\nポリシーを作成する際には、承認者として誰が適切であるかを検討することをおすすめします。承認者には、個人ユーザー、アプリケーションセキュリティチームなどのグループ、あるいはメンテナーといったロールタイプを指定できます。さらに制約を加えたい場合は、以下の主要なポリシー機能の使用をご検討ください。\n\n- 作成者による承認を防止：このポリシーにより、マージリクエストの作成者が自身の変更を承認できないようガードレールが設定されます。独立したレビューを求めることで、承認プロセスの客観性と公平性が維持されます。\n\n- コミットを追加したユーザーによる承認を防ぐ：マージリクエストにコミットを追加したユーザーも、承認を行うことができないようにします。これにより、変更に直接関わっていないチームメンバーによって検証が行われる、独立したレビューの原則がさらに強化されます。\n\n- 承認ルールの編集を防止：承認プロセスの整合性を維持するため、GitLabではプロジェクトやマージリクエストレベルで承認ルールの編集を管理者が禁止できます。これにより、一度定義された承認ポリシーが無断で変更されたり回避されたりしないよう保証されます。\n\n- 承認にユーザーパスワードを要求：追加のセキュリティ対策として、GitLabではマージリクエストを承認するユーザーに対して、パスワードの入力を求めることができます。\n\n職務分離を明確に維持するため、マージリクエスト承認ポリシーを含むセキュリティポリシーを格納するための専用の[トップレベルグループを別途作成](https://docs.gitlab.com/ee/user/application_security/policies/#enforce-policies-globally-in-gitlab-dedicated-or-your-gitlab-self-managed-instance)することが推奨されます。この設定により、権限を継承するユーザーの数が最小限に抑えられ、ポリシー管理を厳格に制御できます。この専用グループから、目標に合う最上位グループレベルで[セキュリティポリシープロジェクトをリンク](https://docs.gitlab.com/ee/user/application_security/policies/#link-to-a-security-policy-project)することで、ポリシー管理の手間を軽減し、開発環境全体で包括的なカバレッジを確保できます。\n\nまた、ポリシーがデフォルトで有効になっている場合、そのポリシーは関連するリンクされたグループ、サブグループ、および個別のプロジェクト内のすべてのプロジェクトに適用されることにも注意してください。より対象を絞ってポリシーを適用したい場合、GitLabは[コンプライアンスフレームワークラベル](https://docs.gitlab.com/ee/user/group/compliance_frameworks.html)を使用してポリシーの適用範囲を絞り込むことを推奨しています。厳格な規制に対応しているお客様の多くは、「SOX」や「PCI」などの規制要件に対応するコンプライアンスラベルを作成しています。また、このフレームワークへのリンクにより、[ネイティブコンプライアンスセンター](https://docs.gitlab.com/ee/user/compliance/compliance_center/)でさまざまなユースケースに合わせたセキュリティポリシーを管理できるようになります。\n\n### コンプライアンスフレームワークと制御\n\n規制対象の業界に属するお客様は、大規模な組織においてコンプライアンスを維持する上で大きな課題に直面しています。手動のプロセスはエラーが生じやすく、チーム間でポリシーを一貫して適用し続けることが難しい場合もあります。\n\nGitLabのコンプライアンスフレームワークを使用することで、組織は予防措置の自動化と管理、リスクの体系的な管理、そして規制コンプライアンスのシームレスな適用を実現できます。これらのフレームワークによって、どのようなパイプラインでもセキュリティプロトコルやカスタムジョブを実施できます。\n\nコンプライアンス設定を組織レベルで保護するために、GitLabではグループまたはプロジェクトのオーナーのみがコンプライアンスフレームワークを追加または削除できるようになっています。この対策により、適切な権限レベルを持たない開発チームやマネージャーによるコンプライアンス設定の変更が防止され、セキュリティがさらに強化されます。なお、メンテナー権限を持つ個人がサブグループを作成できる場合、そのサブグループのオーナーとなりコンプライアンスフレームワークを変更できる点に注意してください。これを防ぐには、権限とグループの設定で[サブグループの作成者](https://docs.gitlab.com/ee/user/group/subgroups/#change-who-can-create-subgroups)を制限してください。\n\n## SoDのための権限とロール\n\n金融サービス業界で職務分離を効果的に実施するには、明確かつ正確なアクセス制御の設定が不可欠です。GitLabには、あらかじめ定義されたロール（ゲスト、レポーター、デベロッパー、メンテナー、オーナーなど）による階層的な[権限モデル](https://docs.gitlab.com/ee/user/permissions.html)が備わっています。各ロールには特定の権限セットが割り当てられており、個人が業務を遂行する際に自身の権限の範囲を逸脱しないようになっています。これにより、利益相反やセキュリティリスクを抑えられます。GitLabでは[最小権限の原則](https://about.gitlab.com/blog/the-ultimate-guide-to-least-privilege-access-with-gitlab/)に従ってロールを割り当てることを推奨しています。\n\n細かいニーズを持つ組織、特にGitLab Ultimateを使用している組織では、[カスタムロール](https://docs.gitlab.com/ee/user/custom_roles.html)を活用することで、さらに柔軟な対応が可能になります。これらのロールを使用することで、各組織の独自のワークフローやコンプライアンス要件に合わせた特定の権限を設定できます。担当者が相反するタスクを実行できなくなるため、SoDの強制に特に役立ちます。\n\n一般的なユースケースとして、デプロイロールが必要な場合があります。これは、デプロイの権限が必要な個人に対して、コードの編集やプッシュの権限は与えたくない場合に使用できます。こういった要件に対応するために、GitLabは[保護環境](https://docs.gitlab.com/ee/ci/environments/protected_environments.html#protecting-environments)を提供しています。保護環境を使用すると、[ジョブのデプロイ承認を受けたグループを招待](https://docs.gitlab.com/ee/ci/environments/protected_environments.html#deployment-only-access-to-protected-environments)し、ユーザーのロールをレポーターに限定できます。なお、デプロイジョブにはenvironmentキーワードを含める必要があります。この設定により、コードの編集権限がないユーザーがデプロイを実行できるようになり、コンプライアンス要件に準拠できます。\n\n組織においてロールと権限を慎重に定義し適用することで、安全かつコンプライアンスに準拠した開発環境を構築できます。ユーザー権限を広範に見直したい場合、[こちらのグループメンバーレポート](https://gitlab.com/gitlab-com/cs-tools/gitlab-cs-tools/gitlab-group-member-report)を使用して各ロールのメンバー数を確認し、それに応じた次のステップを検討することが可能です。\n\n## 保護機能\nGitLabは、開発プロセスをより厳重にかんりできるようにするために「保護」機能を提供しています。これらの機能は、指定された担当者のみが重要な変更を行えるようにするために使用でき、SoDを維持するためには不可欠です。\n\n- 保護ブランチ：保護ブランチでは、誰がプッシュ、マージ、または強制プッシュを実行できるかが制限されます。権限を持つユーザーのみが変更を加えられるように制御でき、特に「main」や「production」のようなブランチで効果的です。\n- 保護Gitタグ：このタグを使用すると、タグの作成権限を持つユーザーを制御できます。タグの作成後に誤った更新や削除が発生しないよう防止され、バージョン管理の整合性が保たれます。\n- 保護環境：特定の環境、特に本番環境への無許可のアクセスを防ぐことは必須事項と言えます。保護環境では、適切な権限を持つユーザーのみがデプロイできるため、意図しない変更から環境を保護できます。これは前述のデプロイロール機能と関連しており、コードを編集せずにジョブをデプロイできるようになるため、コンプライアンスとセキュリティを確保できます。\n- 保護パッケージ：パッケージ保護ルールを使用することで、どのユーザーがパッケージに変更を加えられるかを制限できます。\nこれらの保護機能はすべて、SoDの原則に沿った安全でコンプライアンスに準拠した開発環境の維持に役立ちます。\n\n## 監査イベントとコンプライアンスセンター\nここまで承認ポリシー、コンプライアンスフレームワーク、ロール、保護機能について説明してきましたが、最後に、GitLabでこれらの実装をどのようにモニタリングおよび監査してコンプライアンスを遵守できるかについて解説します。GitLabの[監査イベント](https://docs.gitlab.com/ee/user/compliance/audit_events.html)では、ユーザーの活動やプロジェクトの変更など、オーナーや管理者向けに詳細なアクティビティ履歴を提供します。このログは、ユーザーアクションを追跡したり、無許可のアクティビティを検出したりする上で不可欠です。組織において[監査イベントストリーミング](https://docs.gitlab.com/ee/user/compliance/audit_event_streaming.html)を使用して監査イベントを外部システムにストリーミングすることで、リアルタイムでの分析やアラートが可能になります。これにより、改変や違反が検出され、迅速に修正できるようになります。\n\n[GitLabのコンプライアンスセンター](https://docs.gitlab.com/ee/user/compliance/compliance_center/)は、コンプライアンスに関連するアクティビティを一元的に管理およびモニタリングできる場所です。ここではプロジェクトやグループ全体のコンプライアンス状況の概要を確認でき、マージリクエスト承認ルールやその他のポリシーの違反が強調表示されます。管理者は問題に迅速に対処し、あらかじめ定義されたコンプライアンス基準への準拠を確認できます。この一元化されたアプローチにより、コンプライアンス管理が簡素化され、高度なレベルでモニタリングと制御を行えます。\n\n> GitLabのSoDやコンプライアンスに関する考え方について詳しく知りたい方は、[Governステージに関するGitLabの製品方針](https://about.gitlab.com/direction/govern/) と[GitLabのコンプライアンスドキュメント](https://docs.gitlab.com/ee/administration/compliance.html)をご覧ください。\n\n## その他のリソース\n\n- [GitLabのコンプライアンスとセキュリティポリシー管理で規制基準を遵守](https://about.gitlab.com/blog/meet-regulatory-standards-with-gitlab/)\n- [GitLabを使ったGitLabの構築：セキュリティ認証ポートフォリオを拡充](https://about.gitlab.com/blog/building-gitlab-with-gitlab-expanding-our-security-certification-portfolio/)\n- [オンライン小売業者bol社、GitLabで拡大するコンプライアンスニーズに対応](https://about.gitlab.com/blog/online-retailer-bol-tackles-growing-compliance-needs-with-gitlab/)",[14,704,680,553],{"slug":813,"featured":6,"template":684},"finserv-how-to-implement-gitlabs-separation-of-duties-features","content:ja-jp:blog:finserv-how-to-implement-gitlabs-separation-of-duties-features.yml","Finserv How To Implement Gitlabs Separation Of Duties Features","ja-jp/blog/finserv-how-to-implement-gitlabs-separation-of-duties-features.yml","ja-jp/blog/finserv-how-to-implement-gitlabs-separation-of-duties-features",{"_path":819,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":820,"content":826,"config":834,"_id":836,"_type":16,"title":837,"_source":18,"_file":838,"_stem":839,"_extension":21},"/ja-jp/blog/migration-guide-github-advanced-security-to-gitlab-ultimate",{"title":821,"description":822,"ogTitle":821,"ogDescription":822,"noIndex":6,"ogImage":823,"ogUrl":824,"ogSiteName":669,"ogType":670,"canonicalUrls":824,"schema":825},"GitHub Advanced SecurityプランからGitLab Ultimateプランへの移行ガイド","GitLab UltimateとGitHub Advanced Securityの共通点と違いを理解し、GitLab DevSecOpsプラットフォームへの移行を段階的に進めるための詳細ガイドです。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666187/Blog/Hero%20Images/blog-image-template-1800x945__6_.png","https://about.gitlab.com/blog/migration-guide-github-advanced-security-to-gitlab-ultimate","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitHub Advanced SecurityプランからGitLab Ultimateプランへの移行ガイド\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2024-05-01\",\n      }",{"title":821,"description":822,"authors":827,"heroImage":823,"date":828,"body":829,"category":14,"tags":830,"updatedDate":833},[700],"2024-05-01","GitLabは、最も包括的なAIを搭載したDevSecOpsプラットフォームで、ソフトウェアデリバリーライフサイクル全体を1つのプラットフォームで実現することで、より安全で迅速なソフトウェアのリリースを可能にしています。GitHubでは、GitHub内の追加のセキュリティ機能を有効にするAdvanced Securityアドオンを提供してはいますが、GitLabと比較すると、ネイティブに提供するセキュリティ機能の深さと幅広さでは機能の範囲と深さが限定的です。SDLCのすべての領域にわたってセキュリティを強化すべくGitLab Ultimateプランへの移行を検討している組織は、このガイドを参考にして両製品を比較し、またGitLabプラットフォームに移行するためのチュートリアルとしてもお役立てください。\n\nこの記事には次の内容が含まれます\n\n- GitLab UltimateとGitHub Advanced Securityの比較\n- GitHubリポジトリをGitLabに移行する方法\n- GitHub Advanced SecurityからGitLab Ultimateへの機能別の移行方法\n- GitLab Ultimateのセキュリティ追加機能の紹介\n\n## GitLab UltimateとGitHub Advanced Securityの比較\n\n[GitLab Ultimate](https://about.gitlab.com/ja-jp/pricing/ultimate/)は、安全なソフトウェアをより速く提供したいと考えている企業向けの、GitLabの最上位サブスクリプションプランです。GitHub Advanced Securityは、追加のセキュリティ機能を有効にするGitHub Enterpriseのアドオンです。\n\n### GitLab UltimateとGitHub Advanced Securityの類似点\n\nGitLab UltimateとGitHub Advanced Securityの両プランに次の機能が搭載されています。\n\n- 静的アプリケーションセキュリティテスト（[SAST](https://docs.gitlab.com/ee/user/application_security/sast/)）、シークレットスキャン、依存関係スキャン\n- コンテキスト脆弱性インテリジェンスと解決策のアドバイス\n- 依存関係またはソフトウェア部品表のリスト（[SBOM](https://about.gitlab.com/blog/the-ultimate-guide-to-sboms/)）\n- セキュリティ指標と分析情報\n\n### GitLab UltimateとGitHub Advanced Securityの相違点\n\nGitLab Ultimateは、次の点でGitHub Advanced Securityと異なります。\n\n- GitLabは、コンテナスキャン、動的アプリケーションセキュリティテスト（[DAST](https://docs.gitlab.com/ee/user/application_security/dast/)）、Web APIファジングなどの追加のコードスキャナーをネイティブに提供します。スキャナーは、カスタムルールセットを備え最適化された、独自のオープンソーステクノロジーを組み合わせたものです。完全なリストについては、[GitLab AppSecのドキュメント](https://docs.gitlab.com/ee/user/application_security/secure_your_application.html)をご覧ください。\n- GitLabは、セキュリティ上問題のあるコードが承認なしにマージされることを防ぐため、[詳細な制御機能（セキュリティガードレール）](https://docs.gitlab.com/ee/user/application_security/policies/)を提供しています。\n\n- GitLabセキュリティスキャナーは、[インターネット未接続（エアギャップ）環境や制限付きネットワーク環境](https://docs.gitlab.com/ee/user/application_security/offline_deployments/)でも実行可能です。\n\n- GitLabは、組織全体のコンプライアンス違反を監視できる[コンプライアンスセンター](https://docs.gitlab.com/ee/user/compliance/compliance_center/)を提供しています。\n\nさらにGitLab Ultimateでは、追加のセキュリティやコンプライアンス機能、ポートフォリオとバリューストリームの管理、アップグレード時のライブサポート機能なども提供しています。追加機能の詳細については、[GitLab Ultimateのドキュメント](https://about.gitlab.com/ja-jp/pricing/ultimate/)を参照してください。\n\n## GitHubリポジトリをGitLabに移行する方法\n\nGitLabには、GitHub.comまたはGitHub EnterpriseからGitHubプロジェクトをGitLabにインポートできるインポーターが組み込まれています。インポーターを使用すると、GitHubリポジトリだけでなく、イシュー、コラボレーター（メンバー）、プルリクエストなど他のオブジェクトもGitLabに移行できます。移行できるものの全リストについては、[GitHubインポートされたデータのドキュメント](https://docs.gitlab.com/ee/user/project/import/github.html#imported-data)を参照してください。移行は次の手順で行います。\n1. 左側のサイドバー上部で **新規作成（+）** を選択する\n3. **GitLab内**セクションで**新しいプロジェクト/リポジトリ**を選択する\n4. **プロジェクトのインポート**を選択する\n\n![迷路化したバージョンの中心にGitLabのアイコン](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/1-Import-Project.png)\n\n4. **GitHub**ボタンを押す\n- GitLab Self-Managedを使用している場合は、[GitHubインポーターを有効にする](https://docs.gitlab.com/ee/administration/settings/import_and_export_settings.html#configure-allowed-import-sources)必要があります\n- 他のインポーターも同様の方法で開始できます\n5. これで、以下のいずれかが可能になりました\n- **GitHubで認証**を選択して、GitHub Oauthで認証する\n- GitHubのパーソナルアクセストークンを使う\n  - [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new)に移動します\n  - **Note**フィールドにトークンの説明を入力します\n  - **リポジトリ**スコープを選択します\n  - オプションとしてコラボレーターをインポートするには、**read:org**スコープを選択します\n  - **トークンを生成**ボタンを押します\n  - GitLabのインポートページのパーソナルアクセストークンフィールドに、GitHubのパーソナルアクセストークンを貼り付けます\n6. **認証**ボタンを押す\n7. 移行するアイテムを選択する\n8. 移行するプロジェクトと場所を選択する\n9. **インポート**ボタンを押す\n\nインポートされたプロジェクトがワークスペースにあることをご確認ください。GitHubからGitLabへの移行に関するさらに詳しいガイダンスは、次の動画をご覧ください。\n\n\u003C!-- 空白行 -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/0Id5oMl1Kqs?si=HEpZVy94cpfPfAky\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!--空白行-->\n\n[GitHubパーソナルアクセストークン](https://docs.gitlab.com/ee/user/project/import/github.html#use-a-github-personal-access-token)または[GitLab REST API](https://docs.gitlab.com/ee/user/project/import/github.html#use-the-api)を使用した移行も可能です。また、インポーターは、BitbucketやGiteaなどの他のソースからのインポートも支援します。詳細については、[インポーターのドキュメント](https://docs.gitlab.com/ee/user/project/import/)を参照してください。\n\n## 機能別の移行方法\n\n次は、GitLab UltimateのGitHub Advanced Securityが提供する各機能の活用方法について見てみましょう。続行するには、[GitLab Ultimateライセンス](https://about.gitlab.com/ja-jp/pricing/ultimate/)が必要です。GitLabは、[30日間の無料トライアル](https://about.gitlab.com/ja-jp/free-trial/devsecops/)がお試しいただけます。\n\n### コードスキャン\nGitHubでは、静的ソースコードの文脈上の脆弱性インテリジェンスやアドバイスを提供する目的でコードスキャンを実行しています。[SAST](https://docs.gitlab.com/ee/user/application_security/sast/)を有効にすることで、GitLab内でも同じことができます。GitLab SASTスキャナーは、GitHubの[CodeQL](https://docs.github.com/en/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql#about-codeql)よりも幅広いプログラミング言語とフレームワークをカバーしています。\n\nGitLabでコードスキャンを有効にすれば、[SASTテンプレート](https://docs.gitlab.com/ee/user/application_security/sast/#configure-sast-in-your-cicd-yaml)を`.gitlab-ci.yml`に追加するだけです。\n\n```yaml\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n```\n\nテンプレートが追加されると、新しいコードがチェックインされるたびに、SASTはプロジェクトで使用されている[プログラミング言語](https://docs.gitlab.com/ee/user/application_security/sast/#supported-languages-and-frameworks)を自動的に検出します。そして、ソースコードに既知の脆弱性がないかスキャンします。\n\n**注：** セキュリティスキャナーは、GitLabの[セキュリティ設定](https://docs.gitlab.com/ee/user/application_security/configuration/)からプロジェクトに追加することもできます。これにより、パイプラインを更新するためのマージリクエストを自動的に作成できます。詳細については、[UIドキュメントを使用してSASTを構成する](https://docs.gitlab.com/ee/user/application_security/sast/#configure-sast-by-using-the-ui)を参照してください。\n\nフィーチャーブランチとターゲットブランチの差分のSAST結果は、マージリクエストウィジェットで表示されます。マージリクエストウィジェットには、マージリクエストで行われた変更によって導入されたSASTの結果と解決策が表示されます。\n\n![マージリクエストでのセキュリティスキャン](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/2-SAST-MR-View.png)\n\nどの脆弱性にも、詳細な説明、重大度、場所、解決情報など、修正を支援するデータが表示されます。\n\n![SASTの脆弱性の詳細](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/3-SAST-MR-View-Detailed.png)\n\n脆弱性への対処として次が挙げられます。\n\n- **脆弱性を無視**：デベロッパーがコメントで脆弱性を無視できるようにします。そうすることで、セキュリティチームがレビューを実行できるようになります。\n- **イシューを作成**：イシューを作成して、追加の監視が必要な脆弱性を追跡できるようにします。\n\nこれらの変更内容は、マージリクエスト内の**差分表示画面**でもインラインで確認できます。\n\n![SASTの脆弱性がビューを変更](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/4-SAST-MR-View-Changes.png)\n\n#### SASTスキャナーのカスタマイズ\n\nGitLabでは、SASTジョブの定義を上書きできるため、変数、依存関係、ルールなどのプロパティを変更できます。これは、SASTジョブと同じ名前のジョブ名を宣言し、上書きして実行できます。次に、テンプレートをインクルードした後にこの新しいジョブを配置し、その下に追加のキーを指定します。\n\nたとえば、次のような設定ができます：\n- `semgrep-sast`スキャナーが使用するバージョンを上書きする\n- `gosec-sast`を実行する前に、プライベートプロジェクトからモジュールを取得するスクリプトを実行する\n- すべてのスキャナーが最大深度10で検索するように設定する\n\n```yaml\ninclude：\n  - template：Jobs/SAST.gitlab-ci.yml\n\nvariables：\n  SEARCH_MAX_DEPTH：10\n\nsemgrep-sast：\n  variables：\n    SAST_ANALYZER_IMAGE_TAG：\"3.7\"\n\ngosec-sast：\n  before_script：\n    - |\n      cat \u003C\u003CEOF > ~/.netrc\n      machine gitlab.com\n      login $CI_DEPLOY_USER\n      password $CI_DEPLOY_PASSWORD\n      EOF\n```\n\n**注：** 利用可能なSASTジョブは、[' SAST.gitlab-ci.yml `テンプレート](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml)にあります。設定については、[利用可能なSAST CI/CD変数のドキュメント](https://docs.gitlab.com/ee/user/application_security/sast/#available-cicd-variables)を参照してください。\n\n#### SASTルールセットのカスタマイズ\n\nGitLabはSASTアナライザーごとにコードを処理し、ルールを使用してソースコードの脆弱性を特定します。これらのルールは、スキャナーが報告する弱点の種類を決定します。\n\n- Semgrepを基盤としたSASTスキャナーについては、GitLabが検出ルールの作成、保守、サポートを一括して提供しています。Semgrepオープンソースエンジン、GitLabの管理による検出ルール、脆弱性追跡と誤検出のためのGitLab独自の技術を集結しています。\n- 他のSASTアナライザーの場合、ルールは各スキャナーのupstreamプロジェクトで定義されています。\n\nスキャンされるリポジトリ内の設定ファイルを定義することで、SASTスキャナーの動作をカスタマイズできます。\n- 事前定義されたルールを無効にする（すべてのアナライザーで利用可能）\n- 事前定義されたルールを上書きする（すべてのアナライザーで利用可能）\n- パススルーを使用してカスタム設定を合成することにより、事前定義されたルールを置き換える\n\nSASTルールの設定の詳細と例については、[SASTルール](https://docs.gitlab.com/ee/user/application_security/sast/rules.html)と[ルールセットのカスタマイズのドキュメント](https://docs.gitlab.com/ee/user/application_security/sast/customize_rulesets.html)を参照してください。\n\n### シークレットスキャン\n\nGitHubは、流出したシークレットを見つけ、ブロックし、取り消すことができるシークレットスキャンをサポートします。[シークレット検出](https://docs.gitlab.com/ee/user/application_security/secret_detection/)を有効にすることで、GitLab内でも同じことができます。\n\nGitLabでシークレット検出を有効にするには、次のテンプレートを'.gitlab-ci.yml `に追加するだけです。\n\n```yaml\ninclude:\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n```\n\nテンプレートが追加されると、新しいコードがチェックインされる（またはパイプラインが実行される）たびに、シークレットスキャナーは既知のシークレットのソースコードをスキャンします。パイプラインでのシークレット検出は、コードの各要素を別々にスキャンします。「デフォルトブランチ」を除くすべてのメソッドでは、パイプラインシークレット検出はワークツリーではなくコミットをスキャンします。シークレットスキャンの仕組みについては、[シークレット検出カバレッジドキュメント](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#coverage)を参照してください。\n\nマージリクエストを作成する際、シークレット検出はソースブランチで行われたすべてのコミットをスキャンします。SASTと同様に、検出されたすべての脆弱性から、修正プロセスを支援するため、以下の情報（ロケーションなど）や識別子を提供します。\n\n![シークレット検出の脆弱性の詳細](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/5-Secret-Detection-MR-Detailed.png)\n\nSASTと同様に、マージリクエストから直接、脆弱性の無視やイシューの作成など、検出された脆弱性に対するアクションを取ることができます。\n\n#### シークレット検出ジョブのカスタマイズ\n\nGitLabではシークレット検出ジョブの定義を上書きして、変数や依存関係、ルールなどのプロパティを変更できます。上書きするには、シークレット検出ジョブと同名のジョブを宣言します。次に、テンプレートをインクルードした後に新しいジョブを配置し、その下に追加のキーを指定します。たとえば、次のような設定です。\n\n- シークレット検出ジョブの実行ステージを`security`に上書きする\n- 過去のコミットに対するスキャンを有効にする\n- シークレットアナライザーのバージョンを4.5に変更する\n\n```yaml\ninclude:\n  - template: Jobs/Secret-Detection.gitlab-ci.yml\n\nsecret_detection:\n  stage: security\n  variables:\n    SECRET_DETECTION_HISTORIC_SCAN: \"true\"\n    SECRETS_ANALYZER_VERSION: \"4.5\"\n```\n\n**注：** 利用可能なシークレット検出ジョブは、[SAST.gitlab-ci.ymlテンプレート](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml)にあります。利用可能な設定は、[利用可能なシークレット検出CI/CD変数のドキュメント](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#customizing-analyzer-settings)に記載されています。\n\n#### シークレット検出ルールセットのカスタマイズ\n\nシークレット検出アナライザーでは、GitLab UIに表示されるシークレットをカスタマイズできます。次のカスタマイズオプションは、個別または組み合わせて使用できます。\n\n- 定義済みルールを無効にする\n- 定義済みルールを上書きする\n- カスタム設定を合成する\n- リモート設定ファイルを指定する\n\nたとえば、`.gitlab/secret-detection-ruleset.toml`というファイルをプロジェクトのルートディレクトリに作成すると、デフォルトのGitLeaksパッケージがテストトークンの検出を無視するように拡張されます。\n\n```yaml\n### extended-gitleaks-config.toml\ntitle = \"extension of gitlab's default gitleaks config\"\n\n[extend]\n### Extends default packaged path\npath = \"/gitleaks.toml\"\n\n[allowlist]\n  description = \"allow list of test tokens to ignore in detection\"\n  regexTarget = \"match\"\n  regexes = [\n    '''glpat-1234567890abcdefghij''',\n ]\n```\n\n定義済みのアナライザールールを上書きする方法については、[シークレット検出のドキュメント](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#override-predefined-analyzer-rules)を参照してください。\n\n#### シークレット漏洩時の自動対応機能\n\nGitLabシークレット検出は、特定のタイプの流出したシークレットを発見すると自動的に対応します。自動対応には次のようなアクションがあります。\n- 自動的にシークレットを失効させる\n- シークレットを発行したパートナーに通知し、パートナーはシークレットを取り消すか、その所有者に通知するか、またはその他の方法で不正利用からの保護につなげる\n\nGitLabは、パートナーが発行した認証情報がGitLab.comの公開リポジトリに流出した場合、パートナーへの通知も可能です。クラウドやSaaS製品を運用していて、このような通知の受け取りに興味があるという場合、GitLab Token Revocation APIから呼び出されるPartner APIを実装できます。\n\n詳しくは[流出したシークレットへの自動対応](https://docs.gitlab.com/ee/user/application_security/secret_detection/automatic_response.html)を参照してください。\n\n### サプライチェーンのセキュリティ\n\nGitHubは、自動化されたセキュリティとバージョン更新、ワンクリックのSBOMにより、ソフトウェアサプライチェーンのセキュリティ確保、管理、レポートを可能にします。GitLabは依存関係スキャンと依存関係リスト（SBOM）機能を使って、サプライチェーンセキュリティのニーズを満たすことができます。\n\nGitLabで依存関係スキャンを有効にするには、`.gitlab-ci.yml`に以下のテンプレートを追加するだけです：\n\n```yaml\ninclude:\n  - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n```\n\nテンプレートが追加されると、新しいコードがチェックインされるたびに、依存関係スキャンがプロジェクトで使われている[パッケージマネージャ](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#supported-languages-and-package-managers)を自動検出します。そして、使用されている依存関係に既知の脆弱性がないかスキャンします。フィーチャーブランチとターゲットブランチの差分の依存関係のスキャン結果は、マージリクエストウィジェットに表示されます。マージリクエストウィジェットは、マージリクエストで行われた変更によって導入された依存関係スキャンの結果と解決策を表示します。マージリクエストの中で、検出された脆弱性は、識別子、証拠、解決策といった、修正を支援する関連情報を表示します。\n\n![依存関係スキャナーの脆弱性の詳細](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/6-Dependency-Scanner-MR-View-Detailed.png)\n\nSASTやシークレット検出と同様に、脆弱性の無視やイシューの作成など、これらの脆弱性に対するアクションをマージリクエストから直接実行できます。\n\n#### 依存関係スキャンの設定\n\nジョブの定義を上書きするには（たとえば、変数や依存関係のようなプロパティを変更するには）、上書き対象のジョブと同じ名前で新しいジョブを宣言します。テンプレートをインクルードした後に新しいジョブを配置し、その下に追加のキーを指定します。たとえば、次のコードでは以下の設定を行っています。\n\n- 脆弱な依存関係の自動修正を無効にする\n- 依存関係スキャンの実行前にビルドジョブの完了を要求する\n\n```yaml\ninclude：\n  - template：Jobs/Dependency-Scanning.gitlab-ci.yml\n\ngemnasium-dependency_scanning：\n  variables：\n    DS_REMEDIATE：\"false\"\n  dependencies：[\"build\"]\n```\n\n依存関係スキャナーの設定についての詳細は、[アナライザーの動作をカスタマイズするドキュメント](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-analyzer-behavior)を参照してください。\n\n#### SBOMの生成\n\nGitLabの依存関係リスト（SBOM）で、プロジェクトやグループの依存関係や、既知の脆弱性を含む依存関係の重要な詳細を確認できます。このリストには、プロジェクトにおける依存関係が集約されており、既知のものや新たに検出されたものの両方が含まれています。依存関係リストは、依存関係スキャナーが[デフォルトブランチ](https://docs.gitlab.com/ee/user/project/repository/branches/default.html)で正常に実行された後に生成されます。依存関係リストにアクセスするには\n\n1. 左サイドバーで、**検索または移動先...** を選択し、プロジェクトを見つけます。\n2. **セキュリティ > 依存関係リスト**の順に選択します。\n\n![依存関係リスト（SBOM）](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/7-Dependency-List.png)\n\nここから、依存関係に関する次の情報を表示できます。\n\n|フィールド|説明|\n| ---------- | ---------- |\n|コンポーネント|依存関係の名前とバージョン。|\n|パッケージャー| 依存関係のインストールに使用されるパッケージャー。|\n|ロケーション| システムの依存関係の場合、スキャンされたイメージのリストが表示されます。アプリケーションの依存関係の場合、依存関係を宣言したプロジェクト内のパッケージャー固有のロックファイルへのリンクが表示されます。また、トップレベルの依存関係への依存関係パスも表示されます（該当の依存関係が存在する場合）。| \n|ライセンス| 依存関係のソフトウェアライセンスへのリンク依存関係で検出された脆弱性の数を示す警告バッジ。| \n|プロジェクト| 依存関係のあるプロジェクトへのリンク。同じ依存関係を持つプロジェクトが複数ある場合、プロジェクトの合計数が表示されます。依存関係のあるプロジェクトに移動するには、プロジェクトの番号を選択し、その名前を検索して選択します。プロジェクト検索機能は、グループ階層内に最大600件のプロジェクトがあるグループでのみサポートされています。|\n\n\u003Cp>\u003C/p>\n\n詳細については、[依存関係リストのドキュメント](https://docs.gitlab.com/ee/user/application_security/dependency_list/)を参照してください。\n\n### セキュリティとコンプライアンスの管理\n\nGitHub Advanced Securityを使用すると、セキュリティメトリクスとインサイトを閲覧し、コードセキュリティリスクを評価できます。次に、GitLab Ultimateで同じことをする方法を見てみましょう。\n\n#### セキュリティメトリクスとインサイトの閲覧\n\nGitLabは、アプリケーションのセキュリティ状況を評価するのに役立つ[セキュリティダッシュボード](https://docs.gitlab.com/ee/user/application_security/security_dashboard/)を提供しています。ダッシュボードには、プロジェクトで実行されたセキュリティスキャナーによって検出された脆弱性のメトリクス、評価、チャートがまとめて表示されます。\n\n- グループ内のすべてのプロジェクトの30日、60日、90日間の期間にわたる脆弱性の傾向\n- 脆弱性の重大度に基づく各プロジェクトの評価（A~Fの文字グレード評価）\n- 過去365日以内に検出された脆弱性の総数とその重大度\n\nセキュリティダッシュボードにアクセスする方法：\n\n1. 左側のサイドバーで、**検索または移動先...** を選択し、プロジェクトまたはグループを見つけます。\n2. サイドタブから、**セキュリティ > セキュリティ** ダッシュボードを選択します。\n3. 必要なものを絞り込んで検索します。\n\nグループビューには、グループ内のすべてのプロジェクトのセキュリティ状況が表示されます。\n\n![グループセキュリティダッシュボード](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/8-SD-Group.png)\n\nプロジェクトビューには、あるプロジェクトのみのセキュリティ体制が表示されます。\n\n![プロジェクトセキュリティダッシュボード](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/9-SD-Project.png)\n\n#### コードのセキュリティリスクを評価\n\nGitLab Ultimateは、デフォルトブランチのスキャン結果から脆弱性に関する情報を提供する[脆弱性レポート](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/)を備えています。レポートには、パイプラインが成功したかどうかにかかわらず、すべての成功したジョブの累積結果が含まれます。すべてのレベルで、脆弱性レポートには次が表示されます。\n\n- 重大度レベルごとの脆弱性の合計\n- 一般的な脆弱性の属性のフィルター\n- 表形式のレイアウトで表示される各脆弱性の詳細\n\n![脆弱性レポート](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/10-Vulnerability-Report.png)\n\n脆弱性をクリックすると、その[脆弱性ページ](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/)にアクセスできます。このページには、脆弱性の説明、ロケーション、識別子などの情報が記載されています。以下は、SASTスキャナーによって検出されたSQLインジェクションの脆弱性のページの例です。\n\n![SQLインジェクションの脆弱性ページ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/11-Vulnerability-Page-1.png)\n\nここから、セキュリティチームは、[理由とともに脆弱性の状態を変更](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#change-the-status-of-a-vulnerability)し、[変更をより適切に追跡するためのイシューを作成する](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#create-a-gitlab-issue-for-a-vulnerability)ことでコラボレーションできます。\n\n脆弱性のページから、AI搭載の各機能が集約された[GitLab Duo](https://about.gitlab.com/ja-jp/gitlab-duo/)を活用して脆弱性を説明し、[脆弱性を解決するマージリクエストを自動的に作成する](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-resolution)こともできます。\nGitLab Duoの[脆弱性の説明](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-explanation)は、大規模な言語モデルを使用して次を行います。\n\n- 脆弱性を要約する\n- 脆弱性について、どのように悪用される可能性があるか、どのように修正するかをデベロッパーやセキュリティアナリストが理解できるようにする\n- 緩和策を推奨する\n\n![SQLインジェクションGitLab Duo AIの説明](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/13-Explain-Vulnerability.png)\n\n## GitLab Ultimateのセキュリティ追加機能\n\nGitLab Ultimateには、GitHub Advanced Securityにはない多くのセキュリティ機能を搭載しています。追加のセキュリティ機能の例として、ソフトウェア開発ライフサイクル（SDLC）全体のための追加のセキュリティスキャナー、きめ細かいセキュリティガードレール、カスタム権限などが挙げられます。\n\n### SDLC全体のセキュリティスキャナー\n\n当社のセキュリティスキャナーのポートフォリオは、SDLC全体に対応しています。\n\n|スキャナー名|スキャン|スキャンされた言語/ファイル|\n| -------------- | ----- | ------------------------- |\n| [静的アプリケーションセキュリティテスト（SAST）](https://docs.gitlab.com/ee/user/application_security/sast/)|静的ソースコード| C/C++、Java、Python、Go、JavaScript、C #など|\n| [動的アプリケーションセキュリティテスト（DAST）](https://docs.gitlab.com/ee/user/application_security/dast/)| Webアプリケーション、ライブAPIの実行|言語に依存しない|\n|[Infrastructure as Code（IaC）のスキャン](https://docs.gitlab.com/ee/user/application_security/iac_scanning/)| IaCファイル| Terraform、AWS Cloud Formation、Ansibleなど|\n| [コンテナのスキャン](https://docs.gitlab.com/ee/user/application_security/container_scanning/)|静的および実行中のコンテナイメージ| Dockerfile |\n| [依存関係のスキャンとライセンスのスキャン](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/)|アプリケーションの依存関係| Requirements.txt、Yarn、Gradle、Npmなど|\n| [Web APIファズテスト](https://docs.gitlab.com/ee/user/application_security/api_fuzzing)|ランダム/不正な形式のデータをweb - apiに送信| OpenAPI、GraphQL、HAR、Postman Collection |\n|[カバレッジ - ガイド付きファズテスト](https://docs.gitlab.com/ee/user/application_security/coverage_fuzzing/)|ランダム/不正な形式のデータを関数に送信| C/C++、Go、Swift、Python、Rust、Java、JavaScript、AFL |\n\n\u003Cp>\u003C/p>\n\nGitLabでは、[サードパーティのスキャナー（英語）](https://about.gitlab.com/blog/integrate-external-security-scanners-into-your-devsecops-workflow/)と[カスタムスキャナー（英語）](https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab/)をプラットフォームに統合することもできます。スキャナーの結果は、パイプラインビュー、マージリクエストウィジェット、セキュリティダッシュボードなど、GitLabのさまざまな場所に自動的に表示されます。詳細については、[セキュリティスキャナー統合ドキュメント](https://docs.gitlab.com/ee/development/integrations/secure.html)を参照してください。\n\n### きめ細かいセキュリティとコンプライアンスポリシー\n\nGitLabのポリシーは、セキュリティとコンプライアンスの両チームに[組織内でグローバルに制御を実施する方法（英語）](https://about.gitlab.com/blog/meet-regulatory-standards-with-gitlab/)を提供します。セキュリティチームは次のことを保証できます。\n\n- 適切な設定で開発チームのパイプラインにセキュリティスキャナーを実施\n- すべてのスキャンジョブは、変更や修正なしで実行\n- これらの調査結果に基づき、マージリクエストに対して適切な承認を提供\n\n![マージリクエストのセキュリティポリシー](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/14-MR-Policy.png)\n\nコンプライアンスチームは、すべてのマージリクエストに対して複数の承認者を必須とし、マージリクエストやリポジトリの設定を有効化またはロックするなど、組織の要件に基づくプロジェクトでさまざまな設定が有効になっていることを確認できます。詳細については、[GitLabセキュリティポリシーのドキュメント](https://docs.gitlab.com/ee/user/application_security/policies/)を参照してください。\n\n### カスタムロールときめ細かい権限\n\n[GitLab Ultimateはカスタムロールを提供します（英語）](https://about.gitlab.com/blog/how-to-tailor-gitlab-access-with-custom-roles/)。これにより、組織はニーズに見合った正確な特権と権限を持つユーザーロールを作成できます。\n\nたとえば、ユーザーはシステム内のセキュリティの脆弱性を表示する権限を持つ「セキュリティ監査担当者」ロールを作成できますが、この権限ではソースコードを表示したり、リポジトリ内で変更を実行したりできないよう設定できます。このきめ細かい権限設定により、職務の棲み分けを明確にできます。\n\n![カスタムロールの作成](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/15-Custom-Roles.png)\n\n詳細については、[カスタムロール](https://docs.gitlab.com/ee/user/custom_roles.html)および[利用可能な詳細な権限のドキュメント](https://docs.gitlab.com/ee/user/custom_roles/abilities.html)を参照してください。\n\n### コンプライアンスセンター\n\nコンプライアンスチームが、コンプライアンス基準の遵守状況や違反についての報告、グループのコンプライアンスフレームワークの管理などを一括して行う場所がコンプライアンスセンターです。コンプライアンスセンターには次の内容があります。\n\n- [コンプライアンス基準遵守ダッシュボード](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_standards_adherence_dashboard.html)は、GitLab標準に準拠したプロジェクトの遵守状況を一覧表示します。\n- [コンプライアンス違反の報告](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_violations_report.html)は、グループ内のすべてのプロジェクトのマージリクエストアクティビティの概要を表示します。\n- [コンプライアンスフレームワークのレポート](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_frameworks_report.html)は、グループ内のコンプライアンスに関するすべてのフレームワークを表示します。\n- [コンプライアンスプロジェクトのレポート](https://docs.gitlab.com/ee/user/compliance/compliance_center/compliance_projects_report.html)は、グループ内のプロジェクトに適用されるコンプライアンスのフレームワークを表示します。\n\n![コンプライアンスセンター](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749674404/Blog/Content%20Images/16-Compliance-Center.png)\n\nこれらのダッシュボードは、組織内のコンプライアンスを最適化するために、職務の棲み分けがきちんと守られているかを確認する上で有益です。詳細については、[コンプライアンスセンターのドキュメント](https://docs.gitlab.com/ee/user/compliance/compliance_center/)を参照してください。\n\n## 続きを読む\n\nこの記事では、GitLab Ultimateが提供する幅広いセキュリティ機能の一部についてのみ説明しています。GitLab Ultimateが組織のセキュリティとデベロッパーの効率を向上させる方法について、詳しくは次のリソースを参照してください。\n\n- [Ultimateを選ぶ理由](https://about.gitlab.com/ja-jp/pricing/ultimate/)\n- [DevSecOpsチュートリアルを始める](https://gitlab-da.gitlab.io/tutorials/security-and-governance/devsecops/simply-vulnerable-notes/)\n- [DevSecOpsサンプルプロジェクトの始め方](https://gitlab.com/gitlab-da/tutorials/security-and-governance/devsecops/simply-vulnerable-notes)\n- [プロジェクトをGitHubからGitLabドキュメントにインポートする](https://docs.gitlab.com/ee/user/project/import/github.html)\n- [GitHub Actionsドキュメントからの移行](https://docs.gitlab.com/ee/ci/migration/github_actions.html)\n- [チュートリアル：最初のGitLab CI/CDパイプラインを作成して実行する](https://docs.gitlab.com/ee/ci/quick_start/)\n- [チュートリアル：複雑なパイプラインを作成する](https://docs.gitlab.com/ee/ci/quick_start/tutorial.html)\n- [CI/CD YAML構文リファレンス](https://docs.gitlab.com/ee/ci/yaml/)\n\n*監修：小松原 つかさ [@tkomatsubara](https://gitlab.com/tkomatsubara)\u003Cbr>\n（GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト）*",[681,831,14,704,832],"zero trust","testing","2024-12-25",{"slug":835,"featured":93,"template":684},"migration-guide-github-advanced-security-to-gitlab-ultimate","content:ja-jp:blog:migration-guide-github-advanced-security-to-gitlab-ultimate.yml","Migration Guide Github Advanced Security To Gitlab Ultimate","ja-jp/blog/migration-guide-github-advanced-security-to-gitlab-ultimate.yml","ja-jp/blog/migration-guide-github-advanced-security-to-gitlab-ultimate",{"_path":841,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":842,"content":848,"config":853,"_id":855,"_type":16,"title":856,"_source":18,"_file":857,"_stem":858,"_extension":21},"/ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab",{"title":843,"description":844,"ogTitle":843,"ogDescription":844,"noIndex":6,"ogImage":845,"ogUrl":846,"ogSiteName":669,"ogType":670,"canonicalUrls":846,"schema":847},"GitLabにカスタムセキュリティスキャナーをインテグレーションする方法","ワークフローにカスタムセキュリティスキャナーを追加して、DevSecOpsプラットフォームを拡張する方法を学びましょう（わかりやすいチュートリアルが含まれています）。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097082/Blog/Hero%20Images/Blog/Hero%20Images/securitycheck_securitycheck.png_1750097081856.png","https://about.gitlab.com/blog/how-to-integrate-custom-security-scanners-into-gitlab","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLabにカスタムセキュリティスキャナーをインテグレーションする方法\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2024-02-27\",\n      }",{"title":843,"description":844,"authors":849,"heroImage":845,"date":850,"body":851,"category":14,"tags":852},[700],"2024-02-27","最も包括的な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/ee/integration/)で確認できます（注：ドキュメントにはすべてのインテグレーションが記載されているわけではありません）。\n\n## GitLabセキュリティスキャナーのインテグレーション\n\n[サードパーティのセキュリティスキャナー](https://docs.gitlab.com/ee/integration/#security-improvements)または[カスタムビルドのセキュリティスキャナー](https://gitlab.com/gitlab-de/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-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner)：パスワード、秘密キー、社会保障番号などの特定のパターンを探してファイルをスキャンします。\n- [シークレットリスト](https://gitlab.com/gitlab-de/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-de/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/ee/ci/quick_start/#create-a-gitlab-ciyml-file)を作成します。\n2. [カスタムスキャナーテンプレート](https://docs.gitlab.com/ee/ci/yaml/includes.html)を含めます。\n- 環境変数を使用してテンプレートを設定することもできます。\n3. ファイルをmainブランチにコミットします。\n\nファイルがコミットされると、カスタムスキャナーがパイプラインで実行されることがわかります。パイプラインが完了すると、スキャナーは上記の[GitLabセキュリティスキャナーのインテグレーション](#gitlab-security-scanner-integration)セクションで定義されたすべての領域にデータを入力します。\n\n## 詳細を読む\n\nGitLabの詳細とDevSecOpsプラットフォームを拡張するその他の方法については、次のリソースをご覧ください。\n\n- [セキュリティスキャナーのGitLabインテグレーション](https://docs.gitlab.com/ee/development/integrations/secure.html)\n- [GitLabパートナーインテグレーション](https://docs.gitlab.com/ee/integration/)\n- [カスタムセキュリティスキャナーのプロジェクトグループ](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration)\n- [シークレット漏洩への自動応答](https://docs.gitlab.com/ee/user/application_security/secret_detection/automatic_response.html)\n",[681,14,832,704],{"slug":854,"featured":93,"template":684},"how-to-integrate-custom-security-scanners-into-gitlab","content:ja-jp:blog:how-to-integrate-custom-security-scanners-into-gitlab.yml","How To Integrate Custom Security Scanners Into Gitlab","ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab.yml","ja-jp/blog/how-to-integrate-custom-security-scanners-into-gitlab",{"_path":860,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":861,"content":867,"config":874,"_id":876,"_type":16,"title":877,"_source":18,"_file":878,"_stem":879,"_extension":21},"/ja-jp/blog/the-ultimate-guide-to-sboms",{"title":862,"description":863,"ogTitle":862,"ogDescription":863,"noIndex":6,"ogImage":864,"ogUrl":865,"ogSiteName":669,"ogType":670,"canonicalUrls":865,"schema":866},"SBOMとは？セキュリティとの関連性を含めた完全ガイド","SBOM（ソフトウェア部品表）がソフトウェア開発の管理やセキュリティに与える影響等について様々な観点から学びましょう。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664571/Blog/Hero%20Images/blog-image-template-1800x945__8_.png","https://about.gitlab.com/blog/the-ultimate-guide-to-sboms","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"SBOMとは？セキュリティとの関連性を含めた完全ガイド\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Sandra Gittlen\"}],\n        \"datePublished\": \"2022-10-25\",\n      }",{"title":862,"description":863,"authors":868,"heroImage":864,"date":870,"body":871,"category":14,"tags":872,"updatedDate":873},[869],"Sandra Gittlen","2022-10-25","急速に進化を遂げる今日のデジタル環境では、ソフトウェアサプライチェーンにおけるアプリケーション・セキュリティの重要性がかつてないほど高まっています。アップストリームの依存関係をソフトウェアに統合するには、透明性とセキュリティ対策が必須ですが、その実装と管理は思った以上に複雑です。そこで、今回のテーマであるソフトウェア部品表（SBOM）の出番となります。\n\nSBOM（Software Bill of Materials）、日本語でソフトウェア部品表は、ソフトウェアの構成部品を包括的にリスト化したもので、開発ライフサイクル全体で使用されるライブラリ、ツール、プロセスの複雑な関係性を明確にします。また、脆弱性管理ツールと組み合わせることで、ソフトウェア製品に潜在する脆弱性を明らかにするだけでなく、戦略的リスク軽減も可能にします。本ガイドは、SBOMの重要な役割、[DevSecOps](https://about.gitlab.com/ja-jp/topics/devsecops/)戦略におけるその中心的位置付け、そしてアプリケーションのSBOM健全性を向上させるための戦略について深く掘り下げます。そして、潜在的脅威に満ちた環境における組織のサイバーセキュリティ体制を強化することを目的としています。\n\n## 目次\n\n1. SBOMとは？\n2. SBOMが重要な理由 \n3. SBOMデータ交換標準フォーマットの種類\n4. SBOMとソフトウェアの脆弱性管理を組み合わせるメリット\n5. Gitlabと動的なSBOM\n   1. SBOMの生成と管理の拡大\n   2. SBOMの統合とインジェスト\n   3. SBOMの健全性を他持つための対策を迅速に行うには  \n   4. 継続的なSBOM分析\n   5. SBOMの信頼構築\n6. Gitlab SBOM機能の今後の進化\n7. SBOMを始めましょう\n8. SBOMに関するFAQ  \n   1. SBOMとは？\n   2. なぜSBOMは重要なのですか？\n   3. SBOMのデータ交換に使用される標準フォーマットは何ですか？\n   4. SBOMに対するGitLabのアプローチはどのようなものですか？\n   5. SBOMを組織に導入するにはどうすれば良いですか？\n\n## SBOMとは？\n\nSBOMとは、ソフトウェアを作るために使用された[コンポーネントをリスト化](https://www.cisa.gov/sbom#)（外部サイト）したものです。コンポーネント間の関係性も階層的に示します。このリストには、ソフトウェア・アーティファクトの開発、構築、およびデプロイに使用されるライブラリ、ツール、およびプロセスに関する重要情報も含まれます。\n\nSBOMの概念は10年以上前から存在しています。しかし、米国ホワイトハウスが2023年に発表した国家サイバー戦略を実施する一環として、CISA（米国土安全保障省の外局機関「サイバーセキュリティー・インフラセキュリティー庁」）の「[セキュア・バイ・デザイン（Secure by Design）](https://www.cisa.gov/securebydesign)（外部サイト）」フレームワークはソフトウェアメーカーに対して、この原則を採用、サイバーセキュリティを製品に統合するよう促しています。加えて同政府は、公共部門に販売するアプリケーションデベロッパーにソフトウェア・パッケージに SBOM を含めるよう促すベストプラクティスも発表しました。民間企業もこれに追随し、SBOMは普及への道を進んでいます。また日本でも、同年度に「[ソフトウェア管理に向けたSBOM導入に関する手引](https://www.meti.go.jp/press/2024/08/20240829001/20240829001.html)（外部サイト）」が経済産業省により作成されました。\n\nSBOMは専用のソフトウェアで個別に作成されることが多いものの、GitLabのようなプラットフォーム型のソリューションでは、DevSecOpsワークフローの初期段階からSBOMの生成が完全に組み込まれており、重要な役割を果たすようにしています。\n\n![サプライチェーンセキュリティとシステム開発ライフサイクル](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673653/Blog/Content%20Images/supply_chain_security_sdlc.png)\n\n## SBOMが重要な理由\n\n現代のソフトウェア開発は、より迅速かつ効率的な方法でアプリケーションをリリースすることに注力しています。そのためデベロッパーは、オープンソースのリポジトリやプロプライエタリ（専有）パッケージのコードをアプリケーションに組み込むことがあります。Synopsys社が発行した「2024年度オープンソースセキュリティおよびリスク分析レポート」によると、2023年に17の業界にわたる1,000以上の商用コードベースを分析した結果、コードベース全体の96%にオープンソースが含まれ、リスク評価されたコードベースの84%に脆弱性が含まれていたことが明らかになりました。\n\n未知のリポジトリを使用することは、ハッカーに悪用される脆弱性を含むコードを取り込む可能性を高めます。実際、2020年の[SolarWinds社への攻撃](https://cloud.watch.impress.co.jp/docs/topic/special/1359685.html)（外部サイト）は、彼らのOrion製品で使用されているパッケージに、悪意のあるコードが仕込まれており、これが実行されたことに端を発しています。この事件では、ソフトウェアサプライチェーン全体の顧客が重大な影響を受けました。また、多くの商用ソフトウェアベンダーに影響を与えたlog4jの脆弱性を含むその他の攻撃は、[ソフトウェアサプライチェーン全体のリスクを評価](https://about.gitlab.com/ja-jp/solutions/supply-chain/)できるよう、コンテナやインフラを含むアプリケーションの依存関係を綿密調査する必要性を確固たるものとしました。\n\nさらに、ソフトウェアのセキュリティ脆弱性を発見し修正するにはコストがかかることも、SBOMの必要性が高まっている理由の一つであり、同時にソフトウェアのサプライチェーン攻撃が企業の評判に与えるダメージも考慮すべき要素です。SBOMは依存関係の把握や、脆弱性や内部ポリシーに準拠していないライセンスの特定にも役立ちます。\n## SBOMデータ交換標準フォーマットの種類\n\nSBOMは、名前、バージョン、パッケージャーなどの情報の生成と解釈が自動化されることで、最も効果的に活用できます。これには、すべての関係者が標準的なデータ交換フォーマットを使用することが重要です。現在使用されている主なSBOMデータ交換標準フォーマットには、次の2つの種類があります:\n\n* [OWASP CycloneDX](https://cyclonedx.org/capabilities/sbom/)（外部サイト）  \n* [SPDX](https://spdx.dev/)（外部サイト）\n\nGitLabは、SBOMの生成にCycloneDXを使用しています。この標準フォーマットは指示的で使いやすく、複雑な関係を簡素化し、特定や将来のユースケースに対応できる拡張性を備えています。さらに[cyclonedx-cli](https://github.com/CycloneDX/cyclonedx-cli#convert-command)（外部サイト）や[cdx2spdx](https://github.com/spdx/cdx2spdx)（外部サイト）は、CycloneDXファイルを必要に応じてSPDXに変換するためのオープンソースツールとして利用可能です。\n\n## SBOMとソフトウェアの脆弱性管理を組み合わせるメリット\n\nSBOMがDevSecOpsチームやソフトウェアの利用者にとって非常に有益な理由は次の通りです。\n\n* アプリケーションに含まれる追加のソフトウェアコンポーネントとその宣言場所が標準的なアプローチで理解できるため\n* アプリケーションの作成履歴を継続的に可視化し、サードパーティのコードの出所やホストリポジトリの詳細を含むため\n* ファーストパーティによる開発コードと採用されたオープンソースソフトウェアの両方に対して、深いレベルでセキュリティの透明性を提供できるため\n* SBOMが提供する詳細情報により、DevOpsチームが脆弱性を特定し、潜在的なリスクを評価し、それらを軽減することができるため\n* アプリケーション購入者が昨今求めている透明性を提供できるため\n\n## Gitlabと動的なSBOM\n\nSBOMを最大限活用するには、組織がSBOMを自動生成し、アプリケーションセキュリティスキャンツールと連携させ、脆弱性やライセンスをダッシュボードに統合することで内容を把握しやすくし、対応できるようにする必要があります。さらに、継続的に更新することが求められます。GitLabは、これらすべての要件をサポートしています。\n\n![ダイナミックSBOM管理](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673653/Blog/Content%20Images/Screenshot_2024-05-03_at_10.53.28_AM.png)\n\n### SBOM生成と管理の拡大\n\nオープンソース、サードパーティ、および専有ソフトウェアを網羅した正確で包括的なSBOMを所有することが、内部ポリシーや規制に準拠する上で重要です。そして、各コンポーネントや製品バージョンのSBOMを効果的に管理するには、SBOMの作成、統合、検証、承認を効率的に行うためのスムーズなプロセス確立が必須です。GitLabの[依存関係リスト](https://gitlab-docs.creationline.com/ee/user/application_security/dependency_list/)機能は、既知の脆弱性およびライセンスに関するデータを一元化されたユーザーインターフェース内で表示します。依存関係スキャンレポートの一部として依存関係グラフ情報も生成され、ユーザーは個々のプロジェクトや複数のプロジェクトにわたる依存関係やリスクに関する包括的なインサイトを得ることができます。また、CIパイプライン内でJSON形式のCycloneDXアーティファクトの生成が可能です。このAPIは、SBOM生成において、より柔軟でカスタマイズ可能なアプローチを提供します。さらにSBOMは、UIや特定のパイプライン、プロジェクト、またはGitLab APIを通じてエクスポートすることができます。\n\n### SBOMの統合とインジェスト\n\nGitLabは、サードパーティのSBOMを取り込むことができ、サードパーティによる開発コードと採用されたオープンソースソフトウェアの両方に対して、深いレベルでセキュリティの透明性を提供します。。Gitlabの[CI/CD](https://about.gitlab.com/ja-jp/topics/ci-cd/)ジョブを使うことで、複数のCycloneDX SBOMをシームレスに統合し、1つのSBOMにまとめることもできます。\n\n各SBOMのCycloneDXメタデータに含まれるビルドやロックファイルの場所などの実装固有の詳細を使用し、統合ファイルから重複情報が削除されます。またこのデータは、SBOM内のコンポーネントに対するライセンス情報および脆弱性情報が追加されることで自動的に強化されます。\n\n### SBOMの健全性を保つための対策を迅速に行うには\n\n高品質な製品を迅速に構築するには、対策可能なセキュリティ上の問題を検出し、デベロッパーがその中で最も影響の大きい脆弱性に対処できるようにする必要があります。GitLabはソースコード、コンテナ、依存関係、実行中アプリケーションにおける[脆弱性をスキャン](https://docs.gitlab.com/ee/user/application_security/secure_your_application.html)することで、サプライチェーンのセキュリティを強化します。また、静的アプリケーションセキュリティテスト（SAST）、動的アプリケーションセキュリティテスト（DAST）、コンテナスキャン、ソフトウェア構成分析（SCA）機能など、さまざまなセキュリティスキャン機能を提供し、進化する脅威ベクトルに対し、全方位的な防御を実現します。GitLabのAI搭載機能「GitLab Duo脆弱性の説明」は、デベロッパーやセキュリティエンジニアが脆弱性をより理解し効率的に修正できるようサポートします。具体的には、特定の脆弱性に関する説明、その悪用可能性、そしてこれが最重要ですが、修正方法の提案を行います。「GitLab Duo 脆弱性の修正」と組み合わせることで、DevSecOpsチームはたった数回のクリックで脆弱性を特定、分析、修正することができます。\n\nまた、本プラットフォームは、新たに検出された脆弱性に基づいて、新しいポリシーの作成や[コンプライアンスの強制](https://docs.gitlab.com/ee/administration/compliance.html)もサポートしています。\n\n### 継続的なSBOM分析\n\nGitLabの継続的な脆弱性スキャンは、パイプラインの実行に関わらず、コンテナスキャン、依存関係スキャン、またはその両方が有効になっている全プロジェクトにに対してスキャンをトリガーします。新しい共通脆弱性識別子（CVE）が米国国立脆弱性データベース（NVD）に報告された場合、ユーザーが最新フィードを取得するためにパイプラインを再実行する必要はありません。\n\nGitLabの脆弱性調査チームが、GitLabのアドバイザリ・データベースにそれらの脆弱性情報を追加し、自動的にGitLabに脆弱性として報告されます。このように、最新の情報がリアルタイムで更新される仕組みから、GitLabのSBOMが本質的に動的であることが分かります。\n\n### SBOMに対する信頼構築\n[コンプライアンス機能](https://about.gitlab.com/ja-jp/solutions/compliance/)を必要とする組織は、GitLab Runnerによって生成されたすべてのビルドアーティファクトの証明書を作成できます。このプロセスでは、GitLab Runner内で証明書を生成します。データを外部サービスに引き渡すことないため、安全です。\n\n## Gitlab SBOM機能の今後の進化\n\n大手ソフトウェアベンダーやオープンソースソフトウェアエコシステムを狙った集中的な攻撃が頻繁に発生しているため、ソフトウェアサプライチェーンのセキュリティは、サイバーセキュリティおよびソフトウェア業界において引き続き重要なトピックとなっています。確かにSBOM業界は急速に進化していますが、SBOMの生成方法、生成頻度、保存場所、分析方法、複雑なアプリケーション向けに複数SBOMを統合する方法、アプリケーションの健全性向上に際した活用方法等に関して、依然として懸念があります。\n\nGitLabはSBOMを、[ソフトウェアサプライチェーン戦略](https://about.gitlab.com/direction/supply-chain/)になくてはならないものと位置付け、新機能追加の計画を含め、DevSecOpsプラットフォーム内でSBOM関連機能の強化を継続しています。最近の改善点には、証明の自動化、ビルドアーティファクトのデジタル署名、外部で自動生成されたSBOMのサポートが含まれます。\n\nまた、GitLabはプラットフォーム内に堅牢なSBOM成熟度モデルを確立しており、これには自動SBOM生成、開発環境からのSBOM取得、アーティファクトのSBOM分析、SBOMのデジタル署名の推奨といったステップが含まれています。さらに今後のリリースでは、ビルドアーティファクトの自動デジタル署名機能も追加する予定です。\n## SBOMを始めましょう\n\nSBOMの需要は既に高まっています。政府機関はソフトウェアベンダー、連邦政府のソフトウェアデベロッパー、さらにはオープンソースコミュニティに対して、SBOM作成を推奨または義務付けるになってきています。\n\n> これら要件を先取りするなら、[Gitlab DevSecOpsプラットフォームで提供されている](https://about.gitlab.com/ja-jp/)  \nGitLab Ultimate向けSBOM機能をご確認ください。\n\n## SBOMの基礎知識まとめとFAQ\n\n### SBOMとは？\n\nSBOMとはソフトウェア部品表のことであり、ソフトウェアの作成、ビルド、デプロイに使用されたすべてのコンポーネント、ライブラリ、ツールを一覧にして詳しく記載したものです。この包括的なリストは単なる一覧にとどまらず、コードの起源に関する重要な情報も含み、アプリケーションの構成や潜在的脆弱性をより深く理解するのに役立ちます。\n\n### なぜSBOMは重要なのですか？\n\nSBOMが重要な理由は次の通りです。\n\n* **依存関係のインサイト**: ソフトウェアの構成要素を理解することで、サードパーティ製コンポーネントに関連するリスクを特定し、軽減できます。  \n* **セキュリティの強化**: アプリケーションコンポーネントにの詳細を把握し、脆弱性を迅速に特定し、適切な対策を講じることができます。  \n* **規制遵守**: 規制やベストプラクティスにより、特に公共部門向けのソフトウェアパッケージに対して、SBOMが推奨または義務化されつつあります。  \n* **開発の効率化**: デベロッパーが、使用されているライブラリやコンポーネントに関するインサイトをSBOMから得ることで、開発サイクルの時間を節約し、エラーを減らすことができます。\n\n### SBOMのデータ交換に使用される標準フォーマットは何ですか？\n\n主なフォーマットは次の2つです。\n\n* **CycloneDX**: ソフトウェアコンポーネントとサポート間の複雑な関係を簡素化してくれるため、その使いやすさで知られており、特定のユースケースににも柔軟に対応します。  \n* **SPDX**: SBOMデータ交換のために、広く使われているもう一つのフレームワーク。ソフトウェア環境内のコンポーネントに関する詳細情報を提供します。\n\nGitLabはSBOMの生成にCycloneDXを採用しています。指示的でありながらも柔軟に拡張可能であり、将来にわたって使い続けられるためです。\n\n### SBOMに対するGitLabのアプローチはどのようなものですか？\n\nGitLabは動的なSBOMの作成として次の点を重視しています。\n\n* **自動生成**: ソフトウェアの構成に関する最新情報が常に反映されること  \n* **ツールとの統合**: リスク評価を徹底的に実施するために、脆弱性スキャンツールと連携すること  \n* **簡単な管理**: SBOMの取り込みや統合をサポートし、包括的な分析が可能なこと  \n* **継続的な分析**: プロジェクトを継続的にスキャンし、新たに発生する脆弱性を検出すること\n\n### SBOMを組織に導入するにはどうすれば良いですか？\n\nSBOMの導入を検討している組織向けに、GitLab Ultimateがあります。このパッケージは、DevSecOpsワークフロー内でSBOMの生成と管理を行うための強力なプラットフォームを提供します。GitLabのツールを活用することで、チームはコンプライアンスの確保、セキュリティの強化、開発プロセスの最適化を実現できます。\n\nSBOMへの需要が高まっている背景には、ソフトウェアのセキュリティとサプライチェーンの整合性への関心が増していることが挙げられます。SBOM機能を統合することで、組織は脆弱性に対する保護を強化し、新しい規制にも確実に対応できるようになります。\n\n> GitLab Ultimateを[30日間無料](https://about.gitlab.com/ja-jp/free-trial/devsecops/)でお試しください。\n\n免責事項: このブログには、今後の製品、機能、および機能性に関する情報が含まれています。本ブログの情報はあくまで参考情報であり、購入やプランニングの際に情報の正確性を保証するものではありません。本ブログやリンクされたページに記載されている内容は、変更や未更新の可能性があります。製品、性能、および機能の開発、リリース、タイミングについては、予告なく内容を変更または削除する場合があります。\n\n\u003Cbr>\u003Cbr>\n\n*監修：川瀬 洋平 [@ykawase](https://gitlab.com/ykawase)\u003Cbr>\n（GitLab合同会社 カスタマーサクセス本部 シニアカスタマーサクセスマネージャー）*",[14,724,747,748,188],"2025-06-10",{"slug":875,"featured":6,"template":684},"the-ultimate-guide-to-sboms","content:ja-jp:blog:the-ultimate-guide-to-sboms.yml","The Ultimate Guide To Sboms","ja-jp/blog/the-ultimate-guide-to-sboms.yml","ja-jp/blog/the-ultimate-guide-to-sboms",{"_path":881,"_dir":248,"_draft":6,"_partial":6,"_locale":7,"seo":882,"content":888,"config":897,"_id":899,"_type":16,"title":900,"_source":18,"_file":901,"_stem":902,"_extension":21},"/ja-jp/blog/ensuring-compliance",{"ogTitle":883,"schema":884,"ogImage":885,"ogDescription":886,"ogSiteName":669,"noIndex":6,"ogType":782,"ogUrl":887,"title":883,"canonicalUrls":887,"description":886},"GitLabで職務分離を実現し、コンプライアンスを遵守する方法","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLabで職務分離を実現し、コンプライアンスを遵守する方法\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Beatriz Barbosa\"},{\"@type\":\"Person\",\"name\":\"Fernando Diaz\"}],\n        \"datePublished\": \"2022-04-04\",\n      }","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098232/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_479904468%20%281%29_4lmOEVlaXP0YC3hSFmOw6i_1750098232241.jpg","DevSecOpsプラットフォームを使用して開発速度を保ったまま、コンプライアンスを遵守しましょう。","https://about.gitlab.com/blog/ensuring-compliance",{"heroImage":885,"body":889,"authors":890,"updatedDate":892,"date":893,"title":883,"tags":894,"description":886,"category":14},"この記事では、GitLab DevSecOpsプラットフォームを使用して**職務分離**と\n**継続的なコンプライアンス**を実現するためのさまざまな方法についてご紹介します。まずは、2つの重要な概念について説明しましょう。\n\n**コンプライアンス**とは、企業や政府機関などが定めたガイドラインや規格に則って\n行動することです。コンプライアンスは、\n企業倫理や適切なユーザーポリシー、セキュリティ基準などを守り、\n消費者の安全を確保する上で役立ちます。\n\nコンプライアンスに違反した場合、裁判費用や罰金が発生する可能性があります。そのため、コンプライアンスを維持することは非常に重要です。DevSecOpsチームはコンプライアンスを遵守しつつ開発速度を維持し、さらにシンプルさや可視性、制御といった要件も満たす必要があります。\n\n**職務分離**とは、エラーの防止や不正行為の抑止を目的に、業務を複数の担当者で分担することです。職務分離を行うことで、その作業に最適な担当者が作業を実施する体制となります。たとえば以下のように、\nそれぞれの担当者が特定の目的のもとで業務を受け持ちます。\n\n* デベロッパーは新機能の開発を担当\n* コンプライアンス担当者はパイプラインの作成と使用の実施を担当\n* アプリケーションセキュリティエンジニアは脆弱性のあるマージリクエストの承認を担当\n\nこのように業務が分担されていれば、たとえばデベロッパーが実行中のパイプラインを変更することはできません。\nそのような業務を行えるのはコンプライアンス担当者のみであり、承認なしでプッシュできるのはコンプライアンスに準拠しているコードのみであることが保証されます。\n\n脆弱性のあるコードのレビューと承認を担当するアプリケーションセキュリティエンジニアは、適切な方法で脆弱性を軽減し、将来的に問題が発生しないようにします。このシナリオでは、コンプライアンス\nとセキュリティの要件が満たされるまでデベロッパーはコードをマージできません。\n\n## セキュリティポリシー\n\nGitLabの**セキュリティポリシー**を使用すれば、セキュリティチームは設定に従ってセキュリティスキャンが必ず実行されるように指定できます。これにより、セキュリティチームは、設定済みのスキャンが変更されたり無効化されたりしていないことを把握できます。\n\nセキュリティポリシーは、特定の**コンプライアンスフレームワーク**を満たすようにスコープを設定できます。この場合、プロジェクトには特定のコンプライアンス要件が適用されているため、追加で監視を行う必要があります。このラベルは、トップレベルグループの **「セキュア」>「コンプライアンスセンター」>「フレームワーク」** から作成できます。\n\n![コンプライアンスフレームワークラベル](https://about.gitlab.com/images/blogimages/compliance-04-2022/cf-step-2.png)\n\n**注**：コンプライアンスラベルは、ラベルを作成したトップレベルグループ内のプロジェクトにのみ割り当てられます。\n\nポリシーには、[スキャン実行ポリシー](https://docs.gitlab.com/ee/user/application_security/policies/scan_execution_policies.html)、[マージリクエスト承認ポリシー](https://docs.gitlab.com/ee/user/application_security/policies/merge_request_approval_policies.html)、[パイプライン実行ポリシー](https://docs.gitlab.com/ee/user/application_security/policies/pipeline_execution_policies.html)の3種類があります。\n\n* **スキャン実行ポリシー**：セキュリティスキャンが、あらかじめ設定したスケジュールに従って実行されるか、プロジェクトのパイプライン内で実行されるようにします。\n* **マージリクエスト承認ポリシー**：マージを実行する前にセキュリティチームによる承認を求めるなど、スキャン結果に基づいてアクションを実行します。\n* **パイプライン実行ポリシー**：対象のプロジェクトでCI/CDジョブを実施します。\n\nこれらのポリシーは、ポリシーエディタ上で簡単な手順で設定できます。\n\n### スキャンの実行\n\n1. **「セキュリティとコンプライアンス」 >「ポリシー」** の順に移動します。\n2. **「新しいポリシー」** ボタンをクリックして新規ポリシーを作成します。\n3. **「スキャン実行」** を選択します。\n4. ルールを作成します。例として、[SAST](https://docs.gitlab.com/ee/user/application_security/sast/)が設定されていなければパイプラインを実行できないようにするルールを作成します。\n\n```yaml\nname: force_sast\ndescription: 'require sast to run'\nenabled: true\nrules:\n- type: pipeline branches: - main actions:\n- scan: sast\n```\n\n5. マージリクエストを作成してからマージを実行し、ポリシーを送信します。\n\nすべてのスキャン実行ポリシーの変更は、10分ごとに実行されるバックグラウンドジョブを通じて適用されます。\n対象プロジェクトにコミットされたポリシーの変更が反映されるまで、最長で10分かかることがあります。\n\n6. パイプラインを実行してみてください。YAMLでSASTを定義していない場合、パイプラインは実行されません。\n\n**注**：タイマーを設定してSASTを強制的に実行することもできます。詳細はスキャン実行ポリシーの\n[ドキュメント](https://docs.gitlab.com/ee/user/application_security/policies/scan-execution-policies.html)をご参照ください。\n\n### マージリクエストの承認\n\n1. **「セキュア」>「ポリシー」** の順に移動します。\n2. **「新しいポリシー」** ボタンをクリックして新規ポリシーを作成します。\n3. **「マージリクエスト承認ポリシー」** を選択します。\n4. ポリシーのスコープを定義します。\n5. ルールを作成します。\n\n![職務分離のための更新 - 画像1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098241/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098241214.png)\n\n6. 実行するアクションを追加します。\n\n![職務分離のための更新 - 画像2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098241/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098241215.png)\n\n**注**：ポリシーは設定したルールに従って評価されます。 そのため、ルールが無効であるか評価できない場合は、承認が必要となります。これを防ぐには、デフォルトのフォールバック動作フィールドを`open`に変更します。\n\n![職務分離のための更新 - 画像3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098241/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750098241217.png)\n\n1. マージリクエストを作成してからマージを実行し、ポリシーを送信します。\n2. 脆弱性を含むマージリクエストを別途作成します。\n\n脆弱性の追加方法については、GitLab DevSecOpsワークショップの「デベロッパーワークフロー」セクションをご参照ください。\n\n3. マージリクエストを表示して、マージリクエスト承認ポリシーが使用されていることを確認します。\n\n### パイプライン実行ポリシー\n\nパイプライン実行ポリシーを設定するには、まず実行するCIファイルを含むプロジェクトを作成する必要があります。職務分離を確実にするため、セキュリティチームや管理者だけがアクセスできるように設定してください。例として、適用したいYAMLを含む「コンプライアンスとデプロイ」プロジェクトを作成しました。\n\n1. **「セキュア」>「ポリシー」** の順に移動します。\n2. **「新しいポリシー」** ボタンをクリックして新規ポリシーを作成します。\n3. **「パイプライン実行ポリシー」** を選択します。\n4. ポリシーのスコープを定義します。\n5. 実行するアクションを追加します。\n\n![職務分離のための更新 - 画像4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098241/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750098241219.png)\n\n6. 条件を追加します。\n7. マージリクエストを作成してからマージを実行し、ポリシーを送信します。\n8. パイプラインを実行してみてください。パイプラインにポリシー固有のジョブとステージが表示されます。\n\n## 監査管理とコンプライアンスダッシュボード\n\nコンプライアンスを遵守する上でもうひとつ重要なのは、実際にグループやプロジェクト内で起きていることを把握することです。GitLabには、監査に対応するために監査イベントとコンプライアンスレポートが備わっています。\n\n**監査イベント**を使用すると、GitLabのオーナーと管理者は、特定のアクションを実行したユーザーや、そのアクションが行われた時間といった重要なイベントを追跡できます。\n\n![監査イベント](https://about.gitlab.com/images/blogimages/compliance-04-2022/project-audit-events.png)\n\n監査イベントはグループやプロジェクトごとにさまざまなイベントを記録するもので、[監査イベント](https://docs.gitlab.com/ee/administration/audit_events.html)のドキュメントで内容を\n確認できます。\n監査イベントには、**「セキュリティとコンプライアンス」>「監査イベント」**の順に移動してアクセスできます。\n以下はその一例です。\n\n* ユーザーがプロジェクトに追加され、権限が付与された\n* プロジェクトに割り当てられたユーザーの権限が変更された\n* プロジェクトにCI/CD変数が追加または削除された、または保護された状態が変更された\n* ユーザーがグループに追加され、権限が付与された\n* グループ名またはパスが変更された\n\n監査イベントは、監査イベントストリーミングを使用してHTTPエンドポイントに送信することもできます。監査イベントストリーミングの\n実装方法については、こちらの[動画](https://youtu.be/zHwVF9-i7e4?t=52)をご覧ください。\n\n**「基準遵守」**では、グループのマージリクエストアクティビティを確認できます。ここでは、グループ内のすべてのプロジェクトの概要が表示されます。\n\n![職務分離のための更新 - 画像5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098241/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098241222.png)\n\nこのレポートでは、次の情報を確認できます。\n\n* 各プロジェクトの最新のマージリクエストの概要\n* マージリクエストの承認ステータスや承認者\n* マージリクエストの作成者\n* 各マージリクエストの最新のCI/CDパイプライン結果\n\n基準遵守レポートは、トップレベルグループの **「セキュア」 >「コンプライアンスセンター」**にある**「基準遵守」** タブから確認できます。\n\n- - -\n\nここまでお読みいただきありがとうございました。GitLabでの職務分離について詳しくは、[GitLabによる継続的なソフトウェアコンプライアンス](/solutions/compliance/)をご参照ください。",[891,700],"Beatriz Barbosa","2025-07-15","2022-04-04",[895,896],"CI","CD",{"slug":898,"featured":6,"template":684},"ensuring-compliance","content:ja-jp:blog:ensuring-compliance.yml","Ensuring Compliance","ja-jp/blog/ensuring-compliance.yml","ja-jp/blog/ensuring-compliance",2,[690,711,732,755,775,797,818,840,859],1754424545535]