Kafka集群多类型权限管理方法、装置及存储介质转让专利

申请号 : CN202110344995.3

文献号 : CN113194070B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张云飞

申请人 : 新华三大数据技术有限公司

摘要 :

本公开提供一种Kafka集群多类型权限管理方法、装置及存储介质,用于解决Kafka集群支持多种SASL认证机制的技术问题。本公开通过对扩展Kafka集群的权限管理组件,使得权限管理组件能够从多种认证机制对应的用户信息存储位置同步用户信息到权限管理组件的安全访问策略数据库。基于扩展Kafka的配置和扩展权限管理组件,实现了基于一种权限管理组件支持多种认证机制的统一的用户权限管理框架,支持无缝对接使用不同SASL机制的Kafka生产或消费应用程序,提高Kafka系统的可扩展性和易用性。

权利要求 :

1.一种Kafka集群多类型权限管理方法,其特征在于,所述方法包括:

Kafka集群基于修改的有关权限管理配置文件,开启第一认证机制和第二认证机制,以及调用指定权限管理组件接管Kafka集群的权限管理;

Kafka集群服务端基于扩展的认证授权服务配置文件,同时开启所述第一认证机制和第二认证机制的登录认证模式;

所述指定权限管理组件中的用户信息同步组件分别从所述第一认证机制和第二认证机制对应的用户信息存储位置同步用户信息到所述指定权限管理组件的安全访问策略数据库;

所述指定权限管理组件为Ranger权限管理组件,所述用户信息同步组件为Ranger UserSync组件;所述安全访问策略数据库为Ranger管理组件用于存储用户安全访问策略的数据库即Ranger Admin数据库;

所述第二认证机制为盐化挑战响应身份认证机制SCRAM;所述第二认证机制对应的用户信息以SCRAM凭证的形式存储于Zookeeper集群当中。

2.根据权利要求1所述的方法,其特征在于,所述第一认证机制为通用安全服务应用程序接口GSSAPI;所述第一认证机制对应的用户信息存储于轻型目录访问协议LDAP服务模块当中。

3.根据权利要求2所述的方法,其特征在于,所述用户信息同步组件同步用户信息的方法为:继承或直接实现所述用户信息同步组件Ranger UserSync中用于同步外部用户和用户组信息的接口,通过该接口定时或基于变化触发执行用户或用户组信息的同步任务。

4.根据权利要求1所述的方法,其特征在于,

所述Kafka集群基于修改的有关权限管理配置文件中的sasl.enabled.mechanisms配置项,同时开启GSSAPI和SCRAM两种认证机制;

所述Kafka集群基于修改的有关权限管理配置文件中authorizer.class.name配置项,以Ranger的权限管理类RangerKafkaAuthorizer类来替换Kafka默认的SimpleAclAuthorizer类,从而使Ranger接管Kafka集群的权限管理能力;

Kafka集群服务端基于扩展的认证授权服务配置文件即kafka_jaas_conf文件中的KafkaServer配置项,同时开启所述第一认证机制和第二认证机制的登录认证模式。

5.一种Kafka集群多类型权限管理装置,其特征在于,该装置应用于Kafka集群服务器中,该装置包括:Kafka权限管理模块,用于基于修改的有关权限管理配置文件,开启第一认证机制和第二认证机制,以及调用指定权限管理组件接管Kafka集群的权限管理;以及基于扩展的认证授权服务配置文件,同时开启所述第一认证机制和第二认证机制的登录认证模式;

指定权限管理组件,用于通过用户信息同步组件分别从所述第一认证机制和第二认证机制对应的用户信息存储位置同步用户信息到安全访问策略数据库;

所述指定权限管理组件为Ranger权限管理组件,所述用户信息同步组件为Ranger UserSync组件;所述安全访问策略数据库为Ranger管理组件用于存储用户安全访问策略的数据库即Ranger Admin数据库;

所述第二认证机制为盐化挑战响应身份认证机制SCRAM;所述第二认证机制对应的用户信息以SCRAM凭证的形式存储于Zookeeper集群当中。

6.根据权利要求5所述的装置,其特征在于,

