方案:如何列出 Jira 中授予用户的所有权限
文章目录
- 概述
- 解决方案
- REST API
- 数据库
概述
为了进行故障排除或某些管理任务,我们可能想知道给定用户拥有的所有权限。
Jira 通过其 UI 提供权限助手和类似工具,但对于所有权限的列表,我们只能通过作为用户本身进行身份验证的 REST API 请求或通过数据库来获取它。
解决方案
此处提供的两个解决方案都包含嵌套组(假设在实例中配置了支持嵌套组)
REST API
当前用户本身,或者通过 Switch User 类似功能,模拟用户。然后在浏览器中打开此 URL
https://Jira-base-URL/rest/api/2/mypermissions
数据库
POSTGRES、MYSQL 和 MSSQL
WITH RECURSIVE nested AS
(select m.* from cwd_membership m where m.membership_type = 'GROUP_USER'and m.lower_child_name = 'charlie'UNION ALLselect m.* from cwd_membership mjoin nested on m.lower_child_name = nested.lower_parent_namewhere m.membership_type = 'GROUP_GROUP'
),
uperm AS
(select distinct 'User' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", u.lower_user_name as "Source"from nested njoin cwd_user u on u.lower_user_name = n.lower_child_namejoin app_user a on a.lower_user_name = u.lower_user_namejoin schemepermissions sp on sp.perm_type = 'user' and sp.perm_parameter = a.user_keyjoin permissionscheme s on s.id = sp.schemejoin nodeassociation na on na.sink_node_id = s.id and na.sink_node_entity = 'PermissionScheme'join project p on p.id = na.source_node_idwhere n.membership_type = 'GROUP_USER'
),
gperm AS
(select distinct 'Group' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", sp.perm_parameter as "Source"from nested njoin schemepermissions sp on sp.perm_type = 'group' and sp.perm_parameter = n.lower_parent_namejoin permissionscheme s on s.id = sp.schemejoin nodeassociation na on na.sink_node_id = s.id and na.sink_node_entity = 'PermissionScheme'join project p on p.id = na.source_node_id
),
projrole AS
(select distinct 'Role' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", concat('Role "', concat(pr.name, concat('": ', pra.roletypeparameter))) as "Source"from nested njoin projectroleactor pra on ((pra.roletype = 'atlassian-group-role-actor' and lower(pra.roletypeparameter) = n.lower_parent_name) or (pra.roletype = 'atlassian-user-role-actor' and lower(pra.roletypeparameter) = n.lower_child_name))join projectrole pr on pr.id = pra.projectroleidjoin schemepermissions sp on sp.perm_type = 'projectrole' and sp.perm_parameter = concat(pr.id, '')join project p on p.id = pra.pid
),
approle AS
(select distinct 'License' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", l.group_id as "Source"from nested njoin licenserolesgroup l on lower(l.group_id) = n.lower_parent_namejoin schemepermissions sp on sp.perm_type = 'applicationRole'join permissionscheme s on s.id = sp.schemejoin nodeassociation na on na.sink_node_id = s.id and na.sink_node_entity = 'PermissionScheme'join project p on p.id = na.source_node_id
),
globalperm AS
(select distinct 'Global' as "Type", gp.permission as "Permission", null as "Project Key", null as "Source"from globalpermissionentry gp join nested on gp.group_id = nested.lower_parent_name
),
permissions AS
(
select * from uperm
UNION
select * from gperm
UNION
select * from globalperm
UNION
select * from projrole
UNION
select * from approle
)
select "Project Key", "Permission", "Type", "Source" from permissions
-- where ("Project Key" in ('S1', 'S2', 'S3') or "Project Key" is null)
order by "Project Key" asc, "Permission" asc;
ORACLE
WITH nested AS
(
SELECT m.* FROM cwd_membership m
START WITH m.membership_type = 'GROUP_USER' AND m.lower_child_name = 'charlie'CONNECT BY PRIOR m.lower_parent_name = m.lower_child_name AND m.membership_type = 'GROUP_GROUP'
),
uperm AS
(select distinct 'User' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", u.lower_user_name as "Source"from nested njoin cwd_user u on u.lower_user_name = n.lower_child_namejoin app_user a on a.lower_user_name = u.lower_user_namejoin schemepermissions sp on sp.perm_type = 'user' and sp.perm_parameter = a.user_keyjoin permissionscheme s on s.id = sp.schemejoin nodeassociation na on na.sink_node_id = s.id and na.sink_node_entity = 'PermissionScheme'join project p on p.id = na.source_node_idwhere n.membership_type = 'GROUP_USER'
),
gperm AS
(select distinct 'Group' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", sp.perm_parameter as "Source"from nested njoin schemepermissions sp on sp.perm_type = 'group' and sp.perm_parameter = n.lower_parent_namejoin permissionscheme s on s.id = sp.schemejoin nodeassociation na on na.sink_node_id = s.id and na.sink_node_entity = 'PermissionScheme'join project p on p.id = na.source_node_id
),
projrole AS
(select distinct 'Role' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", concat('Role "', concat(pr.name, concat('": ', pra.roletypeparameter))) as "Source"from nested njoin projectroleactor pra on ((pra.roletype = 'atlassian-group-role-actor' and lower(pra.roletypeparameter) = n.lower_parent_name) or (pra.roletype = 'atlassian-user-role-actor' and lower(pra.roletypeparameter) = n.lower_child_name))join projectrole pr on pr.id = pra.projectroleidjoin schemepermissions sp on sp.perm_type = 'projectrole' and sp.perm_parameter = concat(pr.id, '')join project p on p.id = pra.pid
),
approle AS
(select distinct 'License' as "Type", sp.permission_key as "Permission", p.pkey as "Project Key", l.group_id as "Source"from nested njoin licenserolesgroup l on lower(l.group_id) = n.lower_parent_namejoin schemepermissions sp on sp.perm_type = 'applicationRole'join permissionscheme s on s.id = sp.schemejoin nodeassociation na on na.sink_node_id = s.id and na.sink_node_entity = 'PermissionScheme'join project p on p.id = na.source_node_id
),
globalperm AS
(select distinct 'Global' as "Type", gp.permission as "Permission", null as "Project Key", null as "Source"from globalpermissionentry gp join nested on gp.group_id = nested.lower_parent_name
),
permissions AS
(
select * from uperm
UNION
select * from gperm
UNION
select * from globalperm
UNION
select * from projrole
UNION
select * from approle
)
select "Project Key", "Permission", "Type", "Source" from permissions
-- where ("Project Key" in ('S1', 'S2', 'S3') or "Project Key" is null)
order by "Project Key" asc, "Permission" asc;
我们可以根据需要更改第 4 行的用户名,并过滤生成的项目(在从底部开始的第二行)。
输出样例
Project Key | Permission | Type | Source
-------------+--------------------------------------+---------+---------------------S1 | ADD_COMMENTS | License | jira-software-usersS1 | ASSIGNABLE_USER | License | jira-software-usersS1 | ASSIGNABLE_USER | User | charlieS1 | ASSIGN_ISSUES | License | jira-software-usersS1 | BROWSE_PROJECTS | License | jira-software-usersS1 | BROWSE_PROJECTS | Group | group-cS1 | CLOSE_ISSUES | License | jira-software-users
相关文章:
方案:如何列出 Jira 中授予用户的所有权限
文章目录 概述解决方案REST API数据库 概述 为了进行故障排除或某些管理任务,我们可能想知道给定用户拥有的所有权限。 Jira 通过其 UI 提供权限助手和类似工具,但对于所有权限的列表,我们只能通过作为用户本身进行身份验证的 REST API 请求…...
Flutter-Web从0到部署上线(实践+埋坑)
本文字数:7743字 预计阅读时间:60分钟 01 前言 首先说明一下,这篇文章是给具备Flutter开发经验的客户端同学看的。Flutter 的诞生虽然来自 Google 的 Chrome 团队,但大家都知道 Flutter 最先支持的平台是 Android 和 iOSÿ…...
Redis键值设计
文章目录 1.优雅的key2.拒绝BigKey2.1.什么是BigKey2.2.BigKey的危害2.3.如何发现BigKey2.4.如何删除BigKey 3.恰当的数据类型 1.优雅的key 2.拒绝BigKey 2.1.什么是BigKey 2.2.BigKey的危害 2.3.如何发现BigKey scan扫描示例代码 final static int STR_MAX_LEN 10 * 1024;fi…...
CSS 下载进度条
<template><view class=btn>下载中</view></template><script></script><style>/* 设置整个页面的样式 */body {width: 100vw; /* 页面宽度为视口宽度 */background: #000000; /* 背景颜色为白色 */display: flex; /* 使用 flex…...
风力发电防雷监测浪涌保护器的应用解决方案
风力发电是一种利用风能转化为电能的可再生能源技术,具有清洁、环保、低碳的优点,是应对全球气候变化和能源危机的重要途径之一。然而,风力发电也面临着一些技术和经济的挑战,其中之一就是雷电的威胁。由于风力发电机组通常位于高…...
开发安全之:Database access control
Overview 如果没有适当的 access control,就会执行一个包含用户控制主键的 SQL 指令,从而允许攻击者访问未经授权的记录。 Details Database access control 错误在以下情况下发生: 1. 数据从一个不可信赖的数据源进入程序。 2. 这个数据用…...
VMware Vsphere 日志:用户 dcui@127.0.01已以vMware-client/6.5.0 的身份登录
一、事件截图: 二、解决办法 原因: 三、解决办法 1.开启锁定模式 2.操作 1、从清单中选择您的 ESXi 主机,然后转至管理 > 设置 > 安全配置文件,然后单击锁定模式的编辑按钮 2、在打开的锁定模式窗口中,选中启…...
全面了解网络性能监测:从哪些方面进行监测?
目录 摘要 引言 CPU内存监控 磁盘监控 网络监控 GPU监控 帧率监控 总结 摘要 本文介绍了网络性能监测的重要性,并详细介绍了一款名为克魔助手的应用开发工具,该工具提供了丰富的性能监控功能,包括CPU、内存、磁盘、网络等指标的实时监…...
智能分析网关V4基于AI视频智能分析技术的周界安全防范方案
一、背景分析 随着科技的不断进步,AI视频智能检测技术已经成为周界安全防范的一种重要手段。A智能分析网关V4基于深度学习和计算机视觉技术,可以通过多种AI周界防范算法,实时、精准地监测人员入侵行为,及时发现异常情况并发出警报…...
小红书再不赚钱就晚了
2023年12月,小红书COO柯南公开表态,五年前,自己当时还非常坚定地表态小红书不要做电商。“那时候,我是站在社区的视角,但现在,我开始负责电商业务了。”此前,小红书已经整合了电商业务与直播业务…...
思腾云计算三大业务:算力租赁、服务器托管、思腾公有云
1、算力租赁业务 裸金属服务器就是传统物理服务器的升级版,也可以说是介于物理服务器和云主机之间的一种形态。既具备传统物理服务器卓越性能,又具备云主机一样的便捷管理平台,兼具了双方的优点,在满足核心应用场景对高性能及稳定…...
HarmonyOS之sqlite数据库的使用
从API Version 9开始,鸿蒙开发中sqlite使用新接口ohos.data.relationalStore 但是 relationalStore在 getRdbStore操作时,在预览模式运行或者远程模拟器运行都会报错,导致无法使用。查了一圈说只有在真机上可以正常使用,因此这里…...
网络抓包命令tcpdump
网络抓包命令tcpdump "tcpdump -i any -nn -vv tcp port 9095 -s 0 -w dump.cap"命令是一个网络抓包命令,用于捕获流经指定网络接口的TCP协议、端口号为9095的网络数据包,并将这些数据包写入到名为"dump.cap"的文件中。 具体参数解…...
iTMSTransporter上传ipa文件
背景 uni-app云打包之后生成的ipa包需要上传到app store上,applicationloader和香蕉云编都收费,转用iTMSTransporter上传 环境:mac 第1步 选择安装目录 xcode-select --switch /Applications/Xcode.app/Contents/Developer第2步 下载 xcru…...
2024华数杯国际数学建模A题思路模型详解
2024华数杯国际数学建模A题思路论文:1.17上午第一时间持续更新,详细内容见文末名片 建立一个模型来描述放射性废水在海水中的扩散速率和方向,考虑到涉及的物理过程和环境因素的复杂性,我们通常会使用一个简化的扩散模型作为起点…...
JS-定时器-间歇函数(一)
• 定时器函数介绍 定时器函数在开发中的使用场景 网页中经常会需要一种功能:每隔一段时间需要自动执行一段代码,不需要我们手动去触发例如:网页中的倒计时要实现这种需求,需要定时器函数定时器函数有两种,今天我先讲…...
AttributeError: module ‘openai‘ has no attribute ‘error‘解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
每日一记:一个windows的bat脚本工具集
最近在工作上遇到要校验文件的问题,例如,下载了一个文件之后,通过查看文件的md5来校验文件是否完整,这个动作在linux上很简单,但在windows上也不难,可以通过 certutil 命令实现,该命令通常可用于…...
Apache Zeppelin学习记录2
Apache Zeppelin学习记录2 文章目录 Apache Zeppelin学习记录2前言一、基础调用二、带参数调用1.代码块要增加一行z.textbox("folder_path", "input")2.读取result 总结 前言 上一章讲了如何使用zeppelin来接入python,本节我们来看看如何使用R…...
[原创][R语言]股票分析实战[11]:读取股票数据文件的细节: 提取目标列数据
[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
