SonarQube系列-認證&授權的配置

參考文檔:https://docs.sonarqube.org/latest/instance-administration/security/

概述

SonarQube具有許多全局安全功能:

  • 認證和授權機制
  • 強制身份認證
  • 委派認證

除此之外,還可在group/user級別配置:

  • 查看一個已存在的項目
  • 訪問項目的源代碼
  • 管理一個項目(設置排除模式,調整該項目的插件配置等)
  • 管理質量配置,質量閾,實例…

安全性的另一個方面是對密碼等設置進行加密。SonarQube提供了一種內置的機制來加密設置。

認證

https://docs.sonarsource.com/sonarqube/latest/instance-administration/security/#authentication
匿名用戶是否可以瀏覽SonarQube實例?當然不行!那就需要強制用戶認證。

image.png

強制用戶身份驗證可防止匿名用戶通過Web API訪問Sonar Qube UI或項目數據。一些特定的只讀Web API,包括提示身份驗證所需的API,仍然可以匿名使用。
禁用此設置可能會使實例面臨安全風險。

認證機制

可通過多種方式來管理認證機制:

  • 通過SonarQube內建的user/group數據庫
  • 通過外部程序(如LDAP)
  • 通過HTTP headers

Sonar用戶

當你在SonarQube數據庫中創建用戶時,他將被視爲本地用戶,並且針對SonarQube自己的user/group數據庫進行身份認證,而不是通過任何外部工具。
默認情況下,admin是本地賬戶。
同樣,所有非本地(non-local)賬戶將僅針對外部工具進行身份認證。

管理員可以管理所有用戶的Tokens——創建和刪除。一旦創建,Token就是運行分析所需的唯一憑證,作爲sonar.login屬性的值來傳遞。
image.png

默認管理員憑據

當安裝SonarQube時,會自動創建具有管理系統權限的默認用戶: user: admin/passwd: admin

恢復管理員訪問權限

如果你修改了管理員密碼,但又忘記了:

USE sonar;

update users set crypted_password ='$2a$12$uCkkXmhW5ThVK8mpBvnXOOJRLd64LJeHTeCkSuB3lfaR2N0AYBaSi',
salt=null, 
hash_method='BCRYPT'
where login ='admin'

如果您刪除了管理員並隨後鎖定了具有全局管理權限的其他用戶:

insert into user_roles(uuid, user_uuid, role)
values ('random-uuid', (select uuid from users where login='mylogin'), 'admin');

授權

在SonarQube中實現授權的方式是非常標準的。可以根據需要創建任意數量的用戶和用戶組。然後,可以將用戶附加到(或不附加)到(多個)組。然後向組和/或用戶授予(多個)權限。這些權限授予對項目、服務和功能的訪問權限。
對不同組、不同用於僅限權限分配,以訪問不同的資源。

  • User
  • Group
  • Global Permissions
    • Administer System
    • Administer Quality Profiles
    • Administer Quality Gates
    • Execute Analysis
    • Create Projects
    • Create Applications
    • Create Portfolios
  • Project Permissions
    • Public and Private
      • Administer Issues
      • Administer Security Hotspots
      • Administer
      • Execute Analysis
    • Private
      • Browse
      • See Source Code

image.png

相關配置

強制要求必須登錄SonarQube

用管理員賬號登錄SonarQube,打開Administration > Configuration > General Settings > Security,開啓Force user authentication,點擊Save保存生效。
開啓該選項後,不允許匿名運行mvn sonar:sonar代碼掃描,必須提供SonarQube Token。
image.png

修改默認的項目可見性爲private

用管理員賬號登錄SonarQube,打開Administration > Projects > Management,修改Default visibility of new projects爲private。

這樣新建項目後,只有該項目的授權用戶才能看到該項目的代碼。
對已有的項目,打開項目級別的Adminstration > Permissions,手工修改項目可見性。


image.png

去掉Anyone組的權限

用管理員賬號登錄SonarQube,打開Administration > Security > Global Permissions,去掉Anyone組的所有權限。
最新版本(v10.2.1.78527)AnyOne組已廢棄
image.png

去掉Project Creator的權限

用管理員賬號登錄SonarQube,打開Administration > Security > Permission Templates,打開Default template,去掉Project Creator的所有權限。

image.png

生成用戶Token

用該用戶登錄SonarQube,打開MyAccount > Security,來生成一個Token。
在按項目作多租戶隔離的場景,需要爲每個項目在SonarQube上創建一個用戶,並使用該用戶的Token來作代碼掃描。
image.png

設置項目賬號權限

用管理員賬號登錄SonarQube,打開項目級別的Adminstration > Permissions,選擇Users,輸入用戶名稱查詢,然後設置該用戶權限。

在按項目作多租戶隔離的場景,需要爲每個項目在SonarQube上創建一個用戶,並設置只有該用戶纔有相應權限。
image.png

默認權限的權限模板

https://docs.sonarsource.com/sonarqube/latest/instance-administration/security/#permission-templates-for-default-permissions

SonarQube附帶默認權限模板,該模板在創建項目,項目組合或應用程序自動授予特定組的特定權限。管理員可以編輯此模板。

使用sonar掃描新項目後,如果要做角色管理,可以在sonarqube控制檯爲項目指定權限模板以分配角色權限,但是每次掃描新項目都通過手動添加,特別是項目多的情況下,顯然是不方便的。

sonarqube在創建新權限模板的時候,提供了Project Key Pattern(項目標識模式)功能,可以通過其正則表達式將權限模板自動授予到project_key符合的項目

image.png

  1. 選擇“配置-權限-權限模板”創建新模板

image.png

  1. 設置名稱、描述、項目標識模式(使用sonarqube的正則表達式)

.* 表示匹配0到多個字符(ps:這裏與常見的正則表達式的模糊匹配(*)方式不同,[a,b] 匹配域內任意字符,

如:

.*test.* 可以匹配project key爲:citestpipe,ci-test-pipe等形式的項目
.*[-,_]test.* 可以匹配project key爲:ci-test-pipe,ci_test等形式的項目

use the "Create" button on Administration > Security > Permission Templates. It is possible to provide a Project key pattern.
image.png

特別注意:

  1. 先要配置好permission template, 設置哪些組可以有哪些權限,比如設置組 ABC可以訪問所有ABC 爲前綴的項目。
  2. 然後進行代碼掃描,生成的項目名稱必須匹配 ABC 前綴
  3. 最後,組ABC 的成員才能訪問 ABC 前綴的掃描項目,因爲提前已經建立了權限綁定關係。

如果之前沒有進行這樣的設置,過去創建的掃描項目不會默認繼承這樣的關係,必須重新手動進行授權。
image.png

官方解釋:

雖然模板可以在項目創建後應用,但將包含 Creators 權限的模板應用於現有項目/項目組合/應用程序不會向項目的原始創建者授予相關權限,因爲該關聯未存儲。**

請注意,項目和權限模板之間沒有關係,這意味着:

  • 將權限模板應用於項目後,可以修改項目的權限。
  • 修改權限模板時,不會更改任何項目權限。

3. 爲模板設置用戶/用戶組的角色權限
image.png

  1. 設置完成,看到權限模板裏已經有了新模板

image.png

權限模板設置完成後,新掃描的項目,只要project key匹配正則規則的,就會自動分配角色權限了,不需要再手動通過“配置-項目-項目管理”設置了
image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章