首页 > 其他分享 >SonarQube系列-了解认证&授权配置,基于权限模块批量授权

SonarQube系列-了解认证&授权配置,基于权限模块批量授权

时间:2023-11-11 20:37:39浏览次数:32  
标签:项目 SonarQube 用户 管理员 模块 授权 权限 模板

参考文档:docs.sonarqube.org/latest/inst…

概述

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

  • 认证和授权机制
  • 强制身份认证
  • 委派认证

除此之外,还可在group/user级别配置:

  • 查看一个已存在的项目
  • 访问项目的源代码
  • 管理一个项目(设置排除模式,调整该项目的插件配置等)
  • 管理质量配置,质量阈,实例…

安全性的另一个方面是对密码等设置进行加密。SonarQube提供了一种内置的机制来加密设置。

认证

docs.sonarsource.com/sonarqube/l…匿名用户是否可以浏览SonarQube实例?当然不行!那就需要强制用户认证。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube

强制用户身份验证可防止匿名用户通过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属性的值来传递。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_正则表达式_02


默认管理员凭据

当安装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

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_API_03


相关配置


强制要求必须登录SonarQube

用管理员账号登录SonarQube,打开Administration > Configuration > General Settings > Security,开启Force user authentication,点击Save保存生效。

开启该选项后,不允许匿名运行mvn sonar:sonar代码扫描,必须提供SonarQube Token。


SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube_04


修改默认的项目可见性为private

用管理员账号登录SonarQube,打开Administration > Projects > Management,修改Default visibility of new projects为private。

这样新建项目后,只有该项目的授权用户才能看到该项目的代码。
对已有的项目,打开项目级别的Adminstration > Permissions,手工修改项目可见性。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_API_05

去掉Anyone组的权限

用管理员账号登录SonarQube,打开Administration > Security > Global Permissions,去掉Anyone组的所有权限。

最新版本(v10.2.1.78527)AnyOne组已废弃

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube_06


去掉Project Creator的权限

用管理员账号登录SonarQube,打开Administration > Security > Permission Templates,打开Default template,去掉Project Creator的所有权限。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube_07

生成用户Token

用该用户登录SonarQube,打开MyAccount > Security,来生成一个Token。

在按项目作多租户隔离的场景,需要为每个项目在SonarQube上创建一个用户,并使用该用户的Token来作代码扫描。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_API_08

设置项目账号权限

用管理员账号登录SonarQube,打开项目级别的Adminstration > Permissions,选择Users,输入用户名称查询,然后设置该用户权限。

在按项目作多租户隔离的场景,需要为每个项目在SonarQube上创建一个用户,并设置只有该用户才有相应权限。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_正则表达式_09

默认权限的权限模板

docs.sonarsource.com/sonarqube/l…

SonarQube附带默认权限模板,该模板在创建项目,项目组合或应用程序自动授予特定组的特定权限。管理员可以编辑此模板。

使用sonar扫描新项目后,如果要做角色管理,可以在sonarqube控制台为项目指定权限模板以分配角色权限,但是每次扫描新项目都通过手动添加,特别是项目多的情况下,显然是不方便的。

sonarqube在创建新权限模板的时候,提供了Project Key Pattern(项目标识模式)功能,可以通过其正则表达式将权限模板自动授予到project_key符合的项目

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_正则表达式_10

  1. 选择“配置-权限-权限模板”创建新模板

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_ci_11

  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.

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_正则表达式_12

特别注意:

  1. 先要配置好permission template, 设置哪些组可以有哪些权限,比如设置组 ABC可以访问所有ABC 为前缀的项目。
  2. 然后进行代码扫描,生成的项目名称必须匹配 ABC 前缀
  3. 最后,组ABC 的成员才能访问 ABC 前缀的扫描项目,因为提前已经建立了权限绑定关系。

如果之前没有进行这样的设置,过去创建的扫描项目不会默认继承这样的关系,必须重新手动进行授权。

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube_13


官方解释:

