【知识科普】常见的访问控制策略

关于访问控制的一些实践

    • 概述
      • 一、基于角色的访问控制(RBAC)
      • 二、访问控制列表(ACL)
      • 三、基于属性的访问控制(ABAC)
      • 四、最小权限原则
      • 五、责任分离原则
    • 细说RBAC
      • RBAC详细说明及例子
        • 一、RBAC概述
        • 二、RBAC的核心概念
        • 三、RBAC的优势
        • 四、RBAC的级别
        • 五、RBAC的完整例子
    • 基于RBAC的表设计
      • 1. 用户表(Users)
      • 2. 角色表(Roles)
      • 3. 权限表(Permissions/Menus)
      • 4. 用户角色关联表(User_Roles)
      • 5. 角色权限关联表(Role_Permissions)
      • 示例说明
    • 细说ACL
      • 一、ACL介绍
      • 二、ACL的主要作用
      • 三、ACL的分类
      • 四、ACL的工作原理
      • 五、ACL配置示例

概述

角色权限控制是确保系统安全性和数据完整性的关键机制。以下是几种常见的角色权限控制策略,并分别举例说明:

一、基于角色的访问控制(RBAC)

RBAC是目前最为流行的权限控制策略之一。它将权限与角色相关联,然后将角色分配给用户。这样,用户的权限管理就转化为对角色的管理,从而简化了权限管理的复杂性。

举例

在一个企业信息管理系统中,可以定义不同的角色,如管理员、编辑者、查看者等。管理员角色拥有对系统的完全访问权限,可以创建、修改和删除用户、角色和权限。编辑者角色则只能编辑系统中的数据,但不能删除或创建新的用户或角色。查看者角色只能查看系统中的数据,不能进行任何修改或删除操作。

二、访问控制列表(ACL)

ACL是一种更细粒度的权限控制策略。它直接定义了用户对具体资源的操作权限,可以针对每个资源和操作进行细粒度的控制。

举例

在一个文件共享系统中,可以为每个文件或文件夹设置访问控制列表。例如,某个文件夹的ACL可以规定只有特定用户或角色才能访问、修改或删除该文件夹中的文件。这样,即使某个用户拥有对其他文件夹的完全访问权限,也无法访问或修改这个受保护的文件夹。

三、基于属性的访问控制(ABAC)

ABAC是一种更加灵活的权限控制策略。它根据用户的属性(如职位、部门、等级等)和资源的属性(如类型、敏感度等)来决定用户的访问权限。

举例

在一个医疗信息管理系统中,可以根据医生的职位和科室来设置其访问权限。例如,只有心血管科的医生才能访问心血管科患者的病历信息,而其他科室的医生则无法访问。同时,高级医生可能拥有更多的访问权限,如查看患者的详细检查结果和诊断报告,而初级医生则只能查看基本的病历信息。

四、最小权限原则

最小权限原则要求每个用户或角色只拥有完成其工作所必需的最小权限集合。这样可以减少权限滥用和误操作的风险,提高系统的安全性。

举例

在一个电子商务网站中,可以为用户设置不同的角色和权限。例如,客服人员只能查看和修改用户的订单信息,但不能访问用户的支付信息或进行退款操作。这样,即使客服人员误操作或恶意攻击,也不会对用户的支付信息造成泄露或损失。

五、责任分离原则

责任分离原则要求系统中的任务应该分散到不同的角色中,以防止权力过于集中。通过责任分离,可以确保系统中的关键操作由多个角色共同完成,从而避免单个角色拥有过多的权力。

举例

在一个财务管理系统中,可以将财务审批流程分解为多个步骤,每个步骤由不同的角色来完成。例如,采购部门可以提交采购申请,财务部门可以审核采购申请并支付款项,而审计部门则可以监督整个审批流程并检查是否存在违规行为。这样,即使某个角色存在不当行为,也无法单独完成整个审批流程,从而保证了系统的安全性和可靠性。

