私の組織では、1 つのリポジトリに対して 150 人のユーザーの公開鍵を gitolite に追加するのは膨大な作業であり、それを管理するには追加のリソースが必要になることがわかりました。この種のレポは約20あります。承認のためにユーザーのsshキーを追加する以外に他のオプションはありますか? http プロトコルを使用して git リポジトリにアクセスしています。ありがとう
1 に答える
「https アクセス」は、LDAP 経由で認証できることを意味します。
これは、ユーザーの ldap グループを照会するように gitolite を構成できることも意味します。
Gitolite のグループは非常に便利ですが、一部の組織ではすでに LDAP ストアに同様の (または十分な) 情報があります。
Gitolite は、少しの助けを借りて、その情報を利用することができます。
ユーザー名を指定して、LDAP ストアにクエリを実行し、ユーザーがメンバーであるグループのスペース区切りのリストを返すプログラムを作成します。次に、次のよう
に、このプログラムへのフル パスを というrc
変数に入れます。GROUPLIST_PGM
GROUPLIST_PGM => '/home/git/bin/ldap-query-groups',
これらのグループ名を gitolite のアクセス ルールで使用できるようになりました。これは、ユーザーがこれらのグループと、conf ファイルでユーザーを追加した通常の gitolite グループのメンバーであるためです。
注意: 「なぜ/どのようにしてこのユーザーがこのレポにアクセスしたのか?」という監査証跡が必要な場合は、プログラムで独自のログを記録する必要があります。適切に解決します。Gitolite はクエリの結果をログに記録しません。ログを必要としない人にとっては非常に無駄になるからです。
私自身のスクリプト:
#!/bin/bash
export H="/path/to/home"
export D=3
aluser="${1}"
if [[ "${aluser}" == "" ]] ; then exit 0 ; fi
afuser="${H}/gitolite/ldap/${aluser}"
afuserl="${afuser}.log"
if [[ "${aluser}" =~ ^[0-9]+$ && ! -e "${afuser}" ]] ; then
echo "Potential Company user, checking group..." >> "${afuserl}"
lport="1234"
if [[ "${lport#@}" == "${lport}" && ! -e "${afluser}" ]] ; then
l=$(ldapsearch -H ldaps://ldap.server:1234 -x -D "CN=abcd,OU=Accounts,DC=company" -w xxxx -b "OU=People,DC=company" -s sub -a always -z 1000 "(cn~=${aluser})" "memberof" | grep -i "memberof")
echo "LDAP='${l}'" >> a
if [[ "${l#*CN=}" != "${l}" ]] ; then
names=""
while read -r line; do
if [[ "${line#*CN=}" != "${line}" ]] ; then
aname="${line#*CN=}"
aname="${aname%%,*}"
if [[ "${names}" != "" ]] ; then names="${names} " ; fi
names="${names}${aname}"
fi
done <<< "${l}"
echo "${names}" >> "${afuser}"
fi
fi
fi
if [[ -e "${afuser}" ]]; then
echo "REMOTE_USER_GROUPS='$(cat ${afuser})' for user '${aluser}'" >> "${afuserl}"
cat ${afuser}
fi
もう ssh キーは必要ありません。