> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# GitLab

> CorgeaでGitLab連携を設定する方法

# CorgeaとGitLabの連携を設定する

CorgeaのGitLab連携により、GitLabリポジトリとCorgeaの脆弱性スキャンおよび修復機能をシームレスに接続できます。この連携により、マージリクエスト時にコードのセキュリティ脆弱性を自動でスキャンでき、Corgeaは検出された問題や修正案を含む詳細なコメントを提供します。また、Dropsite機能を使ってGitLabからCorgeaにリポジトリを追加したり、検出された問題に対してCorgeaから直接マージリクエストを作成したりできます。

## 前提条件

GitLab連携を設定する前に、次の要件を確認してください:

1. Corgeaのアカウント
2. 連携するリポジトリを持つGitLabアカウント

## 連携の設定

<Steps>
  <Step title="Integrationsを開く">
    Corgeaのアカウントにログインし、「連携」セクションに移動します。
  </Step>

  <Step title="GitLab連携を追加">
    「Add Integration」ボタンをクリックし、利用可能な連携リストから「GitLab」を選択してください。
  </Step>

  <Step title="連携の設定">
    「Add GitLab Integration」フォームには以下の情報を入力してください:

    * **名前**:GitLab連携を識別するための名前です。
    * **GitLab URL**:GitLab インスタンスのベースURL(例えば、セルフホストインスタンスの場合は `https://gitlab.com` や `https://gitlab.example.com` )。
    * **Secure Token**:GitLabリポジトリへのアクセスに必要な権限を持つ個人アクセストークン。 [GitLab ドキュメント](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)に従うことで新しいトークンを生成できます。
    * **メンバープロジェクトのみリスト**:このオプションはデフォルトで有効化されており、トークン所有者がメンバーであるプロジェクトに限定してリポジトリ選択を制限します。無効にすると、トークンがアクセス可能な他のプロジェクト、例えば公開プロジェクトや管理者・監査人アクセスによるプロジェクトもリストアップできます。
    * **マージリクエストへのコメント**:Corgeaが特定された脆弱性や修正案のマージリクエストに自動的にコメントしたい場合は、このオプションを確認してください。
  </Step>

  <Step title="設定を保存">
    「保存」をクリックしてGitLab連携を作成します。
  </Step>
</Steps>

## GitLabのセットアップ

Corgeaがリポジトリをスキャンし、マージリクエストにコメントできるようにするには、GitLabでいくつかの設定を設定する必要があります。

<Steps>
  <Step title="アクセストークンの作成">
    **推奨**:GitLabで専用のCorgeaユーザーを作成し、コメントやマージリクエストがCorgeaから来ているように見せます。

    **オプション1:個人アクセストークン(Corgeaユーザー名義)**

    1. 「Corgea」(または類似名)という名前の新しいGitLabユーザーアカウントを作成する
    2. Corgeaのユーザーアカウントにログイン
    3. アクセストークン>ユーザー設定へ移動
    4. 以下のスコープを持つ新しいトークンを作成する:
       * `api` (読み書きAPIアクセス)
       * `read_api`
       * `read_repository`
       * `write_repository`
    5. 生成されたトークンをコピーします。Corgeaの連携設定で使用します

    **オプション2:グループアクセストークン**

    1. グループの設定>アクセストークンへ行く
    2. 上記のスコープと同じ新しいグループアクセストークンを作成する
    3. このトークンはグループ内のすべてのプロジェクトに適用されます
    4. 生成されたトークンをコピーします。これはCorgeaとの連携設定に必要です
  </Step>

  <Step title="Webhookの設定">
    プロジェクトレベルのWebhookの場合:

    1. プロジェクトの設定>Webhooksへ
    2. 以下の設定で新しいWebhookを追加する:
       * URL: `https://www.corgea.app/gitlab_webhook/` (または提供されたWebhookURL)
       * カスタムヘッダー:GitLabの連携設定ページにある値で `X-Corgea-UUID` を追加> すべて表示>
       * トリガー選択:
         * マージリクエストイベント
         * コメント

    <img src="https://mintcdn.com/corgea/LPFdBW7ccdn08szq/images/gitlab_webhook_config.png?fit=max&auto=format&n=LPFdBW7ccdn08szq&q=85&s=f3289bd50050618c577f498b6bf62abb" style={{ borderRadius: '0.5rem' }} width="2518" height="2440" data-path="images/gitlab_webhook_config.png" />

    3. 「Webhookを追加」をクリックします

    グループレベルのWebhookの場合:

    1. グループの設定>Webhooksへ
    2. 上記の手順に従う
    3. Webhookはグループ内のすべてのプロジェクトに適用されます
  </Step>

  <Step title="設定の検証">
    1. テストマージ要求を作成する
    2. CorgeaがWebhookを受け取り、マージリクエストにコメントしているか確認
    3. GitLabでWebhookの最近の配信を確認し、通信の成功を確実にしてください
  </Step>
</Steps>