综上所述,角色权限控制的策略有多种类型,每种策略都有其独特的优点和适用场景。在选择角色权限控制策略时,需要根据系统的业务需求、安全要求和管理复杂性进行综合考虑和权衡。

细说RBAC

RBAC详细说明及例子

一、RBAC概述

基于角色的访问控制(Role-Based Access Control,简称RBAC)是一种访问控制机制,通过为用户分配角色来管理权限。RBAC模型使得权限的管理更加简便高效,尤其适用于复杂的系统架构。RBAC的核心思想是“用户-角色-权限”的授权模型,即一个用户拥有若干角色,一个角色拥有若干的权限。

二、RBAC的核心概念
  1. 用户(User):请求访问系统资源的实体,可以是人、程序或设备。
  2. 角色(Role):一组相关权限的集合,用于执行特定的工作职能。角色是权限的载体,将权限赋予角色,再将角色分配给用户。
  3. 权限(Permission):允许或禁止用户执行特定操作的规则。

在RBAC中,用户与角色之间、角色与权限之间一般是多对多的关系。

三、RBAC的优势
  1. 模块化:RBAC将权限管理模块化,简化了权限管理的复杂性。
  2. 易维护性:通过管理角色和权限的关系,而不必直接管理用户与权限的关系,使得权限管理更加易于维护。
  3. 安全性:RBAC提供了更细粒度的权限控制,提高了系统的安全性。
四、RBAC的级别

RBAC根据权限的复杂程度,可分为不同的级别,如RBAC0、RBAC1、RBAC2、RBAC3和RBAC4。其中,RBAC0是基础,RBAC1、RBAC2、RBAC3、RBAC4都是以RBAC0为基础的升级。

  1. RBAC0:RBAC模型中最基本的模型,用户与角色可为多对一或多对多的关系,当一个用户的角色为多对多时,当前用户的权限是多个角色的并集。
  2. RBAC1:在RBAC0的基础上,加入了角色继承的概念。一个角色可以分为多个级别,高级别的角色可继承低级别角色的权限,并可额外赋予权限。
  3. RBAC2:在RBAC0的基础上,加入了角色限制的概念。当用户可以存在多个角色时,多个角色之间存在限制条件,如静态职责分离(SSD)和动态职责分离(DSD)。
  4. RBAC3:既有角色分层,也包括可以增加各种限制。
  5. RBAC4:RBAC2和RBAC3的合集。
五、RBAC的完整例子

以下是一个基于RBAC的企业管理系统的例子:

  1. 系统背景

    • 企业需要管理员工信息、客户信息、订单信息等。
    • 系统中存在多种角色,如管理员、销售经理、财务经理、市场经理等。
  2. 角色定义

    • 管理员:拥有对系统的完全访问权限,可以创建、修改和删除用户、角色和权限。
    • 销售经理:可以访问和管理销售相关的信息,如客户信息、订单信息等。
    • 财务经理:可以访问和管理财务相关的信息,如财务报表、付款信息等。
    • 市场经理:可以访问和管理市场相关的信息,如市场调研、广告活动等。
  3. 权限定义

    • 页面权限:定义哪些角色可以访问哪些页面。例如,销售经理可以访问销售相关的页面,而财务经理则不能。
    • 操作权限:定义哪些角色可以对哪些数据进行操作。例如,销售经理可以新增、删除和修改客户信息和订单信息,而市场经理则只能查看这些信息。
    • 数据权限:定义哪些角色可以查看哪些范围的数据。例如,销售经理只能查看自己负责的销售区域的数据,而管理员则可以查看整个公司的数据。
  4. 角色分配

    • 将定义好的角色分配给用户。例如,将销售经理角色分配给负责销售的员工,将财务经理角色分配给负责财务的员工。
  5. 权限管理

    • 通过管理角色和权限的关系来管理用户的权限。例如,如果需要给某个用户增加新的权限,只需将该用户添加到相应的角色中即可。
  6. 实际应用

    • 当用户登录系统时,系统会根据用户的角色来显示相应的页面和操作按钮。
    • 用户只能访问和操作自己拥有权限的页面和数据。

