如何限制Gerrit仅访问几个Google电子邮件地址?

时间:2014-09-02 08:16:40

标签: authentication authorization gerrit

我希望只有少数人拥有Google电子邮件地址,才能在我们的Gerrit服务器上进行源代码审查。应阻止对Gerrit服务器的所有其他访问。

这些Google电子邮件地址发布在我们工作办公室的公共网站上,因此电子邮件地址本身不会保密。

我想避免使用LDAP进行Gerrit配置,因为它增加了太多的复杂性(在我看来)。

我首先创建了一个运行Ubuntu 14.04的Amazon EC2实例。然后,我将Amazon EC2防火墙配置为阻止除了本地台式计算机的IP地址之外的所有实例访问。当然,这需要在Gerrit服务器配置正确后再进行更改。允许的用户应该能够从世界上任何地方访问Gerrit服务器,以便以后不会有IP地址限制。

Gerrit配置现在看起来像这样:

$ grep -A1 auth ~/gerrit/etc/gerrit.config
[auth]
    type = OPENID

Google似乎有deprecated its OpenID 2.0 service因此我无法直接使用我的Google电子邮件地址登录Gerrit网络界面。但我可以先登录Verisingslabs OpenID provider网站登录。

只允许少数Google电子邮件地址进行读写访问但阻止对Gerrit服务器的所有其他类型访问所需的配置步骤是什么?

1 个答案:

答案 0 :(得分:2)

如果您只想允许某些人,请先创建一个用户组(例如 developers )。只允许该组和forbid anonymous access访问您的项目。让人们注册他们的OpenId提供商(正如您所提到的,直接使用Google不再可能)。然后将它们添加到您创建的用户组中,这样您就可以直接从Web界面管理每个项目的权限,而无需更改任何后端配置。

您可能会在此结束,但如果您想加强用户验证(即避免意外地向特权组添加某些帐户),请查看auth.trustedOpenId选项并调查您的用户' Gerrit数据库中account_external_ids表中的OpenId标识。

mysql> SELECT email_address,external_id FROM account_external_ids;
+---------------------------+----------------------------------------------------------------------------------+
| email_address             | external_id                                                                      |
+---------------------------+----------------------------------------------------------------------------------+
| user1@gmail.com           | https://www.google.com/accounts/o8/id?id=AItOawlLlop2Tsff-minfwxCQDD6iUznIr7XX6A |
| user2@gmail.com           | https://www.google.com/accounts/o8/id?id=AItOawlSyAHBwdEojjUUdsmVx7UElthSGRby4ho |
| user3@gmail.com           | https://www.google.com/accounts/o8/id?id=AItOawmiLGmvJIvx6jiPrNQ8NgovAqsA0NNq985 |
+---------------------------+----------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

然后只在您的~/gerrit/etc/gerrit.config文件中添加您想要的ID:

[auth]
    type = OPENID
    trustedOpenId = https://www.google.com/accounts/o8/id?id=AItOawlLlop2Tsff-minfwxCQDD6iUznIr7XX6A ; user1@gmail.com
    trustedOpenId = https://www.google.com/accounts/o8/id?id=AItOawmiLGmvJIvx6jiPrNQ8NgovAqsA0NNq985 ; user3@gmail.com

在上述配置中,只允许user1@gmail.comuser3@gmail.com拥有超出授予匿名用户和注册用户组的权限的权限。

请注意,在您创建第一个非默认trustedOpenId条目后,在Gerrit实例中注册的其他用户将被视为 Untrusted - 您可以通过转到设置 - >身份并调查特定电子邮件地址的状态列。因此,此类用户将无法看到具有非公共访问权限的任何项目。当您在演示的示例中使用user2@gmail.com进行身份验证时,会发生这种情况。

Gerrit Untrusted Identity

另请注意,在评论trustedOpenId符号为注释后;条目后输入电子邮件地址是个好主意,因此列表是可维护的。

最后要记住的是在gerrit配置文件发生任何更改后重新启动Gerrit实例。