SonarQube系列-认证&授权的配置
参考文档:https://docs.sonarqube.org/latest/instance-administration/security/
概述
SonarQube具有许多全局安全功能:
- 认证和授权机制
- 强制身份认证
- 委派认证
除此之外,还可在group/user级别配置:
- 查看一个已存在的项目
- 访问项目的源代码
- 管理一个项目(设置排除模式,调整该项目的插件配置等)
- 管理质量配置,质量阈,实例…
安全性的另一个方面是对密码等设置进行加密。SonarQube提供了一种内置的机制来加密设置。
认证
https://docs.sonarsource.com/sonarqube/latest/instance-administration/security/#authentication
匿名用户是否可以浏览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时,会自动创建具有管理系统权限的默认用户: 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
- Public and Private
相关配置
强制要求必须登录SonarQube
用管理员账号登录SonarQube,打开Administration > Configuration > General Settings > Security,开启Force user authentication,点击Save保存生效。
开启该选项后,不允许匿名运行mvn sonar:sonar代码扫描,必须提供SonarQube Token。
修改默认的项目可见性为private
用管理员账号登录SonarQube,打开Administration > Projects > Management,修改Default visibility of new projects为private。
这样新建项目后,只有该项目的授权用户才能看到该项目的代码。
对已有的项目,打开项目级别的Adminstration > Permissions,手工修改项目可见性。
去掉Anyone组的权限
用管理员账号登录SonarQube,打开Administration > Security > Global Permissions,去掉Anyone组的所有权限。
最新版本(v10.2.1.78527)AnyOne组已废弃
去掉Project Creator的权限
用管理员账号登录SonarQube,打开Administration > Security > Permission Templates,打开Default template,去掉Project Creator的所有权限。
生成用户Token
用该用户登录SonarQube,打开MyAccount > Security,来生成一个Token。
在按项目作多租户隔离的场景,需要为每个项目在SonarQube上创建一个用户,并使用该用户的Token来作代码扫描。
设置项目账号权限
用管理员账号登录SonarQube,打开项目级别的Adminstration > Permissions,选择Users,输入用户名称查询,然后设置该用户权限。
在按项目作多租户隔离的场景,需要为每个项目在SonarQube上创建一个用户,并设置只有该用户才有相应权限。
默认权限的权限模板
SonarQube附带默认权限模板,该模板在创建项目,项目组合或应用程序自动授予特定组的特定权限。管理员可以编辑此模板。
使用sonar扫描新项目后,如果要做角色管理,可以在sonarqube控制台为项目指定权限模板以分配角色权限,但是每次扫描新项目都通过手动添加,特别是项目多的情况下,显然是不方便的。
sonarqube在创建新权限模板的时候,提供了Project Key Pattern(项目标识模式)功能,可以通过其正则表达式将权限模板自动授予到project_key符合的项目
- 选择“配置-权限-权限模板”创建新模板
- 设置名称、描述、项目标识模式(使用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.
特别注意:
- 先要配置好permission template, 设置哪些组可以有哪些权限,比如设置组 ABC可以访问所有ABC 为前缀的项目。
- 然后进行代码扫描,生成的项目名称必须匹配 ABC 前缀
- 最后,组ABC 的成员才能访问 ABC 前缀的扫描项目,因为提前已经建立了权限绑定关系。
如果之前没有进行这样的设置,过去创建的扫描项目不会默认继承这样的关系,必须重新手动进行授权。
官方解释:
虽然模板可以在项目创建后应用,但将包含 Creators 权限的模板应用于现有项目/项目组合/应用程序不会向项目的原始创建者授予相关权限,因为该关联未存储。**
请注意,项目和权限模板之间没有关系,这意味着:
- 将权限模板应用于项目后,可以修改项目的权限。
- 修改权限模板时,不会更改任何项目权限。
3. 为模板设置用户/用户组的角色权限
- 设置完成,看到权限模板里已经有了新模板
权限模板设置完成后,新扫描的项目,只要project key匹配正则规则的,就会自动分配角色权限了,不需要再手动通过“配置-项目-项目管理”设置了
SonarQube系列-认证&授权的配置的更多相关文章
- 基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
一.前言 回顾:基于.NetCore3.1系列 -- 认证授权方案之授权揭秘 (上篇) 在上一篇中,主要讲解了授权在配置方面的源码,从添加授权配置开始,我们引入了需要的授权配置选项,而不同的授权要求构 ...
- 基于.NetCore3.1系列 ——认证授权方案之Swagger加锁
一.前言 在之前的使用Swagger做Api文档中,我们已经使用Swagger进行开发接口文档,以及更加方便的使用.这一转换,让更多的接口可以以通俗易懂的方式展现给开发人员.而在后续的内容中,为了对a ...
- 【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置
介绍 系列目录:[NET CORE微服务一条龙应用]开始篇与目录 在微服务的应用中,统一的认证授权是必不可少的组件,本文将介绍微服务中网关和子服务如何使用统一的权限认证 主要介绍内容为: 1.子服务如 ...
- 微服务系列之授权认证(二) identity server 4
1.简介 IdentityServer4 是为ASP.NET Core系列量身打造的一款基于 OpenID Connect 和 OAuth 2.0 认证授权框架. 官方文档:https://ident ...
- Spring Cloud Security OAuth2.0 认证授权系列(一) 基础概念
世界上最快的捷径,就是脚踏实地,本文已收录[架构技术专栏]关注这个喜欢分享的地方. 前序 最近想搞下基于Spring Cloud的认证授权平台,总体想法是可以对服务间授权,想做一个基于Agent 的无 ...
- 微服务系列之授权认证(一) OAuth 2.0 和 OpenID Connect
1.传统架构的授权认证 传统应用架构,用户使用账号密码登录后,可以使用前端cookie存储登录状态,也可以使用后端session方式存储登录状态,小应用这么做其实很高效实用,当应用需要横向扩展时,就需 ...
- 微服务系列之授权认证(三) JWT
1.JWT简介 官方定义:JWT是JSON Web Token的缩写,JSON Web Token是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,可以将各方之间的信息作为JSON ...
- SonarQube系列一、Linux安装与部署
[前言] 随着项目团队规模日益壮大,项目代码量也越来越多.且不说团队成员编码水平层次不齐,即便是老手,也难免因为代码量的增加和任务的繁重而忽略代码的质量,最终的问题便是bug的增多和代码债务的堆积.因 ...
- Spring Cloud Alibaba 实战(十一) - Spring Cloud认证授权
欢迎关注全是干货的技术公众号:JavaEdge 本文主要内容: 如何实现用户认证与授权? 实现的三种方案,全部是通过画图的方式讲解.以及三种方案的对比 最后根据方案改造Gateway和扩展Feign ...
- [Spring Cloud实战 | 第六篇:Spring Cloud Gateway+Spring Security OAuth2+JWT实现微服务统一认证授权
一. 前言 本篇实战案例基于 youlai-mall 项目.项目使用的是当前主流和最新版本的技术和解决方案,自己不会太多华丽的言辞去描述,只希望能勾起大家对编程的一点喜欢.所以有兴趣的朋友可以进入 g ...
随机推荐
- 实时光线追踪(3)Ray Casting
目录 硬件光追(Hardware Ray Tracing) 加速结构(Acceleration Structure,AS) AS 策略 Ray Tracing Pipeline Ray Generat ...
- MySql InnoDB 存储引擎表优化
一.InnoDB 表存储优化 1.OPTIMIZE TABLE 适时的使用 OPTIMIZE TABLE 语句来重组表,压缩浪费的表空间.这是在其它优化技术不可用的情况下最直接的方法.OPTIMIZE ...
- kafka学习之三_信创CPU下单节点kafka性能测试验证
kafka学习之三_信创CPU下单节点kafka性能测试验证 背景 前面学习了 3controller+5broker 的集群部署模式. 晚上想着能够验证一下国产机器的性能. 但是国产机器上面的设备有 ...
- tvm-多线程代码生成和运行
本文链接 https://www.cnblogs.com/wanger-sjtu/p/16818492.html 调用链 tvm搜索算子在需要多线程运行的算子,是在codegen阶段时插入TVMBac ...
- [ARM 汇编]高级部分—系统控制协处理器—3.2.3 控制寄存器的读写操作
在这一部分,我们将学习如何使用ARM汇编指令在系统控制协处理器(CP15)的控制寄存器上执行读写操作.我们将通过实例来讲解如何使用MCR(Move to Coprocessor Register)和M ...
- Centos7配置fstp
Centos7配置fstp 1 创建用户 useradd -m -d /data/sftp_data/user1 -s /usr/sbin/nologin -g sftp user1 -m:自动创 ...
- 掌握把“烂”SQL牢牢关进笼子里的密钥
摘要:本文通过5个部分内容帮助开发者快速了解GaussDB(DWS) 资源管理机制,让数仓过载烦恼不再,把"烂"SQL牢牢关进笼子里. 本文分享自华为云社区<直播回顾 | 掌 ...
- ASP.NET MVC4 学习笔记-4
添加验证--Adding Validation 现在我们要为程序增加数据验证.如果不增加数据验证的话,我们的用户可能会输入错误的数据或者提交一个空白的表格. 在MVC应用程序中,数据验证通常要在域模型 ...
- 音视频开发进阶|第四讲:音频自动增益控制 AGC
在之前的文章中,我们已经接触了两个重要的音频前处理模块 – 回声消除 AEC 和噪声抑制 ANS,它们分别解决了 RTC 场景下的回声.噪声问题,极大提升了用户的体验.至此,音频前处理三剑客中,就只剩 ...
- #Powerbi 10分钟,理解 Rankx 排名函数
一:本文思维导图及示例数据图 1.1思维导图 1.2 示例数据图 二:度量值示例 2.1 函数简介 RANKX 首先为的每一行计值表达式,将结果临时存储为一个值列表.然后在当前筛选上下文中计值,将得 ...