通过RBAC模型,企业可以更加灵活地管理员工的权限,提高系统的安全性和管理效率。同时,RBAC模型也使得权限管理更加易于理解和维护。

基于RBAC的表设计

基于RBAC(Role-Based Access Control,基于角色的访问控制)的表设计通常涉及以下几张核心表:用户表、角色表、权限表(有时也称菜单表或功能表)、用户角色关联表和角色权限关联表。以下是一个详细的表设计示例:

1. 用户表(Users)

用于存储用户的基本信息。

字段名称字段类型字段含义
USER_IDbigint(20)用户ID,主键,自动递增
USERNAMEvarchar(50)用户名,唯一
PASSWORDvarchar(128)密码
EMAILvarchar(128)电子邮件
MOBILEvarchar(20)联系电话
STATUSchar(1)状态(0锁定,1有效)
CREATE_TIMEdatetime创建时间
MODIFY_TIMEdatetime修改时间
LAST_LOGIN_TIMEdatetime最近登录时间
SSEXchar(1)性别(0男,1女,2保密)
AVATARvarchar(100)头像
DESCRIPTIONvarchar(100)描述

2. 角色表(Roles)

用于存储角色的基本信息。

字段名称字段类型字段含义
ROLE_IDbigint(20)角色ID,主键,自动递增
ROLE_NAMEvarchar(100)角色名称
DESCRIPTIONvarchar(255)角色描述
CREATE_TIMEdatetime创建时间
MODIFY_TIMEdatetime修改时间

3. 权限表(Permissions/Menus)

用于存储权限(或菜单、功能)的基本信息。

字段名称字段类型字段含义
PERMISSION_IDbigint(20)权限ID,主键,自动递增
NAMEvarchar(100)权限名称
DESCRIPTIONvarchar(255)权限描述
CREATE_TIMEdatetime创建时间
MODIFY_TIMEdatetime修改时间

4. 用户角色关联表(User_Roles)

用于存储用户和角色之间的多对多关系。

字段名称字段类型字段含义
USER_IDbigint(20)用户ID,外键,关联用户表
ROLE_IDbigint(20)角色ID,外键,关联角色表
CREATE_TIMEdatetime创建时间
MODIFY_TIMEdatetime修改时间
PRIMARY KEY(USER_ID, ROLE_ID)联合主键
FOREIGN KEY(USER_ID) REFERENCES Users(USER_ID) ON DELETE CASCADE外键约束
FOREIGN KEY(ROLE_ID) REFERENCES Roles(ROLE_ID) ON DELETE CASCADE外键约束

5. 角色权限关联表(Role_Permissions)

用于存储角色和权限之间的多对多关系。

字段名称字段类型字段含义
ROLE_IDbigint(20)角色ID,外键,关联角色表
PERMISSION_IDbigint(20)权限ID,外键,关联权限表
CREATE_TIMEdatetime创建时间
MODIFY_TIMEdatetime修改时间
PRIMARY KEY(ROLE_ID, PERMISSION_ID)联合主键
FOREIGN KEY(ROLE_ID) REFERENCES Roles(ROLE_ID) ON DELETE CASCADE外键约束
FOREIGN KEY(PERMISSION_ID) REFERENCES Permissions(PERMISSION_ID) ON DELETE CASCADE外键约束

示例说明

  1. 用户表:存储系统中所有用户的基本信息,如用户名、密码、电子邮件等。
  2. 角色表:存储系统中所有角色的基本信息,如角色名称、描述等。
  3. 权限表:存储系统中所有权限(或菜单、功能)的基本信息,如权限名称、描述等。
  4. 用户角色关联表:用于建立用户和角色之间的多对多关系,即一个用户可以有多个角色,一个角色也可以被多个用户所拥有。
  5. 角色权限关联表:用于建立角色和权限之间的多对多关系,即一个角色可以有多个权限,一个权限也可以被多个角色所拥有。