所述第一认证机制为通用安全服务应用程序接口GSSAPI;所述第一认证机制对应的用户信息存储于轻型目录访问协议LDAP服务模块当中。

7.根据权利要求6所述的装置,其特征在于,

所述指定权限管理组件通过继承或直接实现所述用户信息同步组件Ranger UserSync中用于同步外部用户和用户组信息的接口,定时或基于变化触发执行用户或用户组信息的同步任务。

8.根据权利要求5所述的装置,其特征在于,

所述Kafka权限管理模块基于修改的有关权限管理配置文件中的

sasl.enabled.mechanisms配置项,同时开启GSSAPI和SCRAM两种认证机制;基于修改的有关权限管理配置文件中authorizer.class.name配置项,以Ranger的权限管理类RangerKafkaAuthorizer类来替换Kafka默认的SimpleAclAuthorizer类,从而使Ranger权限管理组件接管Kafka集群的权限管理能力;基于扩展的认证授权服务配置文件即kafka_jaas_conf文件中的KafkaServer配置项,同时开启所述第一认证机制和第二认证机制的登录认证模式。

9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至4中任一项所述的方法步骤。

说明书 :

Kafka集群多类型权限管理方法、装置及存储介质

技术领域

[0001] 本公开涉及通信及大数据技术领域,尤其涉及一种Kafka集群多类型权限管理方法、装置及存储介质。

背景技术

[0002] Kafka是一种分布式发布订阅消息系统,作为当前大数据领域主流的分布式流平台,其具有高吞吐量、低延迟、高容错等优点,在实时计算方向使用尤为广泛。Kafka Server端和Kafka Client端之间通过高性能的TCP网络协议进行通信。一个典型的Kafka集群结构包括:若干Producer(生产者)、若干Broker(代理者)、若干Consumer group(消费者组)、一个Zookeeper集群。
[0003] Apache Ranger提供集中式的权限管理框架,可以对Hadoop生态中的HDFS、Hive、YARN、Kafka、Storm和Solr等组件进行细粒度的权限访问控制,并且提供了Web UI方便管理员操作。
[0004] Ranger主要由三个组件组成,分别为管理组件Ranger Admin、策略执行组件Ranger Plugins、用户信息同步组件Ranger UserSync。Ranger Admin用于创建和更新安全访问策略,这些策略被存储在数据库中。各个组件的Plugin定期对这些策略进行轮询。Ranger Plugins被嵌入在各个集群组件的进程里,是一个轻量级的Java程序。Plugin从Ranger Admin服务端拉取策略,并把它们存储在本地文件中。当接收到来自组件的用户请求时,对应组件的Plugin会拦截该请求,并根据安全策略对其进行评估。Ranger UserSync是Ranger提供的一个用户同步工具,用于将用户和用户组的信息同步到Ranger Admin的数据库中,同步的用户和用户组信息可以在定义策略时使用。
[0005] ZooKeeper是一个分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它为分布式应用提供一致性服务,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
[0006] 一个Kafka集群可能部署在跨数据中心、跨云产品的区域region上,权限访问控制必不可少。然而,目前每个大数据厂商所提供Kafka产品中使用的权限访问控制方法不统一,导致不同厂商的产品之间对接存在障碍,尤其对于独立软件开发商(Independent Software Vendors,ISV)客户来说,这是不可接受的。
[0007] 虽然Kafka安全管理提供多种简单认证和安全层(Simple Authentication and Security Layer,SASL)认证机制,例如,通用安全服务应用程序接口(Generic Security Services Application Program Interface,GSSAPI),盐化挑战响应身份认证机制(Salted Challenge Response Authentication Mechanism,SCRAM)等。但是,不同认证机制的依赖条件不同,例如GSSAPI需要依赖Kerberos;不同认证机制之间的用户管理自成一体,例如GSSAPI使用轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)用户、SCRAM使用自定义类型用户,用户管理混乱,造成Kafka产品化集群同时支持多种SASL认证机制很困难。

发明内容

