图数据库实践 - 如何将图数据库应用于身份与访问管理

news2024/12/23 13:46:08

导读

目前,随着云计算和大数据的快速发展,身份与访问管理(Identity and Access Management,IAM)系统变得比以往任何时候都更加重要。因为涉密信息可能在几分钟内就被破解,网络犯罪分子仅需要一个员工账号,即可入侵企业系统,造成大量数据泄露。在此背景下,企业与组织纷纷引入IAM系统来保护其IT基础设施和数据资源。身份与访问管理系统的主要功能包括身份认证、授权管理、访问控制和审计跟踪等。其目的是帮助企业管理用户身份和权限,实现不同人员对不同资源的安全访问,避免因为操作不当而引发的越权风险。此外,随着企业规模的扩大和应用场景的多元化,现代化的IAM系统还需要支持企业组织架构的临时组合和调整,并能精确分析人员调配、业务调整、资源重组对企业发展带来的影响。

据市场研究公司Mordor Intelligence的报告显示,全球IAM市场规模预计将从2020年的241亿美元增长至2025年的426亿美元,年复合增长率达到12.2%。而在未来,受网络攻击和数据泄露等安全事件的影响,以及企业数字化转型和云计算应用的推进,IAM行业市场规模将呈现持续增长势头。但随着企业规模的扩大、IT系统数量和复杂度的增加,身份与访问管理系统变得越来越难以维护和管理。

在这里插入图片描述
当前,企业大多采用基于角色的访问控制(RBAC,Role-based Access Control)模型来开发身份与访问管理系统。RBAC是常见的访问控制模型,它是以角色为中心来管理权限,其基本思想为将用户分配到一个或多个角色上,而不是直接授予单独的权限。例如,管理员创建“经理”和“普通员工”两个角色,并赋予角色不同权限。管理员将“经理”角色分配给公司管理层成员,将“普通员工”角色分配给其他员工。这样,用户只能访问他们角色下的资源和信息,系统从而实现有效的访问控制。

图技术需求

在上述传统的身份与访问管理系统中,各种的成员信息、角色信息、权限信息、组织架构信息被存储在不同信息表中,在权限调用时需要进行跨表关联查询。而当今企业的业务模式复杂、组织架构灵活,通常面临跨地域、跨部门、跨权限的临时调整,系统查询时往往性能会十分缓慢,导致生产效率低下,严重影响用户体验。图数据库专注于数据间的关联关系,天然的善于处理此类实体层次多、关联查询复杂、模型动态变化的数据据,基于上述背景,将企业员工、角色、资源等数据抽象成实体,将资源的访问规则、实体间关联关系抽象成边,构建出身份与访问管理图谱,实现灵活动态的权限和访问控制。

以Galaxybase图数据库构建身份与访问管理图谱的基本原理图如下。

在这里插入图片描述

图模型构建

构建角色、职员、部门、资源的互联关系,可根据实际情况进行展开。部门按级别划分,一个部门由不同的岗位构成,不同部门对资源拥有不同的权限。职员可以继承所属部门的权限,管理者可以继承所管理成员的权限,同时面对临时情况,可以赋予特定角色特批权限。将角色、职员、部门、资源设置为点,角色与职员、角色与角色、角色与部门、部门与资源间的依赖关系设置为边。接下来使用Galaxybase图数据库来创建数据模型,点类型和点属性如下表所示。

点类型属性
职员工号、姓名、状态、年龄等
角色角色ID、角色名称等
二级部门二级部门ID、部门名称等
一级部门一级部门ID、部门名称等
资源资源编号、资源类型等

边类型、起始点类型、终止点类型如下表所示。

边类型起始点类型终止点类型
拥有职员角色
管理角色角色
归属角色二级部门
归属角色一级部门
一级权限一级部门资源
特批权限角色资源
可读不可写二级部门资源
可读可写二级部门资源

身份与访问管理模型如下图所示。
在这里插入图片描述
更多图模型构建方式请参考图构建 。

图谱应用 - 访问控制

职员在工作的过程中,可能会接触到个人权限之外的任务,面临这种情况,系统应该根据实际需求灵活赋予所需权限,及时推进项目的运行。举例,职员CL02正在填写项目申请,需要调用涉敏资源A,而其上级领导职员CL01对涉敏资源A拥有权限,职员CL02可向上级领导职员CL01申请,系统特批权限,避免特权调用情况。上文所建图模型中,我们将进行探查。

查询结果