通过这样的表设计,可以实现RBAC模型中的“用户-角色-权限”授权模型,从而灵活地管理用户的权限。在实际应用中,可以根据具体需求对表结构和字段进行调整和扩展。

细说ACL

ACL(Access Control List,访问控制列表)是网络当中策略的一种,以下是对ACL的详细介绍及一个详细的例子:

一、ACL介绍

ACL是由一系列permit(允许)或deny(拒绝)语句组成的、有序的规则集合,它通过匹配报文的相关字段实现对报文的分类。ACL本身只是一组规则,只能区分某一类报文,换句话说,ACL更像是一个“工具”,当希望通过ACL来实现针对特定流量的过滤时,就需要在适当的应用中调用已经定义好的ACL。

ACL能够识别一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素,从而能够针对上述元素进行报文的匹配。ACL使用包过滤技术,在路由器或三层交换机上读取数据包的三层和四层包头信息(如源地址、目的地址、源端口、目的端口等),并根据预定义的规则进行过滤。

二、ACL的主要作用

ACL能够在多种场景下被调用,是一个使用非常广泛的工具,它的主要作用包括:

  • 被流量策略调用,用于过滤流量(可基于源、目的IP地址、协议类型、端口号等元素);
  • 在route-policy中被调用,用于匹配特定的路由前缀,从而执行路由策略;
  • 在VPN中调用,用于匹配感兴趣数据流;
  • 在防火墙的策略部署中调用,用于匹配流量。

三、ACL的分类

按照功能不同,ACL存在多种类型,其中最主要的两种是基本ACL和高级ACL:

  • 基本ACL:只能够针对IP报文的源IP地址等信息进行流量匹配。例如,可以使用基本ACL来拒绝源IP地址段为192.168.1.0/24的报文。如果在交换机上使用数字命名的方式创建一个基本ACL,数字的范围为2000~2999。
  • 高级ACL:能够针对IP报文的源IP地址、目的IP地址、协议类型、TCP源或目的端口、UDP源或目的端口等元素进行流量匹配。因此它的功能相较基础ACL要更丰富一些。如果在交换机上使用数字命名的方式创建一个高级ACL,数字的范围为3000~3999。

四、ACL的工作原理

ACL规则从上到下依次匹配,一旦匹配成功,则不再继续匹配后续规则。如果数据包没有匹配到任何规则,则根据ACL的默认行为(通常是拒绝)来处理数据包。以下是ACL处理数据包的具体流程:

  • 数据包捕获:数据包到达接口时,设备首先捕获该数据包。
  • 信息提取:设备从数据包中提取出关键信息,如源地址、目的地址、端口号等。
  • 规则匹配:根据提取的信息,在ACL中查找匹配的规则。
  • 决策执行:根据匹配到的规则,决定数据包是被允许通过还是被拒绝。
  • 结果处理:如果数据包被允许通过,则继续传输;如果数据包被拒绝,则可能被丢弃或进行其他处理。

五、ACL配置示例

假设有两个VLAN(VLAN10和VLAN20),它们通过一台三层交换机或路由器进行互连。现在需要限制VLAN10中的主机不能与VLAN20中的主机互访,但可以正常访问外网(假设外网连接在VLAN10的网关上)。以下是基于华为设备的ACL配置示例:

  1. 配置VLAN及接口

    • [Switch]vlan batch 10 20
    • [Switch]interface Vlanif 10
      • [Switch-Vlanif10]ip address 192.168.1.1 255.255.255.0
      • [Switch-Vlanif10]quit
    • [Switch]interface Vlanif 20
      • [Switch-Vlanif20]ip address 192.168.2.1 255.255.255.0
      • [Switch-Vlanif20]quit
  2. 配置VLAN间路由(如果交换机支持)

    • [Switch]ip route-static 192.168.2.0 255.255.255.0 192.168.1.1

    注意:在真实环境中,如果交换机不支持三层路由功能,则需要通过路由器或其他三层设备来实现VLAN间路由。

  3. 在交换机上配置ACL(拒绝来自VLAN10到VLAN20的流量)

    直接在交换机上可能无法直接按VLAN进行ACL匹配,这里假设有方法可以间接实现,如通过接口地址或更复杂的路由策略。更常见的做法是在路由器上配置ACL。

