Just a sidenote. You can also use Gerrit for your needs:
Gerrit Code Review
First it seems that Gerrit is used for Code review, but you can actually use it also for managing users and give them good defined permissions. You can bypass code-review(trough access controls) and use it just for managing projects and ssh-keys. Gerrit has a really strong access control mechanism:
Gerrit Access Controls
You can restrict to push for any branches, tags or anything you can imagine that is defined in the access controls document.