[0008] 有鉴于此,本公开提供一种Kafka集群多类型权限管理方法、装置及存储介质,用于解决Kafka集群支持多种SASL认证机制的技术问题。
[0009] 图1为本公开实施例提供的Kafka集群多类型权限管理方法步骤流程图,该方法应用于,包括:
[0010] 步骤101.Kafka集群基于修改的有关权限管理配置文件,开启第一认证机制和第二认证机制,以及调用指定权限管理组件接管Kafka集群的权限管理;
[0011] 步骤102.Kafka集群服务端基于扩展的认证授权服务配置文件,同时开启所述第一认证机制和第二认证机制的登录认证模式;
[0012] 步骤103.所述指定权限管理组件中的用户信息同步组件分别从所述第一认证机制和第二认证机制对应的用户信息存储位置同步用户信息到所述指定权限管理组件的安全访问策略数据库。
[0013] 进一步地,所述指定权限管理组件为Ranger权限管理组件,所述用户信息同步组件为Ranger UserSync组件;所述安全访问策略数据库为Ranger管理组件用于存储用户安全访问策略的数据库即Ranger Admin数据库;
[0014] 所述第二认证机制为盐化挑战响应身份认证机制SCRAM;所述第二认证机制对应的用户信息以SCRAM凭证的形式存储于Zookeeper集群当中。
[0015] 进一步地,所述第一认证机制为通用安全服务应用程序接口GSSAPI;所述第一认证机制对应的用户信息存储于轻型目录访问协议LDAP服务模块当中。
[0016] 进一步地,所述用户信息同步组件同步用户信息的方法为:
[0017] 继承或直接实现所述用户信息同步组件Ranger UserSync中用于同步外部用户和用户组信息的接口,通过该接口定时或基于变化触发执行用户或用户组信息的同步任务。
[0018] 进一步地,所述Kafka集群基于修改的有关权限管理配置文件中的sasl.enabled.mechanisms配置项,同时开启GSSAPI和SCRAM两种认证机制;
[0019] 所述Kafka集群基于修改的有关权限管理配置文件中authorizer.class.name配置项,以Ranger的权限管理类RangerKafkaAuthorizer类来替换Kafka默认的SimpleAclAuthorizer类,从而使Ranger接管Kafka集群的权限管理能力;
[0020] Kafka集群服务端基于扩展的认证授权服务配置文件即kafka_jaas_conf文件中的KafkaServer配置项,同时开启所述第一认证机制和第二认证机制的登录认证模式。
[0021] 图2为本公开一实施例提供的一种Kafka集群多类型权限管理装置结构示意图,该装置200中的各功能模块可以采用软件、硬件或软硬件相结合的方式实现。当多个硬件设备共同实施本公开的技术方案时,由于各硬件设备之间相互协作的目的是共同实现本发明目的,一方的动作和处理结果确定了另一方的动作执行的时机及可能获得的结果,因此,可视为各执行主体之间具有相互协作关系,各执行主体之间具有相互指挥和控制关系。该装置200包括:
[0022] Kafka权限管理模块210,用于基于修改的有关权限管理配置文件,开启第一认证机制和第二认证机制,以及调用指定权限管理组件接管Kafka集群的权限管理;以及基于扩展的认证授权服务配置文件,同时开启所述第一认证机制和第二认证机制的登录认证模式;
[0023] 指定权限管理组件211,用于通过用户信息同步组件分别从所述第一认证机制和第二认证机制对应的用户信息存储位置同步用户信息到安全访问策略数据库。
[0024] 进一步地,所述指定权限管理组件211通过继承或直接实现所述用户信息同步组件Ranger UserSync中用于同步外部用户和用户组信息的接口,定时或基于变化触发执行用户或用户组信息的同步任务。
[0025] 进一步地,所述Kafka权限管理模块210基于修改的有关权限管理配置文件中的sasl.enabled.mechanisms配置项,同时开启GSSAPI和SCRAM两种认证机制;基于修改的有关权限管理配置文件中authorizer.class.name配置项,以Ranger的权限管理类RangerKafkaAuthorizer类来替换Kafka默认的SimpleAclAuthorizer类,从而使Ranger权限管理组件接管Kafka集群的权限管理能力;基于扩展的认证授权服务配置文件即kafka_jaas_conf文件中的KafkaServer配置项,同时开启所述第一认证机制和第二认证机制的登录认证模式。
[0026] 图3为本公开一实施例提供的一种电子设备结构示意图,该设备300包括:诸如中央处理单元(CPU)的处理器310、通信总线320、通信接口340以及存储介质330。其中,处理器310与存储介质330可以通过通信总线320相互通信。存储介质330内存储有计算机程序,当该计算机程序被处理器310执行时即可实现本公开提供的方法的各步骤。
[0027] 本公开通过对扩展Kafka集群的权限管理组件,使得权限管理组件能够从多种认证机制对应的用户信息存储位置同步用户信息到权限管理组件的安全访问策略数据库。基于扩展Kafka的配置和扩展权限管理组件,实现了基于一种权限管理组件支持多种认证机制的统一的用户权限管理框架,支持无缝对接使用不同SASL机制的Kafka生产或消费应用程序,提高Kafka系统的可扩展性和易用性。