假设在路由器上配置ACL,具体步骤如下:

* [Router]acl 3000+ [Router-acl-adv-3000]rule deny ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255+ [Router-acl-adv-3000]rule permit ip source any destination any
* [Router]interface GigabitEthernet 0/0/1(假设为连接VLAN10和VLAN20的接口)+ [Router-GigabitEthernet0/0/1]traffic-filter inbound acl 3000(将ACL3000应用到接口的入站方向)

通过以上配置,即可实现VLAN10中的主机不能与VLAN20中的主机互访,但可以正常访问外网的需求。

综上所述,ACL是一种强大的网络流量控制工具,通过灵活配置ACL规则,可以实现对网络流量的精细控制和管理。

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

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

相关文章

H.265流媒体播放器EasyPlayer.js H5流媒体播放器如何验证视频播放是否走硬解

随着技术的不断进步和5G网络的推广,中国流媒体播放器行业市场规模以及未来发展趋势都将持续保持稳定的增长,并将在未来几年迎来新的发展机遇。流媒体播放器将继续作为连接内容创作者和观众的重要桥梁,推动数字媒体产业的创新和发展。 EasyPla…

【 LVGL】用外部FLASH存储字库并显示

LVGL–用外部FLASH存储字库并显示 应用场景 由于使用的芯片内部FLASH空间有限,如果仅使用英文字库并用不了多少空间,但是项目需要支持中英文字库,中文字库添加2w字左右,10px大小就要1M多了,内部空间根本不够用&#…

含284个数据集,覆盖18项临床任务,上海AI Lab等发布多模态医疗基准GMAI-MMBench

「有这样一台智能医疗设备,患者只需躺在智能医疗设备上便可完成从扫描、诊断、治疗、修复的全过程,实现健康的重启」。这是 2013 年上映的科幻电影「极乐空间」中的一个情节。 电影《极乐空间》场景 如今,随着人工智能技术的飞速发展&#xf…

Java-04

目录 Redis如何实现延时队列 延时队列的组成 生产消息 消费消息 实现细节 Redis集群 Integer.compare(a[1], b[1]))与a[1] - b[1]) 设计模式​编辑 算法 Redis如何实现延时队列 使用 sortedset ,拿时间戳作为 score ,消息内容作为 key 调用 zad…

【C++】— 掌握STL vector 类:“Vector简介:动态数组的高效应用”

文章目录 1.vector的介绍和使用1.1vector的介绍1.2 vector的特点1.3vector的使用1.3.1vector的定义1.3.2vector iterator的使用1.3.3vector 的空间增长问题1.3.4 vector 的增删查改1.3.5vector 迭代器失效问题 1.vector的介绍和使用 1.1vector的介绍 vector是一个顺序容器&am…

CSS3中的伸缩盒模型(弹性盒子、弹性布局)之伸缩容器、伸缩项目、主轴方向、主轴换行方式、复合属性flex-flow

简介: 1.伸缩盒模型简介 2.伸缩容器、伸缩项目 3-4.主轴方向 5.主轴换行方式 6.复合属性flex-flow 7.主轴的对齐方式

互联网数字化商品管理浪潮思考:从信息化到精准运营

