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 ...
随机推荐
- Centos 7 通过 targz 文件安装 Elastic Search 服务
区别于通过发行版自带的仓库, 介绍如何通过 targz 文件安装 Elastic Search 服务, 使用的 Linux 为 Centos 7 下载 https://www.elastic.co/d ...
- JVM监控工具jstat使用介绍
jstat 是 Java 自带的一个命令行工具,用于监控 JVM 运行时的状态信息.它可以通过以下格式的命令来调用: jstat [option] <vmid> [<interval ...
- 寻找一个好的工程师不只是看ta的刷题能力
面试一个工程师,该考察什么能力,如果单单背诵一些概念.题目好像是在考察记忆力,最终项目里还是得解决实际问题.但解决实际问题的能力真的不易考察,导致大部分公司面试前期都只能通过试题来筛选求职者,到面试后 ...
- 自然语言处理 Paddle NLP - 任务式对话系统-理论
什么是任务型对话: 任务型:用于帮助用户完成某领域的特定任务,例如订餐.查天气.订票等 闲聊型:也称作开放域对话系统,目标是让用户持续的参与到交互过程,提供情感陪伴 问答型:提供知识满足,具体类型比较 ...
- php屏蔽非正常访问和检测用户登录检测
<?phpnamespace Manage\Controller;use Common\Controller\DefaultController;class BaseController ext ...
- 如何通过Java读取到Windows系统日志evtx文件
近日公司有个需求,需要调研如何使用Java来读取Windows日志文件(类型:应用程序,安全,Setup,系统) 一番调研以后,在仅使用java的基础上系统日志文件似乎不太可能(就个人调研结果来看), ...
- 一张图告诉你如何提高 API 性能
API 性能是指一个 API 在执行其功能时的效率和性能表现,通常用于衡量 API 的响应时间.吞吐量.可伸缩性和稳定性等方面的表现. API 性能的指标包括: 响应时间: API 的响应时间是指从发 ...
- Centos7安装Python3.x
一.修改yum源 查看Centos发行版本 cat /etc/redhat-release 换阿里云yum源 备份原始yum源 mv /etc/yum.repos.d/CentOS-Base.repo ...
- Linux chroot的关联操作 mount --bind
假设新的根文件系统已经挂载到 /mnt mount --bind /dev /mnt/dev/ mount --bind /sys /mnt/sys/ mount --bind /proc /mnt/ ...
- shell 并发
#!/bin/bash # 设置并发数 thread_num=3 # 创建管道文件 FIFO=/tmp/$$-FIFO mkfifo $FIFO # 使用句柄打开管道文件 exec 1000<& ...