ここに私の要件があります:
- Company1、Team1、および Admins の 3 つの TFS グループがあります。管理者は Team1 のサブセットです。Team1 は Company1 のサブセットです。
- 私の Git リポジトリには、マスター ブランチと、0 個以上の追加ブランチが含まれています。
- 管理者は何でもできます。Team1 はコードをすべてのブランチにプルおよびプッシュできます。ただし、マスターにプッシュすることはできません。Company1 はすべてのブランチからコードをプルできますが、プッシュはまったくできません。
これが私が試したことです。
アプローチ 1
- リポジトリ レベル:
- Company1 には、許可されている読み取り以外のすべてのアクセス許可が設定されていません。
- Team1 には、「ブランチの作成」と「読み取り」を除くすべての権限が設定されていません。
- 管理者にはすべての権限が許可されています。
- ブランチ レベルで、マスターの場合:
- Team1 にはすべての権限がありません。
- 管理者は、ALLOW を継承するすべての権限を持っています
- ブランチ レベルで、非マスター ブランチの場合:
- Team1 にはすべての権限が許可されています
- 管理者は、ALLOW を継承するすべての権限を持っています
問題: これは既存のブランチに対しては完全に機能しますが、チーム 1 のメンバーが新しいブランチを作成すると、そのメンバーが許可されている場合、コードをそこにプッシュすることはできません。ブランチを使用する前に、チーム 1 のアクセス許可を手動で ALLOW に設定する必要があります。
アプローチ 2
注: 管理者と Company1 のアクセス許可は、以前のアプローチから変更されていません。
- リポジトリ レベル:
- Team1 はすべてに ALLOW が設定されています
- ブランチ レベルで、マスターの場合:
- Team1 はすべてに DENY が設定されています
- ブランチ レベルで、非マスター ブランチの場合:
- Team1 はすべてに対して ALLOW セットを継承しています
問題: このアプローチは上記の問題を解決しますが、管理者は Team1 のサブセットであるため、管理者はマスターへのアクセスも拒否されます (拒否は許可より優先されます)。そのため、コードを master にプッシュする必要があるたびに、パーミッションを一時的に変更して自分自身がそうできるようにし、終了したら元に戻す必要があります。
質問: 両方の問題を解決する権限を構成する方法はありますか?つまり、手動で介入する必要はありませんか?
私は 1 つの解決策を知っています。2 つの新しいグループを作成し、それらを通常とマスターと呼びましょう。グループには Team1 の個別のメンバーが含まれます (両方のチーム メンバーは存在しません)。これにより、管理者が Team1 グループにも存在するアプローチ 2 に関連する問題が解決されます。ここでの問題は、IT によって管理されている 1 つのグループではなく、2 つのグループを管理していることです。そのため、まだ時折手作業があります。
これは利用可能な最良のソリューションですか?
注: 私はこれらすべてに不慣れで、このタスクを膝の上に落としてしまったので、用語の誤りはご容赦ください。