如下图所示,获取对涉敏资源A拥有权限角色,发现该角色为CEO,由职员CL01拥有,同时该角色管理技术文案(职员CL02),将敏感资源审批给其管理的职员,并在日志里记录。通过实时图计算与图分析处理,能够自下而上回溯结果,发现权限边界,将敏感资源由高级别角色给予下级角色,弥补现有方案直接授予特权的不足,提高数据安全性,减少降低企业数据泄露风险。
在这里插入图片描述

图谱应用 - 资源调用

由于企业面临的业务是动态变化的,在身份与访问管理图谱中,应当根据项目需求灵活调整组织架构,扩大可以调用的资源范围。举例,企业临时新增社会招聘项目,需要协调市场部与人事部资源,查看所能调配的资源边界。上文所建图模型中,我们将进行探查。

查询结果

如下图所示,合并点即为临时新增的项目小组,通过两部门资源协调可得知,临时项目对资源01、资源05拥有可读可写权限,对资源03、资源04拥有可读不可写权限。通过图计算与图分析处理,能够高效的返回所需结果,并将结果呈现在图上,弥补现有方案对跨部门之间的资源协同效率不足的问题,有效避免权限边界的情况出现,实现新增项目的高效运行。

在这里插入图片描述

结语

以上仅为身份与访问管理图谱的简单展示,通过上述两个例子,可以看到图数据模型能根据不同的业务需求灵活定义、创建、修改和管理多层级用户、群组、角色和系统权限,实现精细、灵活的访问控制。同时,图数据库允许自顶向下和自底向上的IAM查询,可快速处理访问请求,明确特定用户的访问权限、厘清对特定资源有访问权限的用户,实时、动态更新因人员变动、组织架构调整、策略变更等引起的访问权限变化,为企业设备和数据提供安全的用户访问。

后续,我们会在创邻科技微信公众号及官网发布更多图数据库热点应用场景和前沿资讯,并将可复现的数据集、建模方法、查询语句进行公开,欢迎对图数据库感兴趣的同学关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【敬伟ps教程】蒙版和通道的基础知识

文章目录 通道通道面板 Alpha 通道通道和选区的关系编辑 Alpha通道原色通道的利用 图层蒙版编辑图层蒙版快速蒙版 通道 通道是图像文件的一种颜色数据信息存储形式,它与图像文件的颜色模式密切相关 多个分色通道(如图:红R、绿G、蓝B)叠加在一起可以组成一幅具有颜…

通过Python的PIL库给图片添加马赛克

文章目录 前言一、Pillow是什么?二、安装PIL库三、查看PIL库版本四、使用方法1.引入库2.定义图片路径3.打开需要打马赛克的图片4.获取图片尺寸5.创建一个新的图片对象6.定义块的宽高7.循环遍历图片中的每个块进行处理8.保存马赛克图片9.效果 总结 前言 大家好&#…

《Redis-Windows平台下Redis集群的使用》

文章目录 Redis主从集群1.集群结构2.准备实例和配置3.启动4.开启主从关系5.测试Redis主从集群 win-redisx64下载地址 :https://github.com/microsoftarchive/redis/releases 1.集群结构 我们搭建的主从集群结构如图: 共包含三个节点,一个主节点,两个从节点。 这里我们…

内网远程桌面控制软件推荐

远程控制企业内部网中的计算机(没有连接外网),如果控制端和被控端都处在该内网,您可以按照以下步骤操作: 1、确保两台计算机都连接到同一个局域网 确保要控制的计算机和要启动远程控制的计算机连接到企业内的同一个局…

python知识点100篇系列(11)-浮点数四舍五入的两种方法

Python 的四舍五入主要有两种方式; 内置函数 round(number[, ndigits])使用 Decimal先说结论: 如果是对金额的四舍五入,不建议使用内置函数,原因如下: 使用round方法: python3中的round函数对浮点数进行四舍五入的规则: 参数ndigits 不为 0 的情况如果保留位数的后一位…

瑞云科技助力番职院打造虚拟数字人,探索职业教育创新之路

3月24-25日,教育部高等学校科学研究发展中心主办、广州番禺职业技术学院承办的2022-2023年职业教育示范性虚拟仿真实训基地建设工作推进会在中国广州举行。会议旨在指导各院校建好用好管好虚拟仿真示范实训基地,以数字化、网络化、智能化赋能职业教育高质…

SeaTunnel本地运行以及kafka发送到redis说明