目录 一、商品数字化转型面临的现状分析 (一)运营方向分析 (二)商品归类分析 二、商品数字化管理建设分析 三、基础建设——商品信息数字化 (一)商品信息质量数字化的目的 (二&#xff0…

STL关联式容器之RB-tree(红黑树)

AVL-tree之外,另一个颇具历史并被广泛运用的平衡二叉搜索树是RB-tree(红黑树)。所谓RB-tree,不仅是一颗二叉搜索树,而且必须满足一下规则: 1:每个节点不是红色就是黑色 2:根节点为…

电脑系统重装小白教程

​对于很多电脑用户来说,系统出现故障或者需要清理时,重装系统是一项不可避免的操作。但是,对于没有技术基础的小白用户而言,重装系统可能会显得复杂且困难。本文将为您提供一份简洁易懂的电脑系统重装教程,帮助您顺利…

使用Ollama和Open WebUI管理本地开源大模型

Open WebUI和Ollama介绍 Open WebUI 是一个功能丰富且用户友好的自托管 Web 用户界面(WebUI),它被设计用于与大型语言模型(LLMs)进行交互,特别是那些由 Ollama 或与 OpenAI API 兼容的服务所支持的模型。O…

Nmap识别MongoDB 6.0指纹

Nmap识别MongoDB 6.0指纹 朋友反馈一个问题,说使用Nmap扫描MongoDB服务时对于6.0以上的版本默认无法识别到服务版本信息。 如上图所示,对应的VERSION信息是空的,在提示信息中可以看到,官方推荐将指纹信息上传以帮助更新服务指纹&…

向量搜索工具之 Milvus vs. Elastic

在当今数据驱动的世界中,向量数据库因其在处理大规模非结构化数据方面的卓越能力而变得越来越重要。随着数据量的爆炸性增长,如何确保这些数据库在存储和检索数十亿数据点时仍能保持高性能,成为了一个关键挑战。 Milvus和Elasticsearch都是管…

Java中日志采集框架-JUL、Slf4j、Log4j、Logstash

1. 日志采集 日志采集是指在软件系统、网络设备、服务器或其他IT基础设施中自动收集日志文件和事件信息的过程。这些日志通常包含了时间戳、事件类型、源和目标信息、错误代码、用户操作记录等关键数据。日志采集的目的是为了监控系统运行状态、分析系统性能、审计用户行为、故…

每日学习记录003:(C++)unique_ptr和shared_ptr

每日学习记录003:(C)unique_ptr和shared_ptr 在C中,unique_ptr和shared_ptr都是智能指针,它们为动态内存管理提供了更安全、更方便的方式。 一、unique_ptr的特点 (一)独占所有权 unique_pt…

免费实用的图片加水印工具

高度自定义的图片加水印工具 因工作需要和朋友的需求,我基于canvas开发了这款图片加水印工具。 地址:https://potatotools.top/toolsEntrance/pic/ImageWatermark.vue.html 功能亮点 尺寸定制 ,轻松调整水印宽高,精准适配每张图…

数字化工厂 MES 成功之艰:深度剖析与探究

系统集成的复杂性 多源异构系统对接难题 在数字化工厂的建设进程中,MES(制造执行系统)处于核心枢纽地位,需与众多不同来源、不同架构的系统进行集成。企业内部往往早已部署了诸如企业资源计划(ERP)系统、…

kimi 大模型 API 接口实现大模型对话 - python 实现

kimi API接口实现大模型对话 - python 实现,具体代码如下: 注意:api_key 需要kimi官网注册后创建。 from openai import OpenAI if __name__ __main__:client OpenAI(api_key "sk-***********", # $MOONSHOT_API_KEY 官网注册…

服务器被隔离导致无法登录

现象描述 云服务器可能会因安全违规(内容或行为违规)或因 DDoS 攻击被封堵隔离,被隔离的云服务器在控制台显示为 “BANNING” 状态。 云服务器被隔离可能由于该台服务器违反了当前法律法规的要求。您可以通过以下方式查看该台服务器是否处于…

PaddleNLP的环境配置:

PaddleNLP的环境配置: conda create -n paddle—test python3.9conda activate paddle—testpython -m pip install paddlepaddle-gpu2.6.1.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html(paddle—test) (venv) PS D:\work\论文写…

物联网研究实训室建设方案

一、引言 随着物联网技术的快速发展,其在各个行业的应用越来越广泛,对物联网专业人才的需求也日益增加。为满足这一需求,建设一个符合现代化教学需求的物联网研究实训室,对于提高学生的实践能力和创新能力具有重要意义。本方案旨…