Apache Ignite的自定义安全插件

时间:2017-09-11 08:06:24

标签: java ignite

我正在尝试将Apache Ignite用作内存数据库 为了启用安全性,我通过以下链接http://smartkey.co.uk/development/securing-an-apache-ignite-cluster/

创建了自己的安全插件

以下是我的实施细节

public class IgniteSecurityConfiguration implements PluginConfiguration{
        public class<? extends PluginProvider> providerClass(){
          return IgniteSecurityProvider.class;
        }
    }
public class IgniteSecurityProvider implements PluginProvider{
    @Override
    public IgnitePlugin plugin(){
      return new CASCachePlugin();
    }
} 

    public Object createComponent(PluginContext pluginContext, Class aClass){
       if(aClass.isAssignableFrom(GridSecuriytProcessor.class)){
       return new PasswordSecurityProcessor();
    } else {return null;}
   }

public class PasswordSecurityProcessor implements GridSecurityProcessor,IgnitePlugin
{
@Override
public SecurityContext authenticateNode(ClusterNode clusterNode, SecurityCredentials securityCredentials){
   return new SecurityContext(){
         public SecuritySubject subject(){
           return new SecuritySubjext(){
             //implement methods
           };
         }
        //other implementation methods
    };
}

使用examples / config / example-ignite.xml

开始点火时出现异常
  

引起:class org.apache.ignite.IgniteCheckedException:无法启动SPI:TcpDiscoverySpi
  在org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:300)
  ...
  ...
  引发者:class org.apache.ignite.spi.IgniteSpiException:无法验证本地节点(将关闭本地节点)。
  在org.apache.ignite.spi.discovery.tcp.ServerImpl.localAuthentication(ServerImpl.java:975)
  在org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:863)
  .....
  由类org.apache.ignite.IgniteCheckedException引起:无法序列化objext:com.x.x.x.PasswordSecurityProcessor
  在org.apache.ignite.marshaller.jdk.JdkMarshller.marshl0(JDkMarahsller.java:85)

对我缺少的内容有任何想法吗? 尝试使用PasswordSecurityProcessor类来实现Serializable,但它仍然没有帮助。

3 个答案:

答案 0 :(得分:4)

Ignite不提供开箱即用的安全功能,您需要为此实现一个插件。这是一篇关于此的好博客,您可以将其作为示例使用:http://smartkey.co.uk/development/securing-an-apache-ignite-cluster/

要获得安全支持,您需要查看基于Ignite构建的商业产品: https://docs.gridgain.com/docs/security-and-audit

答案 1 :(得分:2)

您可以安装插件。我希望您了解插件安装的更改,并且需要将META-INF / services / your.plugin.Provider条目添加到插件jar中以激活插件。

如果配置顺利,您将能够在节点启动日志中看到该插件。对于任何错误,请将其粘贴到此处或在Apache Ignite Users社区中询问您的查询。您可以在类似的问题中找到答案。

答案 2 :(得分:0)

问这个问题已经有一段时间了,但是我想为新的Apache Ignite版本回答它。这适用于Apache Ignite v.2.7.0及更高版本。

Apache Ignite的开源版本不提供此类安全功能。既可以自己实现它,也可以使用商业Gridgain发行版。

Here是实现自定义插件的步骤。

一个人需要实现 GridSecurityProcessor ,该身份将用于验证加入节点。

此博客提供了编写自定义安全插件的详细步骤。

https://www.bugdbug.com/post/how-to-secure-apache-ignite-cluster