汪 垚
(河南工业贸易职业学院信息工程学院 河南 郑州 450053)
近年来,物联网安全事件频发,电网、摄像头、智能家居等基础设备因遭受网络攻击而给人们带来了巨大的经济损失,公民个人隐私也面临安全风险[1]。 访问控制技术是防范物联网安全事件的重要手段。 当前大部分的物联网系统由于缺乏安全的访问控制机制,可能会出现潜在的漏洞,被恶意用户非法访问,从而威胁用户和企业数据的安全和隐私[2]。 本文针对物联网访问控制技术进行了探讨,对基于角色的访问控制技术进行了详细的架构分析,并对其在物联网系统登录及身份认证中的实际应用进行了详细设计和开发实现。
访问控制技术是保护资源不被未授权用户使用和访问的一种手段[3]。 目前互联网广泛采用访问控制技术来保护网络空间安全[4]。 访问控制技术应具备身份认证、授权、文件保护和审计等主要功能。
(1)身份认证
身份认证就是对访问者的身份进行检验,看是否是合法用户,并以此决定允许或拒绝对相关资源的访问。
(2)授权
系统正确认证用户后,根据不同的用户标志分配给其不同的使用资源,这项任务称为授权,授权的实现是依靠访问控制技术完成的。
(3)文件保护
文件保护是指对文件提供的附加保护,可使非授权用户不可读取文件。 一般采用对文件加密的附加保护。
(4)审计
审计是记录用户系统所进行的所有活动的过程,即记录用户违反安全规定使用系统的时间、日期以及用户活动。
基于角色的访问控制(role-based access control,RBAC)技术的基本思想是将访问许可权分配给一定的角色,用户通过饰演不同的角色来获得角色所拥有的访问许可权。
在RBAC 模型中,会根据网络安全访问系统的实际需求设置“角色”的客体,而角色掌管着系统中资源信息的访问控制权限,可以及时根据用户的访问需求进行网络资源的权限管理[5]。
RBAC 模型通过引入角色来对用户和权限进行解耦,简化了授权操作和安全管理。 系统管理员可以根据职能或机构的需求策略来创建角色、给角色分配权限并给用户分配角色,他把整个访问控制过程分成两步:访问权限与角色相关联,角色再与用户关联,从而实现用户与访问权限的逻辑分离。 基于角色的访问控制技术架构如图1所示。
图1 基于角色的访问控制技术架构
操作:对管理功能的操作,主要是增、删、改、查。
管理栏目:系统的管理功能,如用户管理、角色管理、数据管理等。
在物联网管理系统中,有很多不同身份的用户,比如普通用户、编辑人员、普通管理员、超级管理员等,用户的身份不同,相应的用户管理权限也不同。 当用户登录物联网管理系统时,需要对用户的身份进行认证,根据用户的不同身份来授权访问相应的物联网系统和设备。
要想实现上述功能,需要开发用户登录和身份认证、用户管理、角色管理、角色权限分配管理等功能模块。 除了这些功能性需求以外,在设计开发过程中还需要注意系统界面美观、响应迅速、运行稳定、安全可靠等非功能性需求。
(1)应用架构和实现流程概述
基于角色的访问控制技术在物联网系统登录及身份认证中的应用流程如下:管理员可以在用户注册时按照用户的职责和身份为用户指定相应的角色,在用户登录时先验证其是否是合法用户。 如果是合法用户,则进一步验证其在物联网系统中的角色,后按照角色给予其相应的访问权限;如果是不合法用户,则需要重新进行身份验证或直接拒绝访问。 具体的应用架构和实现流程如图2 所示。
图2 应用架构和实现流程图
(2)实现技术说明
为了方便用户的使用,本系统采用基于B/S 结构的架构应用模式。 采用LNMP(Linux+Nginx+MySQL+PHP)的开发和运行环境,即采用安全高效的Linux 系统作为应用服务器,并在Linux 下搭建开发和运行环境。 采用轻便高效的Nginx 服务器作为Web 服务器,使用关系型数据库管理系统(my structured query language,MySQL)作为数据库服务器来存储系统的业务数据,采用流行的Web 开发语言超文本预处理器(hypertext preprocessor,PHP)来实现系统业务逻辑的处理。
要想在物联网系统安全管理中实现基于角色的访问控制,需要进行如下功能模块的设计和开发实现:
4.2.1 相关数据库表的设计
基于角色的访问控制技术的实现,至少需要设计4 张核心数据库表,分别是用户表(user),角色表(role),栏目表(column),角色权限分配管理表(allocation),以MySQL数据库为例,其数据表结构如表1 所示。
表1 用户表(user)
表2 角色表(role)
表3 栏目表(column)
表4 角色权限分配管理表(allocation)
4.2.2 相关功能模块开发实现的详细说明
(1)用户注册模块
用户如果需要加入物联网系统的平台,则首先需要在系统平台上进行注册。 填写相关用户的个人信息以后,如用户姓名、性别、手机号、用户身份等相关信息,再通过表单提交到后台,由后台程序PHP 进行业务处理,PHP 处理完成以后写入到MySQL 数据库用户表(user)中。
设计开发用户注册模块时需要注意SQL 注入攻击和机器人灌水攻击。 对每个数据字段的格式和输入内容要进行严格的验证和过滤,以防止SQL 注入攻击;另外还要加入算法复杂的验证码技术,以防止机器人灌水注册攻击。 用户注册模块的实现是实现用户登录和身份验证的基础和前提。
具体实现思路是:用户在前台表单填写注册信息,把注册信息提交到后台PHP 程序进行处理。 PHP 接受前端提交过来的数据以后,首先对这些数据的合法性进行检测和过滤,如果这些数据不合法,则直接提示非法攻击,并重新定向到注册页面;如果数据合法合理,则在用户表中查询当前用户名是否被注册过,如果注册过,则回到注册页面让用户重新填写用户名信息;如果没有注册过,则将用户注册信息写入用户表中。
(2)用户登录和身份认证模块
用户注册模块开发完成以后,下面开始对用户登录模块进行设计和开发实现。 用户登录模块通过在前端设计表单实现,该表单需要设置用户名、用户密码、验证码数据字段,在前端要通过js 或js 框架来验证数据的格式合法,在后台通过PHP 程序来过滤用户输入的字段内容是否合法。 用户登录模块和用户注册模块一样,也需要防止客户端SQL 注入攻击和机器人攻击。
具体实现思路是:在前端设计用户登录表单,设置用户名、用户密码和验证码字段。 用户输入用户名、密码和验证码以后,通过表单把这些数据信息提交到后台PHP程序。 后台PHP 程序接收到表单字段内容以后,首先要验证验证码是否正确,如果验证码错误,则返回到登录页面让用户重新输入验证码;如果验证码正确,则进入下一步,验证用户输入的用户名和密码是否是合法字符,如果用户输入的字符不合法,则结束登录过程,返回到登录页面;如果用户输入的字符合法,则进入验证用户名和密码是否正确的流程,首先根据用户输入的用户名去用户表进行匹配查找,找不到则提示用户名错误或不存在,同时返回用户登录页面;能找到则根据用户表中的reviewed 字段判断该用户是否审核通过,如果未审核或审核未通过,则对用户进行提示并返回到用户登录页面;如果审核通过则对用户输入的密码和通过用户名查询到的密码进行匹配,如果匹配失败则提示用户密码错误,同时返回用户登录页面;如果匹配成功,则通过session 记录用户的登录状态,然后通过角色ID 字段判定用户在物联网系统中的角色,并根据角色和该角色的操作权限进入相关的操作界面。
(3)用户管理模块
用户管理模块是系统管理员对普通用户进行管理的功能模块,属于物联网系统管理后台的权限范围。 用户管理模块包括对新注册用户的审核,以及相关用户信息的查询、修改、删除等功能。
用户审核功能的实现思路是:用户通过前台页面提交注册信息以后,有审核权限的系统管理员登录后台管理系统对用户提交的注册信息进行审核,如果用户提交的注册信息合法,则通过PHP 操作数据库修改用户表的reviewed字段值为1,表示审核通过;反之,如果用户提交的注册信息不合法,则修改用户表的reviewed 字段值为2,表示审核不通过。
用户信息查询功能的实现思路是:用户可以在查找表单中输入查找关键字,该关键字可以是用户名、手机号或用户姓名,PHP 程序可根据该关键字在用户表中进行模糊匹配,并将匹配结果通过表格形式展现。
用户信息修改功能的实现思路是:管理员在用户管理列表中点击某一个用户信息,进入该用户信息的表单详情页面,在表单中修改用户相关信息以后,通过表单提交到后台PHP 程序,PHP 程序则根据该用户的唯一ID 在用户表中存储最新的用户信息。
用户信息删除功能的实现思路是:当管理员点击删除用户按钮时,提示管理员是否真的要删除相关用户,如果管理员点击确认按钮,则向后台PHP 程序传递该用户的唯一ID,后台PHP 程序通过该用户的唯一ID 在用户表中执行删除任务;反之,如果管理员点击取消按钮,则取消删除操作。
(4)角色管理模块
角色管理模块就是系统管理员对用户角色进行添加、修改、删除等操作,该管理模块相关功能的实现思路与用户管理模块类似,此处不再详述。
(5)栏目管理模块
栏目管理模块是系统管理员对后台功能栏目进行的管理,具体包括功能栏目的添加、修改、删除、隐藏等。 栏目管理模块添加、修改、删除功能的实现思路与用户管理模块类似,此处不再详述,下面重点描述一下栏目管理模块栏目隐藏功能的实现思路:
默认情况下栏目是显示的,当系统管理员点击“隐藏”按钮时,可以向后台PHP 程序传递该栏目的唯一ID。随之,PHP 程序根据栏目ID 修改栏目表的show 字段值为0,实现该栏目的隐藏功能;反之,当系统管理员点击该栏目的“显示”按钮时,PHP 程序根据栏目ID 修改栏目表的show 字段值为1,实现该栏目的显示功能。
(6)角色权限分配管理模块
该模块主要是为不同的用户角色分配后台栏目的管理权限,比如数据信息管理栏目,编辑人员只能查找、浏览和修改数据信息,普通管理员则可以查找、浏览、修改甚至删除数据信息。 超级管理员登录物联网系统管理后台以后,可以针对不同的用户角色进行权限分配。 如果是普通用户则只能查看和修改其个人相关信息,如果是普通管理员用户则可以给其分配相应的管理权限。
该功能模块的实现思路是:超级管理员可以在后台栏目列表中选择某一个或多个栏目,针对所选择的栏目设置查找、浏览、修改或删除权限,并把这些权限分配信息通过表单传递到后台PHP 处理程序,PHP 处理程序则把这些信息写入角色权限分配管理表中,从而实现不同用户角色权限的分配和设置。
综上所述,访问控制技术是保障物联网安全的重要技术措施,认真研究和探讨物联网访问控制技术,可以最大程度地保护物联网资源的安全。 本文研究和开发实现了基于角色的访问控制技术,在物联网系统访问控制中使用广泛,对于保护物联网系统的资源和数据安全起到了很好的防护作用。