【问题标题】:How to restrict Gerrit access to only a few Google email addresses?如何限制 Gerrit 只能访问几个 Google 电子邮件地址?
【发布时间】:2014-09-02 08:16:39
【问题描述】:

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

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

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

我首先创建了一个运行 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 服务器访问,需要哪些配置步骤?

【问题讨论】:

    标签: authentication authorization gerrit


    【解决方案1】:

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

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

    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)
    

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

    [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 实例中注册的其他用户将被视为不受信任 - 您可以前往 设置进行验证-> 身份 并调查特定电子邮件地址的状态 列。因此,此类用户将无法看到任何具有非公共访问权限的项目。当您在本示例中使用 user2@gmail.com 进行身份验证时,就会发生这种情况。

    另请注意,最好在评论中的 trustedOpenId 条目之后输入电子邮件地址(; 符号是评论),以便列表可维护。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多