虽然模板可以在项目创建后应用,但将包含 Creators 权限的模板应用于现有项目/项目组合/应用程序不会向项目的原始创建者授予相关权限,因为该关联未存储。**
请注意,项目和权限模板之间没有关系,这意味着:

  • 将权限模板应用于项目后,可以修改项目的权限。
  • 修改权限模板时,不会更改任何项目权限。

3. 为模板设置用户/用户组的角色权限

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_ci_14

  1. 设置完成,看到权限模板里已经有了新模板

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_ci_15

权限模板设置完成后,新扫描的项目,只要project key匹配正则规则的,就会自动分配角色权限了,不需要再手动通过“配置-项目-项目管理”设置了

SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube_16


SonarQube系列-了解认证&授权配置,基于权限模块批量授权_SonarQube_17

标签:项目,SonarQube,用户,管理员,模块,授权,权限,模板
From: https://blog.51cto.com/devopsingroad/8319395

相关文章

  • ansible的常用的模块
    ansible查看模块的帮助的命令ansible-doc模块的名字一:file模块  二:user模块  三:shell模块 四:yum_repository模块 五:yum模块 ......
  • SmargGBD(GB28181设备接入模块)如何对接wvp-gb28181-pro
    技术背景我们在对接SmartGBD(GB28181设备接入模块)的时候,处理常规的海康大华宇视等国标平台外,有些公司会选择wvp-gb28181-pro。众所周知,WEBVIDEOPLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇......
  • OpenCV编译(支持CUDA模块)
    OpenCV编译(支持CUDA模块)1、编译环境windows11VisualStudio2022cmake2.8OpenCV4.82、前置条件预安装CUDAToolkit11、VisualStudio2022、cmake2.83、编译OpenCV在github中找到opencv4.8版本的contrib,并解压到opencv-4.8.0目录下。 启动camke配置如下图,配......
  • Linux 中 安装perl模块 以及 确认
     001、系统信息  002、安装CPAN  003、以JSON为例,在未安装状态下查看  004、利用cpan-iJSON安装该模块  005、查看JSON安装状态  参考:01、https://www.onitroad.com/jc/linux/faq/find-out-what-perl-modules-already-installed-on-my-system.html......
  • logging模块进行格式化输出
    importlogging#创建logger实例logger=logging.getLogger('example')logger.setLevel(logging.INFO)#创建格式化器formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')#创建控制台处理器console_handler=logging.Stre......
  • pyinstaller模块
    pyinstaller将python文件打包成.exe的文件:一、安装:pipinstallPyinstaller国内安装受网络影响可能比较慢或失败,可以尝试使用国内的镜像,如:pipinstallPyinstaller-ihttps://pypi.douban.com/simplepipinstallPyinstaller-ihttps://mirrors.aliyun.com/pypi/simple/如果安装......
  • 多模块打包包含不同module的静态资源
     <profiles><profile><id>package</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId&......
  • Pandas模块
    1Pandas基础1.1数据结构1.1.1Series一维#创建#1.列表创建>>>pd.Series(['a','b','c','d'])0a1b2c3ddtype:object#2.设置索引index>>>pd.Series(['a','b','c',......
  • 个人UI组件库如何适配各种模块规范以及支持按需加载组件和发布包到包管理市场公网或者
    相关代码地址:https://github.com/13476075014/lcc-ui从指令上去看具体实现逻辑yarninitLibsJs用指令把所有组件都让入一个js文件对外暴露,作为umd规范的入口文件yarnbuild:umdjs用webpack输出上面文件,作为umd规范的yarninitEsmsJs用指令把所有组件都让入一个js文件......
  • 多模块springboot项目打jar包 没有主清单属性
    说明:一个多模块的项目 两个子Module 一个core 一个server。java8的环境 |--XChome(pom.xmlxchome的 父级)--|--xc-core(pom.xmlxc-core的子级)--|--xc-server(pom.xmlxc-server的子级) xc-core:主要定义一些常量类、工具类、业务部分(controllerservice......