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