具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
RFC8341中定义了一个基本的RBAC(Role based access control)模型,在该模型中,每个用户属于一个组,规则的定义以用户组为单位进行规则定义。通过引入用户组之后,可以有效的减少规则的数量。RFC8341定义了如下的元素用于实现RBAC:
用户:标记当前NETCONF/RESTCONF的使用者,用户以用户名密码进行确认用户的身份;
用户组:用户组用于将多个用户组合在一起,访问控制是基于组进行实现的;
访问控制规则:用于定义具体的用户,用户组对某种资源的访问是否被允许,访问控制规则包括:基于模型的访问控制规则:通过YANG模型(YANG Model)约束用户/用户组的访问;基于协议操作的访问控制规则:约束特定协议的访问控制;数据节点的访问控制:约束用户/用户组访问特定的用户节点;通知规则:某种通知规则的约束。
然而,RFC8341对于YANG Model没有做组的定义,这会导致使用者在定义RBAC的规则时,需要对每一个YANG Model定义单独的规则,如果YANG Model过多,会导致客户需要定义大量的规则。例如在openconfig中定义了大概160个yang model,假设系统中有10个用户user,10个用户user属于5个不同的用户组,如果使用RFC8341的方式,需要定义160*5=800个规则,而且每增加一个YANG model,需要为不同的用户组增加相应的规则。RFC8341对于大量的YANG MODEL导致过多的规则的问题,主要是RFC8341中规则的数量与YANG MODEL数量的线性关系。也就是说系统的规则的数量,随着YANG MODEL数量的增加而呈现出线性增加的情况。RFC8341在YANG MODEL数量,用户组的数量较少的情况下,不会对系统以及用户造成负担,但是当系统的用户组数量,YANG MODEL的数量达到一定程度,会导致规则的数量呈现出爆炸性的增长,从而不仅对用户的配置工作造成负担,还影响系统和网络的复杂度和运行效率。
鉴于此,本公开实施例提供了一种基于用户和YANG分组的访问控制方法。参见图1,图1示出了根据本公开实施例的基于用户和YANG分组的访问控制方法的示意性流程图。如图1所示,基于用户和YANG分组的访问控制方法100,可以包括:
步骤S110,获取用户的访问请求,所述访问请求用于请求访问目标YANG模型;
步骤S120,判断所述用户是否存在所属的用户组;
步骤S130,若所述用户存在所属的用户组,则基于所述用户组确定分组访问规则;其中,所述分组访问规则与用户组和YANG模型组二者相关联;
步骤S140,基于所述分组访问规则中的YANG模型组与所述目标YANG模型确定所述访问请求是否被允许。
其中,通过将与访问请求相关的用户组来确定分组访问规则,再根据该分组访问规则与访问请求中要访问的YANG模型所属的YANG模型组,来对访问请求进行访问控制,即将户组直接对应于YANG模型(用户组-YANG模型)的规则配置改为用户组对应于YANG模型组(用户组-YANG模型组)的规则配置,减少系统中规则的数量,降低系统的复杂度,而提高访问控制的配置效率。与传统方法中针对每个YANG模型分别制定规则相比,只需分别针对用户组和YANG模型组来配置规则,而无需对每个用户和每个YANG模型配置规则,很大程度上减少了配置数量和配置的出错率,提高了整个系统的运行效率和配置效率。例如,在一个网络设备中,YANG Model有很多,例如在openconfig中定义了大概160个yang model,假设系统中有10个用户user,10个用户user属于5个不同的用户组,如果使用RFC8341的方式,则需要定义160*5=800个规则,而且每增加一个YANG model,需要为不同的用户组增加相应的规则。根据本公开实施例的方法,160个yang model属于10个不同的model组,则只需要大概160+10*5=210个规则,可见,这极大的减少了规则的数量,从而减少了相应的配置数量,降低了系统的操作复杂度,提高了系统的配置效率。
应了解,根据本公开实施例的方法可以部署于网络设备中,例如网络节点处的设备。
根据本公开实施例,在步骤S110中,获取用户的访问请求,所述访问请求用于请求访问目标YANG模型。
在一些实施例中,用户的访问请求的类型可以包括远程过程调用(RemoteProcedure Call,RPC)类型、数据节点(DataNode)类型、或通知(Notification)类型。
在一些实施例中,在步骤S120之前,方法100还可以包括:判断“enable-nacm”叶子节点的设置是否为“false”,如果是则允许该访问请求;
判断所述访问请求是否为恢复会话、关闭会话、重播完成或通知完成中的一种,如果是则允许该访问请求;如果不是,则判断所述请求访问是否为所述用户是否存在所属的用户组。
根据本公开实施例,在步骤S120中,判断所述用户是否存在所属的用户组,可以包括:
判断用户组列表中所有的用户组条目中是否包括所述用户的用户名称;
如果存在包括所述用户名称的用户组条目,则确定所述用户属于所述用户组条目所对应的用户组。
在一些实施例中,在步骤S120中,还可以包括:如果不存在包括所述用户名称的用户组条目,则确定所述用户未分组。
具体来说,检查所有“groups”条目(用户组条目)以查看其中是否有任何包含“user-name”条目等于访问请求的用户名。如果“enable-external-group”叶子节点是“true”,则将该“enable-external-group”叶子节点的用户组添加到本地的用户组条目中。
根据本公开实施例,在步骤S130中,若所述用户存在所属的用户组,则基于所述用户组确定分组访问规则;其中,所述分组访问规则与用户组和YANG模型组二者相关联,可以包括:
基于所述用户组在配置文件中的位置,依次将规则列表中所有的规则条目与所述用户组相匹配;
将包含所述用户组的的规则条目确定为所述分组访问规则。
具体来说,用户A的访问请求可以包括:远程调用YANG模型B。那么可以先判断用户A是否存在所属的用户组。其中,用户A可以属于一个或多个用户组,例如用户A可以属于用户组A1、A2、A3;也可以不属于任何一个用户组。如果用户A属于用户组A1、A2、A3,则将所有规则条目中与用户组A1、A2、A3相关联的规则均确定为分组访问规则。
在一些实施例中,步骤S140中,基于所述YANG模型组与所述目标YANG模型确定所述访问请求是否被允许,包括:
判断所述目标YANG模型是否存在所属的YANG模型组;
如果所述目标YANG模型存在所属的YANG模型组,则判断所属的YANG模型组是否与所述分组访问规则中的YANG模型组相同,或者判断所述分组访问规则中的YANG模型组的叶子节点设置是否为特殊值“*”;
如果所属的YANG模型组与所述分组访问规则中的YANG模型组不同,或者所述分组访问规则中的YANG模型组的叶子节点设置不为特殊值“*”,则拒绝所述访问请求;
如果所述目标YANG模型不存在所属的YANG模型组,则拒绝所述访问请求。
1、远程过程调用(Remote Procedure Call,RPC)类型的访问请求
NetconfServer(网络设备)上面部署了Netconf应用,NetconfClient需要调用Server上的应用所提供的函数/方法,但由于Client和Server不在同一个内存空间,无法直接调用,所以需要通过网络来表达调用的语义,并传达调用的数据,这个过程称为RPC(远程过程调用)。
在一些实施例中,在步骤S120之前,方法100还可以包括:判断“enable-nacm”叶子节点的设置是否为“false”,如果是则允许该访问请求。进一步地,否则,可以判断请求会话是否为恢复会话。
在一些实施例中,在步骤S120之前,方法100还可以包括:判断请求会话是否为恢复会话或关闭会话,如果是则允许该访问请求。例如,如果访问请求被识别为恢复会话(recovery-session),那么该访问请求被允许;如果访问请求的操作是NETCONF<close-session>协议操作,则该访问请求被允许。进一步地,否则,执行步骤S120。
在一些实施例中,在步骤S140中,对于远程过程调用类型的访问请求,如果所属的YANG模型组与所述分组访问规则中的YANG模型组相同,或者所述分组访问规则中的YANG模型组的叶子节点设置为特殊值“*”,则判断所述分组访问规则的规则类型是否与所述访问请求的操作类型匹配;
如果所述分组访问规则的规则类型与所述访问请求的操作类型相匹配,则判断所述分组访问规则的“access-operations”叶节点设置了“exec”位或具有特殊值“*”;
如果“access-operations”叶节点设置了“exec”位或具有特殊值“*”,则判断“action”叶节点设置是否为允许,如果“action”叶节点设置为允许“permit”则允许所述访问请求;否则,拒绝所述访问请求;
如果“access-operations”叶节点没有设置“exec”位或不具有特殊值“*”,则,拒绝所述访问请求;
如果所述分组访问规则的规则类型与所述访问请求的操作类型不匹配,则拒绝所述访问请求。
在一些实施例中,如图2所示,对于远程过程调用类型的访问请求,可以包括:
步骤S210,判断“enable-nacm”叶子节点的设置是否为“false”,如果是则允许该访问请求;如果否,则执行步骤S220;
步骤S220,判断请求会话是否为恢复会话,如果是则允许该访问请求;如果否,则执行步骤S230;
步骤S230,判断访问请求是否为NETCONF<close-session>协议操作,如果是则允许该访问请求;如果否,则执行步骤S240;
步骤S240,判断所有检查所有“groups”条目以查看其中是否有任何包含“user-name”条目等于访问请求的用户名。如果“enable-external-group”叶子节点是“true”,将这些组集添加到本地的组中,执行步骤250;如果未找到组,请继续执行步骤260;
步骤S250,按照用户组出现在配置文件中的位置,处理所有规则列表条目。如果规则列表的“groups”叶列表没有匹配任何用户组,继续下一个规则列表入口。
步骤S251,对于找到的每个规则列表条目,按顺序处理所有规则,判断是否存在与访问请求中的目标YANG模型相匹配的分组访问规则。如果满足以下所有条件,则访问请求与分组访问规则相匹配:
条件1:检查YANG模型的名称model-name是否属于某个YANG模型组,如果不属于某个YANG模型组,则拒绝操作;
条件2:分组访问规则中YANG模型组model-groups的名称为“*”或者为访问请求中的目标YANG模型所属的YANG模型组,否则拒绝操作;
条件3:没有定义分组访问规则的规则类型“rule-type”、分组访问规则的规则类型“rule-type”是协议操作“protocol-operation”、或者远程过程调用名称“rpc-name”为“*”或等于访问请求的操作;
条件4:分组访问规则的“access-operations”叶节点设置了“exec”位或具有特殊值“*”。
步骤S252,如果找到匹配的分组访问规则,则检查“action”叶节点,如果节点等于“permit”,则协议操作为允许;否则,它被拒绝。
步骤S253,在任何规则列表中都没有找到匹配的规则;
步骤S260,判断访问在目标YANG模型中的定义、或在服务器功能中的通告、或在远程过程调用局域即“rpc”语句中的通告是否包含“nacm:default-deny-all”语句,如果是则拒绝该访问请求,如果否,则执行步骤S270;
步骤S270,判断“exec-default”叶子节点设置是否为“permit”,如果是则允许协议操作;否则,拒绝请求。
2、节点数据(DataNode)类型的访问请求
需要说明的是,节点数据(DataNode)类型的访问请求与远程过程调用(RemoteProcedure Call,RPC)类型的访问请求的访问控制过程类似,在此仅对不同之处进行描述,相同之处不再赘述。
在一些实施例中,在步骤S140中,对于数据节点类型的访问请求,如果所属的YANG模型组与所述分组访问规则中的YANG模型组相同,或者所述分组访问规则中的YANG模型组的叶子节点设置为特殊值“*”,则判断所述分组访问规则的规则类型是否与所述访问请求的操作类型匹配;
如果所述分组访问规则的规则类型与所述访问请求的操作类型相匹配,则判断所述分组访问规则的“access-operations”叶节点设置了与所述访问请求的操作类型相应的位或具有特殊值“*”;
如果“access-operations”叶节点设置了与所述访问请求的操作类型相应的位或具有特殊值“*”,则判断“action”叶节点设置是否为允许,如果“action”叶节点设置为允许则允许所述访问请求;否则,拒绝所述访问请求;
如果“access-operations”叶节点没有设置与所述访问请求的操作类型相应的位或不具有特殊值“*”,则,拒绝所述访问请求;
如果所述分组访问规则的规则类型与所述访问请求的操作类型不匹配,则拒绝所述访问请求。
在一些实施例中,对于数据节点类型的访问请求,若所述用户不存在所属的用户组,则判断所述访问请求在所述目标YANG模型中的定义、在服务器功能中的通告或在读/写语句中的通告是否包含“nacm:default-deny-all”或“nacm:default-deny-write”,
如果包含则拒绝所述访问请求;
如果不包含,则判断所述访问请求是否为“kill-session”或者“delete-config”;
如果是,则拒绝所述访问请求;如果不是则判断所述目标YANG模型的“read-default”、“write-default”或“exec-default”叶子节点是否设置为允许,如果“read-default”、“write-default”或“exec-default”叶节点设置为允许则允许所述访问请求;否则,拒绝所述访问请求。
在一些实施例中,如图3所示,对于数据节点类型的访问请求,可以包括:
步骤S310,判断“enable-nacm”叶子节点的设置是否为“false”,如果是则允许该访问请求;如果否,则执行步骤S320;
步骤S320,判断访问请求是否为恢复会话,如果是则允许该访问请求;如果否,则执行步骤S330;
步骤S330,判断所有检查所有“groups”条目以查看其中是否有任何包含“user-name”条目等于访问请求的用户名。如果“enable-external-group”叶子节点是“true”,将这些组集添加到本地的组中,执行步骤S340;如果未找到组,请继续执行步骤S350;
步骤S340,按照包含“user-name”条目出现在配置文件中的位置,处理所有规则列表条目。如果规则列表的“groups”叶列表没有匹配任何用户组,继续下一个规则列表入口;
步骤S341,对于找到的每个规则列表条目,按顺序处理所有规则,判断是否存在与访问请求中的目标YANG模型相匹配的分组访问规则。如果满足以下所有条件,则访问请求与分组访问规则相匹配:
条件A:检查YANG模型model-name是否属于某个YANG模型组,如果不属于某个YANG模型组,则拒绝操作;
条件B:分组访问规则中YANG模型组model-groups的名称为“*”或者为访问请求中的目标YANG模型所属的YANG模型组,否则拒绝操作;
条件C:没有定义分组访问规则的规则类型“rule-type”、或者分组访问规则的规则类型“rule-type”是数据节点“data-node”;以及访问请求的路径“path”与分组访问规则的数据节点、动作节点或通知节点的路径相匹配;
条件D:
对于“read”访问请求,规则的“access-operations”叶子节点设置了“read”位或具有特殊值“*”;
对于“write”访问请求,规则的“access-operations”叶子节点设置了“write”位或具有特殊值“*”;
对于“delete”访问请求,规则的“access-operations”叶子节点设置了“delete”位或具有特殊值“*”;
对于“update”访问请求,规则的“access-operations”叶子节点设置了“update”位或具有特殊值“*”;
对于“execute”访问请求,规则的“access-operations”叶子节点设置了“execute”位或具有特殊值“*”。
步骤S342,如果找到匹配规则,则检查“action”叶子节点的设置,如果“action”叶子节点等于“permit”,则协议操作为允许;否则,它被拒绝。
步骤S343,在任何规则列表中都没有找到匹配的规则;
步骤S350,判断所述访问请求在目标YANG模型中的定义、在服务器功能中的通告或在读/写语句中的通告是否包含“nacm:default-deny-all”或“nacm:default-deny-write”。具体包括:
判断访问在目标YANG模型中的定义、或在服务器功能中的通告、或在“read”语句中的通告是否包含“nacm:default-deny-all”语句,如果是则拒绝该访问请求,如果否,则执行步骤S360;
判断访问在目标YANG模型中的定义、或在服务器功能中的通告、或在“write”语句中的通告是否包含“nacm:default-deny-all”或“nacm:default-deny-write”语句,如果是则拒绝该访问请求,如果否,则执行步骤S360;
步骤S360,判断所述目标YANG模型的“read-default”、“write-default”或“exec-default”叶子节点是否设置为允许,如果“read-default”、“write-default”或“exec-default”叶节点设置为允许则允许所述访问请求;否则,拒绝所述访问请求。具体包括:
对于“read”操作,如果“read-default”叶子节点设置为“permit”,则允许访问请求;否则,拒绝请求。
对于“write”操作,如果“write-default”叶子节点设置为“permit”,则允许访问请求;否则,拒绝请求。
对于“exec”操作,如果“exec-default”叶子节点设置为“permit”,则允许访问请求;否则,拒绝请求。
3、通知(Notification)类型的访问请求
需要说明的是,通知(Notification)类型的访问请求与远程过程调用(RemoteProcedure Call,RPC)类型的访问请求的访问控制过程类似,在此仅对不同之处进行描述,相同之处不再赘述。
在一些实施例中,在步骤S120之前,还包括:
判断请求会话是否为恢复会话或重播完成或通知完成,如果是则允许该访问请求。进一步地,否则,执行步骤S120。
具体地,可以是判断请求会话是否为“recovery-session”、“replayComplete”或“notificationComplete”,如果是则允许该访问请求,如果不是则执行步骤S120。
在一些实施例中,步骤S140中,对于通知类型的访问请求,如果所属的YANG模型组与所述分组访问规则中的YANG模型组相同,或者所述分组访问规则中的YANG模型组的叶子节点设置为特殊值“*”,则判断所述分组访问规则的规则类型是否与所述访问请求的操作类型匹配;
如果所述分组访问规则的规则类型与所述访问请求的操作类型相匹配,则判断所述分组访问规则的“access-operations”叶节点设置了“read”位或具有特殊值“*”;
如果“access-operations”叶节点设置了“read”位或具有特殊值“*”,则判断“action”叶节点设置是否为允许,如果“action”叶节点设置为允许则允许所述访问请求;否则,拒绝所述访问请求;
如果“access-operations”叶节点没有设置“read”位或不具有特殊值“*”,则,拒绝所述访问请求;
如果所述分组访问规则的规则类型与所述访问请求的操作类型不匹配,则拒绝所述访问请求。
在一些实施例中,对于通知类型的访问请求,若所述用户不存在所属的用户组,则判断所述访问请求在所述目标YANG模型中的定义、在服务器功能中的通告或在通告语句中的通告是否包含“nacm:default-deny-all”,
如果包含则拒绝所述访问请求;
如果不包含,则判断所述目标YANG模型的“read-default”叶子节点是否设置为允许,如果“read-default”叶节点设置为允许则允许所述访问请求;否则,拒绝所述访问请求。
在一些实施例中,如图4所示,对于通知类型的访问请求,可以包括:
步骤S410,判断“enable-nacm”叶子节点的设置是否为“false”,如果是则允许该访问请求;如果否,则执行步骤S420;
步骤S420,判断请求会话是否为恢复会话,如果是则允许该访问请求;如果否,则执行步骤S430;
步骤S430,判断访问请求是否为NETCONF<replayComplete>或<notificationComplete>协议操作,如果是则允许该访问请求;如果否,则执行步骤S440;
步骤S440,判断所有检查所有“groups”条目以查看其中是否有任何包含“user-name”条目等于访问请求的用户名。如果“enable-external-group”叶子节点是“true”,将这些组集添加到本地的组中,执行步骤S450;如果未找到组,请继续执行步骤S460;
步骤S450,按照包含“user-name”条目出现在配置文件中的位置,处理所有规则列表条目。如果规则列表的“groups”叶列表没有匹配任何用户组,继续下一个规则列表入口;
步骤S451,对于找到的每个规则列表条目,按顺序处理所有规则,判断是否存在与访问请求中的目标YANG模型相匹配的分组访问规则。如果满足以下所有条件,则访问请求与分组访问规则相匹配:
条件I:检查YANG模型model-name是否属于某个YANG模型组,如果不属于某个YANG模型组,则拒绝操作,
条件II:分组访问规则中YANG模型组model-groups的名称为“*”或者为访问请求中的目标YANG模型所属的YANG模型组,否则拒绝操作;
条件III没有定义分组访问规则的规则类型“rule-type”、或者分组访问规则的规则类型“rule-type”是“notification”,以及分组访问规则的“notification-name”为“*”或等于访问请求中通知notification的名称;
条件IV:分组访问规则的“access-operations”叶节点设置了“read”位或具有特殊值“*”
步骤S452,如果找到匹配规则,则检查“action”叶子节点设置,如果“action”叶子节点等于“permit”,则访问请求被允许;否则,它被拒绝。
步骤S453,在任何规则列表中都没有找到匹配的规则;
步骤S460,判断访问请求目标YANG模型中的定义、在服务器功能中的通告或在“notification”语句中的通告是否包含“nacm:default-deny-all”语句,如果是则拒绝该访问请求,如果否,则执行步骤S470;
步骤S470,如果“read-default”叶子节点设置为“permit”,则允许访问请求;否则,拒绝访问请求。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
根据本公开实施例,与上述任意实施例方法相对应的,本公开还提供了一种基于用户和YANG模型分组的访问控制装置。参见图5,所述基于用户和YANG模型分组的访问控制装置,包括:
获取模块,获取用户的访问请求,所述访问请求用于请求访问目标YANG模型;
用户组模块,用于判断所述用户是否存在所属的用户组;以及若所述用户存在所属的用户组,则基于所述用户组确定分组访问规则;其中,所述分组访问规则与用户组和YANG模型组二者相关联;
YANG模型组模块,基于所述分组访问规则中的YANG模型组与所述目标YANG模型确定所述访问请求是否被允许。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的基于用户和YANG模型分组的访问控制方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
根据本公开实施例,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的基于用户和YANG模型分组的访问控制方法。
图6示出了本公开实施例的电子设备的示意性框图。该设备可以包括:处理器610、存储器620、输入/输出接口630、通信接口640和总线650。其中处理器610、存储器620、输入/输出接口630和通信接口640通过总线650实现彼此之间在设备内部的通信连接。
处理器610可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器620可以采用ROM(Read Only Memory,只读存储器)、RAM(RandomAccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器620可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器620中,并由处理器610来调用执行。
输入/输出接口630用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口640用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线650包括一通路,在设备的各个组件(例如处理器610、存储器620、输入/输出接口630和通信接口640)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器610、存储器620、输入/输出接口630、通信接口640以及总线650,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的基于用户和YANG模型分组的访问控制方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
根据本公开实施例,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的基于用户和YANG模型分组的访问控制方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的基于用户和YANG模型分组的访问控制方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。