2

私の組織では、1 つのリポジトリに対して 150 人のユーザーの公開鍵を gitolite に追加するのは膨大な作業であり、それを管理するには追加のリソースが必要になることがわかりました。この種のレポは約20あります。承認のためにユーザーのsshキーを追加する以外に他のオプションはありますか? http プロトコルを使用して git リポジトリにアクセスしています。ありがとう

4

1 に答える 1

0

「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 キーは必要ありません。

于 2013-10-01T09:46:40.187 に答える