## Dropsiteを使ってGitLabからリポジトリを追加する

<Steps>
  <Step title="ドロップサイトへのアクセス">
    Corgeaのアカウントにログインし、「Dropsite」セクションに移動します。
  </Step>

  <Step title="接続方法を選択する">
    「コードを追加」ステップで「Corgeaを接続」オプションを選択してください。
  </Step>

  <Step title="GitLabを選択">
    利用可能な連携リストから「GitLab」連携を選択します。
  </Step>

  <Step title="リポジトリ選択">
    GitLabアカウントからスキャンしたいリポジトリとブランチを選択します。
  </Step>

  <Step title="スキャン開始">
    「確認」をクリックしてスキャンを開始してください。
  </Step>
</Steps>

Corgeaは選択したリポジトリとブランチからコードを取得し、包括的なセキュリティスキャンを行います。

## Corgeaの問題からマージリクエストを作成する

Corgeaがセキュリティ問題を特定し修正を生成した場合、問題詳細ページから直接マージリクエストを作成できます。

1. 修正したい脆弱性の「問題詳細」ページに移動します
2. ドロップダウンメニューの「MRを作成」オプションを探してください
   <Frame>
     <img src="https://mintcdn.com/corgea/mpJUc1GyXtnVYEyT/images/issue_mr.png?fit=max&auto=format&n=mpJUc1GyXtnVYEyT&q=85&s=4ddc078ba74c7d64b6d0c936c555b346" style={{ borderRadius: '0.5rem' }} width="747" height="828" data-path="images/issue_mr.png" />
   </Frame>
3. 「Issue MR」をクリックすると、Corgeaが自動的に表示されます:

   * 設定したベースブランチに基づいて新しいブランチを作成する
   * 記述的なメッセージで修正をコミットする
   * 変更点でマージリクエストを作成する
   * 脆弱性と修正(有効化されている場合)を詳細に説明するコメントを追加する

   <Frame>
     <img src="https://mintcdn.com/corgea/mpJUc1GyXtnVYEyT/images/view_mr.png?fit=max&auto=format&n=mpJUc1GyXtnVYEyT&q=85&s=3cf196397abd84f1147956d1c83a3951" style={{ borderRadius: '0.5rem' }} width="786" height="532" data-path="images/view_mr.png" />
   </Frame>

MRのリンクは問題詳細ページに表示され、簡単にアクセスできます。その後、通常のGitLabのワークフローに従って変更を確認し、マージできます。

<Frame>
  <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/generate_mr.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=6a7399730409534069bc6c90147dfb9e" style={{ borderRadius: '0.5rem' }} width="1100" height="547" data-path="images/generate_mr.png" />
</Frame>

## 連携の仕組み

GitLab連携が設定されると、Corgeaは新しいマージリクエストが作成または更新されるたびにコードの脆弱性を自動でスキャンします。連携の仕組みは以下のとおりです:

1. GitLabリポジトリでマージリクエストが作成されたり更新されたりすると、CorgeaはGitLabからWebhook通知を受け取ります。
2. Corgeaはマージリクエストからコード変更を取り出し、包括的なセキュリティスキャンを実行します。
3. 脆弱性が検出された場合、Corgeaはマージリクエストにコメントを投稿し、検出された問題と修正案を提示します。
   コメントはマージリクエストの差分に含まれる行にのみ掲載されます。複数行の問題の場合、Corgeaはコメントを影響を受けるコード範囲内で最初に変更された行にアンカーします。
4. コードをマージする前にコメントを確認し、提案された修正を適用できます。

## GitLab連携の利点

CorgeaをGitLabリポジトリと連携することで、以下の利点があります:

* **自動セキュリティスキャン**:Corgeaはマージリクエストの処理中にコードを自動でスキャンし、開発サイクルの早期段階でセキュリティ問題を検出します。
* **詳細な脆弱性レポート**:Corgeaは、検出された脆弱性の重大度、場所、潜在的な影響などの詳細情報を提供します。
* **提案された修正**:Corgeaは脆弱性を特定するだけでなく、迅速かつ効率的に問題を解決するための修正案も提供します。
* **シームレスな連携**:GitLab連携は既存の開発ワークフローに組み込まれるため、混乱を最小限に抑え、スムーズなセキュリティレビュープロセスを実現します。
* **コード品質の改善**:開発サイクルの早期段階でセキュリティの脆弱性に対処することで、コードベースの全体的な品質とセキュリティを向上させることができます。
* **柔軟なスキャンオプション**:自動マージリクエストスキャンに加え、Dropsite機能を使ってGitLabのリポジトリをオンデマンドでスキャンできます。
* **ワンクリック修正実装**:CorgeaのIssue Detailsページから直接マージリクエストを作成し、最小限の労力で修正を実装できます。

CorgeaのGitLab連携とDropsite機能を活用することで、アプリケーションのセキュリティを強化しつつ開発プロセスを効率化し、最終的にはより安全で信頼性の高いソフトウェアをユーザーに提供できます。