附图说明

[0028] 为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。
[0029] 图1为本公开实施例提供的Kafka集群多类型权限管理方法步骤流程图;
[0030] 图2为本公开一实施例提供的一种Kafka集群多类型权限管理装置结构示意图;
[0031] 图3为本公开一实施例提供的一种电子设备结构示意图;
[0032] 图4为本公开一实施例中基于Ranger实现多种SASL认证机制的统一的用户权限管理框架的示意图;
[0033] 图5为本公开一实施例所采用的Kafka集群和Zookeeper集群的组网结构示意图;
[0034] 图6为本公开一实施例中向Kafka新增采用SCRAM认证机制的用户的步骤流程图;
[0035] 图7为本公开一实施例Ranger UserSync同时实现存储于LDAP和存储于Zookeeper中的用户信息同步的步骤流程图。

具体实施方式

[0036] 在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
[0037] 应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0038] 产品化的Kafka集群亟需同时支持多种SASL认证机制,目前由于缺少同一的用户权限管理方案,无法无缝对接使用不同SASL机制的Kafka生产或消费应用程序,易用性差,难以进行客户与厂商、厂商与厂商之间的产品化对接与应用。
[0039] 本公开一实施例通过对Ranger进行改造,提供一种基于Ranger实现Kafka集群支持多种认证机制的权限管理方法,例如同时支持SASL/GSSAPI(Kerberos)和SASL/SCRAM两种认证机制,从而实现基于Ranger的统一的用户权限管理框架,支持无缝对接使用不同SASL机制的Kafka生产或消费应用程序,提高Kafka系统的可扩展性和易用性。
[0040] 本公开一实施例通过对Ranger进行改造,使其能支持自动同步SASL/SCRAM认证凭证中用户信息(包括用户和用户组信息)的能力。SASL/SCRAM认证凭证的默认存储位置为Zookeeper集群,上层权限管理模块创建认证凭证之后,通过改造后的Ranger自动同步认证凭证中的用户信息,并将用户信息持久化到Ranger Admin数据库(Database,DB)中,从而同时支持GSSAPI和SCRAM两种认证机制的用户统一管理。
[0041] 图4为本公开一实施例中基于Ranger实现多种SASL认证机制的统一的用户权限管理框架的示意图,该实施例中Kafka集群同时支持GSSAPI和SCRAM两种认证机制。GSSAPI认证机制下,用户信息存储在LDAP服务模块当中。SCRAM认证机制下,用户信息存储在Zookeeper集群当中。Ranger权限管理组件分别从LDAP服务模块和Zookeeper集群当中同步用户信息并将用户信息持久化到Ranger Admin数据库当中。
[0042] 为了实现由Ranger权限管理组件接管Kafka集群的权限管理,需要修改Kafka配置文件中有关权限管理的配置项,使Ranger权限管理组件接管生产者和消费者的权限控制能力。虽然生产者和消费者都是直接与Kafka通信,但由于Ranger权限管理组件接管了Kafka中的权限控制类Authorizer,所以所有的请求都会先经过Ranger权限管理组件进行权限查验,有权限才会放行,无权限直接返回未授权提示。
[0043] Kafka集群依赖zookeeper保存元数据信息以及进行控制器controller选举等。上层权限管理模块通过封装Ranger接口,对外提供权限管理能力;通过封装LDAP服务接口,对外提供用户管理能力。Ranger原生支持自动从LDAP服务同步用户信息,并依赖DB进行持久化。
[0044] 图5为本公开一实施例所采用的Kafka集群和Zookeeper集群的组网结构示意图,生产者和消费者通过代理者Broker实现消息的订阅与分发,为使Kafka集群同时支持GSSAPI和SCRAM两种认证机制,需要扩展Broker的相关配置。
[0045] 表1扩展broker相关配置:
[0046]
[0047] 其中,sasl.enabled.mechanisms配置项用于配置Kafka开启的SASL认证机制,该配置项可输入多个值。为实现使Kafka同时支持GSSAPI和SCRAM两种认证机制的目的,本公共实施例通过修改该配置项来使Kafka同时支持GSSAPI和SCRAM两种认证机制。
[0048] authorizer.class.name配置项用于指定Kafka所使用的权限管理控制类。在默认情况下,Kafka采用默认原生的权限管理控制类即kafka.security.auth.SimpleAclAuthorizer类来实现权限管理。本公开实施例通过修改该配置,以Ranger的权限管理类RangerKafkaAuthorizer类来替换Kafka默认的SimpleAclAuthorizer类,从而使Ranger接管Kafka集群的权限管理能力。
[0049] Kafka采用Java语言编写,Java认证和授权服务(Java Authentication and Authorization Service,JAAS)是java内置的功能,Kafka的JAAS对应的配置文件为kafka_jaas_conf,该配置文件的内容主要包括:JAAS认证所使用的认证方式(如GSSAPI(Kerberos)、SCRAM等),以及使用该认证方式时需要用到的keytab文件、principal或者用户名、密码等信息。
[0050] 本公开实施例对Kafka集群服务端的JAAS的配置文件中的KafkaServer配置项进行了扩展,通过修改该配置使得Kafka的服支持SCRAM登录认证模式。例如表2黑体字部分所示,通过扩展kafka_jaas_conf配置文件,在KafkaServer配置部分增加SCRAM的ScramLoginModule登录认证模式,并配置了该方式登录认证时使用的用户名和密码。
[0051] 表2扩展kafka_jaas_conf配置文件:
[0052]
[0053] 通过如表2的扩展配置,使得Kafka服务同时支持GSSAPI和SCRAM两种认证机制的登录认证模式。
[0054] 完成上述Kafka的配置后,可通过上层权限管理模块来增加、删除或修改Kafka集群的用户或用户组,增删改的处理流程和步骤类似。以下以增加用户为例,描述具体的处理步骤。
[0055] 图6为本公开一实施例中向Kafka新增采用SCRAM认证机制的用户的步骤流程图,包括:
[0056] 步骤601.创建用户;
[0057] 步骤602.实例化用于连接为Kafka集群提供分布式应用协调服务的Zookeeper集群的KafkaZkClient连接组件;
[0058] 步骤603.实例化用于操作所述Zookeeper集群的AdminZkclient操控组件;
[0059] 步骤604.将新创建的用户的用户名、密码、权限等信息预处理成SCRAM认证机制要求的格式,生成Scram凭证(Credentials);
[0060] 步骤605.获取已有用户信息;
[0061] 例如可通过fetchEntityConfig(entityType,entityName)实现该步骤功能,函数的功能是从zookeeper获取指定实体(这里是用户的)密码,权限。
[0062] 步骤606.将预处理的结果追加到获取的已有用户信息中;
[0063] 步骤607.将追加了新用户的完整的用户信息更新到Zookeeper中;
[0064] 例如可通过changeConfigs(entityType,entityName,configs)语句实现该步骤功能。
[0065] 本公开通过改造Ranger的用户信息同步组件即Ranger UserSync组件,实现自动同步存储于Zookeeper的SCRAM凭证中用户信息的功能。
[0066] Ranger  UserSync提供用于同步外部用户和用户组信息的接口类UserGroupSource和实现该接口的抽象类AbstractUserGroupSource,可以通过继承AbstractUserGroupSource类或者直接实现UserGroupSource接口来自定义外部用户/用户组信息来源。
[0067] 现有的用于同步LDAP用户信息的类LdapUserGroupBuilder就是通过继承AbstractUserGroupSource实现同步Ldap用户/用户组功能的;现有类UnixUserGroupBuilder就是通过实现UserGroupSource实现同步linux用户/用户组功能的。
[0068] 图7为本公开一实施例Ranger UserSync同时实现存储于LDAP和存储于Zookeeper中的用户信息同步的步骤流程图,包括:
[0069] 步骤701.依配置文件实例化ugSink对象,调用init方法完成操作RangerAdmin数据库的准备工作。
[0070] 步骤702.依配置文件实例化ugSource对象,调用init方法完成操作LDAP服务模块的准备工作。
[0071] 步骤703.依配置实例化zkSource对象,调用init方法实例化带有Watcher监听的Zookeeper对象。
[0072] 步骤704.通过定时调用ugSource对象的updateSink方法完成从LDAP服务模块同步用户信息到RangerAdmin数据库的工作。
[0073] 步骤705.通过定时调用zkSource对象的updateSink方法完成将zookeepr中SCRAM凭证中用户信息同步到RangerAdmin数据库的工作。
[0074] 其中,依配置实例化zkSource对象,需要定义ZookeeperUserGroupBuilder类实现UserGroupSource接口,具体实现方法主要init、isChanged、updateSink三个方法。
[0075] Init方法用于实例化zookeeper类,用于与zookeeper进行交互。
[0076] isChanged方法用于基于已经实例化的zookeeper类,监听zookeeper上的scram凭证是否有变更。
[0077] updateSink方法用于依据isChanged的结果,决定是否进行scram凭证信息的同步,当SCRAM凭证发生变化时,从SCRAM凭证中读取用户信息,将用户信息封装成Ranger Admin需要的数据格式,然后Ranger Admin方法触发同步,将用户信息同步到Ranger Admin数据库当中。
[0078] 根据用户需要使用的SASL机制不同,Kafka客户端即Kafka集群的生产者和消费者需要准备不同内容的kafka_client_jaas.conf文件,该文件的示例内容如下(至少存在一种):
[0079] KafkaClient{
[0080] com.sun.security.auth.module.Krb5LoginModule required
[0081] useKeyTab=true
[0082] keyTab="/etc/security/keytabs/kafka.service.keytab"
[0083] storeKey=true
[0084] useTicketCache=false
[0085] serviceName="kafka"
[0086] principal="kafka/node2.hde.h3c.com@HDE.H3C.COM";
[0087] org.apache.kafka.common.security.scram.ScramLoginModule required[0088] username="user1"
[0089] password="user1‑secret";
[0090] };
[0091] Kafka客户端不管采用GSSAPI认证机制还是采用SCRAM认证机制,都需要准备kafka_client_jaas.conf文件。配置分为上下两个部分,上半部分对应GSSAPI认证机制的登录模式,下半部分对应SCRAM认证机制的登录模式。若客户端采用GSSAPI方式,则上述配置可只保留上半部分;若客户端采用SCRAM方式,则上述配置可只保留下半部分黑体字部分。客户端也可以同时支持和使用两种认证机制的登录模式。具体使用哪种方式,可由程序控制。
[0092] 本公开对于Kafka客户端来说,使用方法与之前相同,客户端可实现无感知。而是Kafka服务端能通过统一的用户管理,实现同时支持使用任意一种认证的客户端读写kafka集群。
[0093] Kafka生产者和消费者使用采用相应的认证机制进行权限控制的示例类似,以下以生产者为例,示例使用两种认证机制内容如下:
[0094]
[0095]
[0096] 本公开中所提及的存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non‑Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0097] 应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
[0098] 进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。
[0099] 以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。