我正在尝试将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,但它仍然没有帮助。
答案 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