2017-12-18 7 views
0

評価プロセスを構築しており、特別なユーザの特定のブランチへの読み書きアクセスを制限したいと考えています。ユーザの名前に基づいてプレーンgitリポジトリのブランチにアクセスを制限します。

すべてのユーザーには読み取りと書き込みのアクセス権があります(これらのユーザーは回答を評価します)。一定の数の評価ユーザーが存在し、マスタと読み取り/書き込みアクセスに対する読み取りアクセスのみが必要です。名前を含むブランチ(例:assessment-john.doe)。私たちのアセスメントセンターには、500人のユーザーとパスワードのリストがあり、各候補者にこのリストの資格情報セットを提供します。

ショートバージョン:

  • 通常のユーザ(例えばtobichris)があります:
    • (理想的にのみをマスターする&書き込みアクセスを読んで、私は、gitのを設定するには、それをたい)assessment-から始まるブランチへの読み取りアクセス
  • ユーザー(例: assessment-1assessment-2)を有する:
    • は、ユーザ(例えば、assessment-1
    • 他のブランチへのないアクセスと同じ 名前を持つ分岐へ
    • 読み取り/書き込みアクセスをマスターへの読み取りアクセス。

私たちは、これを必要とdoesntのタスクとしてgitlabまたはGitHubのような任意のバージョン管理GUIサーバーなし無地のgit(およびSSH)を使用します。

EDIT:明確にするには:読み取り制御は、書き込み制御の方がずっと重要です。 (マスターを除く)。

+0

そのリポジトリにユーザーのプッシュに中央リポジトリにブランチをプッシュフックを書きます'git'自体は" users "や" access control "について何も知らない。 Gitlabのようなツールはあなたの問題を完全に解決するでしょうし、あなたがsshキーを管理する以外にそれを気に入らなければWeb UIとやりとりする必要はありません。 – larsks

+0

しかし、独自のソリューションを開発したいのであれば、ずっと前に私は答え[ここ](https://stackoverflow.com/a/28402532/147356)と[ここ](https://stackoverflow.com/a)を書きました。/8248062/147356)と[こちら](https://stackoverflow.com/a/40454688/147356)のような質問に対応しています。 – larsks

+0

私たちはgitlabエンタープライズを弊社で使用していますが、そのブランチ保護は企業の機能の一部だと思います。エンタープライズgitlabを使用して数百の評価候補を実行するには、エンタープライズ・サーバーに多数のユーザー・ライセンスが必要です。私もsshキーを設定したくありません。私はユーザーのためにできるだけ簡単にしたいと思いますが、他の人がそれをコピーできるようにコードを公表するべきではありません。 – Tobi

答えて

2

gitの組み込み機能でこれらの要件を満たすことはできません。アクセス制御はホスティング環境に委ねられます。

署名付きコミットとフックを使用して承認ルールに違反するプッシュを拒否することで、ある程度の書き込み権限を偽ることができますが、あなたが求めているものではない可能性があります。制限された読み取り許可がすぐに出ます。基本的に別のreposを使用する必要があります。

アクセス制御を実行するために独自のサーバーを作成することも、既存のサーバーを使用することもできます。既存のホストソフトウェアのキャラクタライゼーション(主な機能はGUIを提供することを意味する)は間違っています。あなたのタスクがアクセス制御を必要としないというあなたの主張は、アクセス制御がタスクの一部であるという観点からは間違っています。

私が今何をやったか
0

  • クローン中央リポジトリ
  • ストリップユーザー
  • コピー、リポジトリ内のいくつかのフックのためのブランチ名を持つマスター
  • リネームマスター以外の任意の支店を
  • 正しいユーザーにリポジトリへの読み取りアクセスを許可する
  • 特定のユーザーを実行できるグループにユーザーを追加する別のユーザー
  • としてsudoを介したCRIPTは、タスクがあるため、*権限を管理するためのアプリケーションのいくつかの並べ替えを必要としない*
関連する問題