株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

GitとCI/CDに関する知識ゼロのSEが、GitLabのリポジトリアクセスプロトコルを制限するだけの話

2022/05/19 GitLabのデモ動画を作りました!このブログの末尾にリンクを張ったのでよろしければご視聴ください。 

皆様こんにちは。SEの小池と申します。
私はアプリケーションの開発経験がないため完全に想像なのですが、開発プロジェクトによってはGitリポジトリへのアクセスプロトコルが制限されているというケースもあると存じます。(多分そうじゃないかと妄想しています。)
この記事ではGitLabのリポジトリへのアクセスプロトコルの制限方法について紹介します。

本記事の対象の方

  • GitLabのリポジトリへのアクセスプロトコルを限定したい方。 こんなニッチな記事需要ある?心配なんですケド。

今回のブログのゴール

このブログのゴールはこちらです。

今回のゴール
  • GitLabのリポジトリへのアクセスプロトコル (SSH or HTTPS) を制限する。

このブログをお読みいただくにあたっての事前ご連絡事項

  • 本記事は GitLab Enterprise Edition 14.6.1-ee (Ultimate) のオンプレミス版における仕様をベースに記載しております。それ以外のエディションやバージョンではこの記事に記載の通りではない可能性がございます。
  • 本記事の操作説明と画面ショットはGitLabのローカライズを日本語にした状態で説明しております。それ以外の言語をご利用の方は適宜読み替えてください。
  • 本記事はGitやCI/CDに関する知識ゼロのSEによるなんちゃって記事です。GitLabのディープな使用法についてはGitLabの公式オンラインドキュメント (こちら) をご参照ください。

制限の適用範囲について

今回紹介するアクセスプロトコルの制限はオンプレ版でしか設定できません
SaaS版であるGitLab.comでのリポジトリへのアクセスプロトコルの制限は、2022/05/13現在ではできません。

また、2022/05/13現在、この設定はGitLabの環境レベルの設定のみが可能であり、各グループやユーザー、プロジェクト単位では設定できません


本記事で紹介する設定方法は下のGitLab Docsに記載されています。
戦隊ジリキデデキルンジャーの隊員の方はこちらを参照なさった方が早いかもしれません。
Control access and visibility | GitLab

SSHもしくはHTTPSのどちらかに制限する

そもそもGitLabはデフォルトの状態ではリポジトリに対してSSH, HTTPSの両方でアクセスできます
これを、SSHだけ許可する、もしくはHTTPSのみ許可する設定を紹介します。

管理者権限を持つユーザーでGitLabにサインインします。
サインイン後、[Menu] > [Admin] をクリックします。

左側のメニューで [設定] > [一般] を開き、[可視性とアクセス制御] を展開します。

[有効なGitアクセスプロトコル] という項目があり、プルダウンでSSHのみ、HTTPSのみ、両方可を設定できます。
設定方法は以上です。

【余談1】許可/拒否するSSHキーの暗号アルゴリズム指定

アクセスプロトコルの制限設定と同じ画面で、SSHキーの暗号アルゴリズムの許可/拒否の設定ができます。
デフォルトだとサポートしている暗号アルゴリズムは全て許可されています。

【余談2】リポジトリへのアクセスプロトコルでHTTPSを不可にした場合であってもRunnerからのアクセスは可能

こちらのGitLab Docsにある通り、リポジトリに対してHTTPSでのアクセスを不可にした場合であっても、Runnerkからのアクセスは可能だそうです。

GitLab versions 10.7 and later, allow the HTTP(S) protocol for Git clone or fetch requests done by GitLab Runner from CI/CD jobs, even if you select Only SSH.

引用元:Control access and visibility | GitLab

最後に

この度はGitもCI/CDもよくわかっていないど素人SEによるGitLab検証ブログをお読みいただき、誠にありがとうございます。
このブログの目標は以下のとおりでしたが、皆さまはいかがでしたでしょうか。

今回のゴール
  • GitLabのリポジトリへのアクセスプロトコル (SSH or HTTPS) を制限する。

SSHとHTTPSのどちらかしか使用できない!という開発現場でのお役に立てれば幸いです。
最後までお読みいただき、誠にありがとうございました。


GitLabに関するお問い合わせは、以下のフォームからお願い致します。
GitLab製品 お問い合わせ

2022/05/19追記
GitLab操作デモ動画 (基本編) を作っちゃいました。
つたない内容ではありますが、ご興味がおありでしたら是非ご視聴いただければと存じます。

www.youtube.com