正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

機密イシューのマージリクエスト

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

パブリックリポジトリ内のマージリクエストは、機密イシューのマージリクエストを作成する場合でも、公開されます。機密イシューに取り組む際に機密情報が漏洩しないようにするには、同じネームスペース内のプライベートなフォークからマージリクエストを作成します。

ロールは親グループから継承されます。元の(パブリック)リポジトリと同じネームスペース(同じグループまたはサブグループ)にプライベートなフォークを作成すると、デベロッパーはフォークで同じ権限を受け取ります。この継承により、以下が保証されます:

  • デベロッパーユーザーは、機密イシューを表示し、解決するために必要な権限を持っています。
  • フォークへのアクセスを個々のユーザーに許可する必要はありません。

詳細については、GitLabエンジニア向けパッチリリース手順書をご覧ください: パッチリリースのセキュリティ修正の準備

機密マージリクエストを作成します

ブランチはデフォルトでパブリックです。作業の機密性を保護するには、同じネームスペースにブランチとマージリクエストを作成する必要がありますが、プライベートなフォークのダウンストリームに作成する必要があります。パブリックリポジトリと同じネームスペースにプライベートなフォークを作成すると、フォークはアップストリームパブリックリポジトリの権限を継承します。アップストリームパブリックリポジトリのデベロッパーロールを持つユーザーは、お客様の操作なしに、ダウンストリームのプライベートなフォークでそれらのアップストリーム権限を継承します。これらのユーザーは、機密イシューの修正を支援するために、プライベートなフォークのブランチにすぐにプッシュできます。

アップストリームリポジトリとは異なるネームスペースに作成すると、プライベートなフォークから機密情報が漏洩する可能性があります。2つのネームスペースに同じユーザーが含まれていない可能性があります。

前提要件:

  • パブリックリポジトリのオーナーまたはメンテナーロールが必要です。これは、サブグループを作成するために、これらのロールのいずれかが必要であるためです。
  • パブリックリポジトリをフォークしました。
  • フォークの表示レベルプライベートです。

機密マージリクエストを作成するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 左側のサイドバーで、Plan > イシューを選択し、マージリクエストを作成するイシューを見つけます。
  3. イシューの説明の下までスクロールし、非公開のマージリクエストを作成するを選択します。
  4. ニーズに合った項目を選択します:
    • ブランチとマージリクエストの両方を作成するには、非公開のマージリクエストとブランチを作成するを選択します。マージリクエストは、パブリックのアップストリームプロジェクトのデフォルトブランチではなく、フォークのデフォルトブランチをターゲットにします。
    • ブランチのみを作成するには、ブランチを作成を選択します。
  5. 使用するプロジェクトを選択します。これらのプロジェクトではマージリクエストが有効になっており、デベロッパーロール(またはそれ以上)が付与されています。
  6. ブランチ名を入力し、**ソース (ブランチまたはタグ)**を選択します。両方のブランチが選択したフォークで使用可能である必要があるため、GitLabはこれらのブランチがプライベートなフォークで使用可能かどうかを確認します。
  7. 作成を選択します。

このマージリクエストは、パブリックのアップストリームプロジェクトではなく、プライベートなフォークをターゲットにしています。ブランチ、マージリクエスト、およびコミットは、プライベートなフォークに残ります。これにより、機密情報の早期公開を防ぎます。

問題がプライベートなフォークで解決されたと思われる場合、フォークからアップストリームリポジトリにマージリクエストを開きます:

  • 問題がプライベートなフォークで解決されたと思われる場合。
  • 機密のコミットを公開する準備ができている。