下载 Seatunnel2.3.1源码 Idea中的目录结构 编译 通过maven进行代码编译 编译命令 mvn clean package -pl seatunnel-dist -am -Dmaven.test.skiptrue 编译单个模块命令 mvn clean package -pl seatunnel-examples/seatunnel-engine-examples -am -Dmaven.test.skiptrue …

@开源爱好者,字节跳动这项技术,正式宣布开源了

告诉大家一个好消息,字节跳动的云原生数据仓库 ByConity 正式宣布开源了。 ByConity 是一个云原生数据仓库,由字节跳动数据平台团队在国际知名开源数据库管理系统 ClickHouse 社区版本基础上开发。 早期,字节跳动的数据存储使用的是 ClickHou…

【Axure教程】通过文本框维护下拉列表选项

下拉列表(Dropdown List)是一种常见的用户界面元素,用于提供一组选项供用户选择。它通常以一个展开的列表形式出现,用户可以点击或选择列表中的一个选项。一般来说,他的选项值是由系统代码组成的,所以一般是…

leecode每日一题 1080 根到叶路径上的不足节点

题目描述 给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 &#xff0…

接口测试神器, ApiKit ,亲测好用

自己关注的公众号比较多,之前有收到过有关 ApiKit 的文章,自己也是大致看看,还没有用过它! 最近看到比较多有关 ApiKit 的文章,所以自己就花了点时间去研究它,使用完后发现确实比Postman功能更强大,界面也…

Redis7实战加面试题-基础篇(Redis复制(replica),Redis哨兵(sentinel),Redis集群(cluster))

Redis复制(replica) 就是主从复制,master以写为主,Slave以读为主。当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。 能干嘛:读写分离,容灾恢复,数据备份,水平扩容支撑高并发…

【阿里云】阿里云OSS对象存储— 开通OSS服务、搭建OSS环境、快速入门

目录 一、开通OSS服务 二、搭建OSS环境 1、创建Bucket存储空间 2. 创建文件夹上传图片 3. RAM 访问控制 三、快速入门 1.下载SDK 2.创建存储空间[可选] 3.上传图片 一、开通OSS服务 二、搭建OSS环境 1、创建Bucket存储空间 选择 Bucket列表,进行Bucket创建…

LeetCode54 螺旋矩阵

给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例1 输入: matrix [[1,2,3],[4,5,6],[7,8,9] 输出: [1,2,3,6,9,8,7,4,5] 示例2 输入: matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出…

新冠又临“涨潮”期,看我AI显身手

#疫情#北京时间5月24日,北京市卫生健康委发布2023年第20周疫情周报。报告显示,2023年第20周全市共报告法定传染病14种25544例,死亡1例。报告病例数居前5位的病种依次为:新型冠状病毒感染、其它感染性腹泻病、流行性感冒、肺结核和病毒性肝炎&…

chatgpt赋能python:Python的shutil模块:探讨删除文件和目录的方法

Python的shutil模块:探讨删除文件和目录的方法 Python是一种高级编程语言,拥有大量的标准库,其中shutil模块是处理文件的一种非常强大的模块。shutil提供了多种方式来复制、移动和删除文件和目录。 在本文中,我们将探讨Python的…

英特尔13代桌面CPU平台安装ubuntu20.04LTS记录

安装环境一: i7-13700K 华硕Z790-P 16X2GB内存 华硕 TUF 3070 O8G安装环境二: i5-13400 华硕B760M-A D4 8x2GB内存 UHD730核显安装系统: ubuntu20.04LTS(首先用光驱安装失败,后面用U盘更换ubuntu22.04.2LTS成功) 因为…

用工业显微镜来观察生物细胞

尝试用工业显微镜来观察生物细胞,成像质量不是很好,但感觉还是能看一下。专业生物用显微镜真的太贵了。 软件:JCameraPro可以在这下载:www.jfirmware.com 摄像机:OPLENIC Cam的某个OEM版。 OPLENIC Cam很多OEM版&am…

SocketException: 由于目标计算机积极拒绝,无法连接。

本文只有解决思路没有具体方法(因为错误不一定是因为这个)。 在做.NETWebService的时候遇到了个问题,这是在用本地提供WebService服务以后出现的错误。 我的解决办法是把连接的服务删了在重连就好了,挺奇怪的。在网上查的方法各式…

Vue + Axios - HTTP POST 请求示例 (外网地址)

从 npm 安装 axios 使用npm CLI&#xff1a;npm install axios 使用yarn CLI&#xff1a;yarn add axios app.vue文件: <template><Postrequest/> </template><script> import Postrequest from ./components/Postrequest.vue; export default {nam…