13

git を試してみて、自己ホスト型リポジトリ用に Gitlab をセットアップしましたが、見栄えがします。

私を悩ませていることの 1 つは、誰でも他の人のようにコミットできるように見えることです (つまり、コミットのなりすまし)。

ie: 公開鍵アクセスを使用して Gitlab でユーザーをセットアップしています

  • ユーザー1
  • ユーザー2

現在、これらのユーザーのみがプッシュできます-秘密のSSHキーを使用しています-しかし、User2がgitconfigを微調整してUser1の名前でコミットし、それをプッシュするのを止めるものは何もないようです?

gitlab とgit -showの履歴は、User1 の gitconfig テキストが何であれ、コミッターを示しています。代わりに、プッシュする ssh キーに関連付けられたユーザー名を Gitlab に履歴にスタンプしてもらいたいので、プッシュに使用された ssh キーがわかります。

シナリオは、レポがチーム環境で使用されることであり、スプーフィングされたコミットを許可しないことが賢明なようです。

私はいくつかの読書を行い、通常、ワークフローを変更して、承認されたリポジトリを持ち、それにプッシュできる信頼できるコミッターのみがいる可能性があることを理解していますが、この段階では、git を学習しながら、より集中化された SVN タイプのワークフローにとどまりたいと考えています。 .

これはフックを使用して可能ですか?

gitosis についても同様の質問に回答がありますが、それでさえ、コミッターが User2 としての User1 のスプーフィングを停止しない範囲のユーザーからであることを強制しているように見えます-私が知る限り。

PS: 多分私は間違った質問をしているかもしれません.コードをレポにプッシュするためにどのsshキー(したがって実際のユーザー)が使用されたかをgitlabで発見する方法はありますか? 私が見つけたものからはそうではないようです。

4

1 に答える 1

5

2015年更新

このスレッドで言及されているように、GitLab Enterprise には、プロジェクトに関連付けられた git フックの中に、電子メールを制御する方法があります。

プロジェクト設定 -> git hooks に移動し、作成者の電子メールの検証を確認します。

既知のユーザーと一致しない電子メールはすべて拒否されます。


元の回答 (2012)

ユーザー ID コントロールを実現する部分的な方法は、プッシュされたコミットの少なくとも 1 つがコミットされていない場合、gitolite (gitlab が依存している) にプッシュを拒否させることです。

プッシュすると、(Gitolite によって登録された公開鍵の名前に基づいて、または LDAP 接続のような別の方法で) 認証されます。
すべての新しいコミットをチェックするフックを追加pre-receiveし、正しい名前 (つまり、コミットをプッシュしたユーザーの ID) でコミットされたコミットを少なくとも 1 つ探すことができます。例として
このpre-receiveフックを参照してください。

于 2012-08-22T05:42:59.033 に答える