【问题标题】:How to restrict SonarQube Execute Analysis permission per project?如何限制每个项目的 SonarQube 执行分析权限?
【发布时间】:2016-12-05 06:43:29
【问题描述】:

我们正在尝试设置我们的 SonarQube 服务器 (5.6),以便任何人都可以使用 Sonar Scanner 运行声纳分析并将结果发布到 SonarQube。但是,我们希望限制用户仅针对某些项目密钥发布分析,以防止弄乱现有的项目历史记录。

我们已经对权限设置进行了很多尝试。假设我们有项目密钥 SomeProjectKey 和一个组 SomeGroup。所有分析均以 SomeGroup 成员的用户身份发布。 SomeGroup 被授予 SomeProjectKey 的所有权限,但我们尝试添加和删除的执行分析除外。结果可以在下面的矩阵中看到:

根据这些结果,在项目级别授予执行分析 (EA) 似乎没有任何效果。需要有全球 EA 才能发布分析。然而,这使得拥有授权全球 EA 的用户能够发布所有项目的分析。我们还没有找到任何方法来限制每个项目的发布。项目级别的 EA 权限似乎完全多余。

有什么方法可以让用户只发布特定项目的分析?更准确地说,有没有办法让用户在不授予全局 EA 的情况下发布分析?

感谢您的建议


编辑: 我将 SonarQube 日志级别转为调试,但仍然没有任何线索。授予全局执行分析后,一切正常,日志显示:

2016.08.19 17:13:42 DEBUG web[http] POST /api/ce/submit?projectKey=zz.yyy:xxx-exp&projectName=xxx&projectBranch=xxx | time=4279ms

2016.08.19 17:13:43 INFO  ce[o.s.s.c.t.CeWorkerCallableImpl] Execute task | project=zz.yyy:xxx-exp&projectName=xxx&projectBranch=xxx | type=REPORT | id=AVajXWLL944EkuNYd4rD | submitter=pavel.sindelar

2016.08.19 17:13:48 INFO  ce[o.s.s.c.t.CeWorkerCallableImpl] Executed task | project=zz.yyy:xxx-exp&projectName=xxx&projectBranch=xxx | type=REPORT | id=AVajXWLL944EkuNYd4rD | submitter=pavel.sindelar | time=4456ms

在项目级别授予执行分析(授予所有项目权限)后,响应正文为 403 HTTP 状态代码:

{"errors":[{"msg":"Insufficient privileges"}]}

SonarQube 日志不包含任何错误信息,只有收到 POST 请求的行,与分析发布无关,没有错误,没有任何内容,即使在跟踪级别:

2016.08.22 10:15:57 DEBUG web[http] POST /api/ce/submit?projectKey=project=zz.yyy:xxx-exp&projectName=xxx&projectBranch=xxx | time=564ms

我们将尝试更新到 6.0。

【问题讨论】:

    标签: permissions sonarqube


    【解决方案1】:

    您可能遗漏了一些东西并混合了一些权限,因为您想要实现的正是 SonarQube 5.4 中使用SONAR-7174 所做的。

    以下场景有效:

    1. 您创建一个项目
    2. 您将此项目的所有权限(包括“执行分析”)授予用户 Foo
    3. 您使用用户 Foo 的登录名/密码(或更好:使用令牌)运行分析
    4. 分析推送处理成功

    【讨论】:

    • 抱歉回复晚了,我一直在度假。您描述的场景不适用于我们的案例。我将信息添加到原始问题中。
    猜你喜欢
    • 2018-02-26
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2011-08-09
    相关资源
    最近更新 更多