Solr的配置,对数据进行加密的配置文件
我怎样才能加密此数据配置部分?:Solr的配置,对数据进行加密的配置文件
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://127.0.0.1;databaseName=emp" user="user" password="user"/>
<document name="reviews">
<entity name="COMMON" query="select id,name from users" >
<field column="id" name="id"/>
<field column="name" name="name"/>
</entity>
</document>
</dataConfig>
基本上,我不想暴露用户名和密码。或者,如果数据配置文件不能被加密(部分或完全),我可以使用SolrJ来索引数据库,这样我就不必配置数据配置文件了吗?也就是说,我使用SolrJ apis传递url和认证参数?
一个更安全的选择,我建议是配置JNDI在您的网络服务器。
如何配置JNDI? This Page解释了如何在Tomcat中这样做。它也可以用于其他流行的网络服务器。
您可以在您的数据配置文件使用JNDI名称如下:
< dataSource name="xyz" jndiName="jdbc/xyz" type="JdbcDataSource"/>
参见:https://wiki.apache.org/solr/SolrConfigXml#System_property_substitution
你可以把它们作为属性文件<solr.home>/conf/solrcore.properties
并在您的数据配置是指他们。所以,你的数据-config.xml文件将是这样的:
<dataSource type="JdbcDataSource"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://${jdbc.host}:${jdbc.port}/${db.name}"
user="${jdbc.username}"
password="${jdbc.password}"/>
这里的一切在${...}
是像solrcore.properties属性:
jdbc.host=http://127.0.0.1
jdbc.port=3306
db.name=emp
...
感谢阿伦 - 但可以在该属性文件进行加密,这样SOLR解密属性值?我们的问题是,我们无法在任何地方的任何文件中以明文形式输入任何密码。 – 2013-02-27 22:41:23
我不知道。尝试询问solr用户邮件列表。 – arun 2013-02-27 23:52:40
你确定Solr DataImportHandler支持jndiName属性吗?我在[列表](http://wiki.apache.org/solr/DataImportHandler#Configuring_JdbcDataSource)中看不到它。 – 2013-02-27 14:13:09
我也没有在这个列表中看到它。我得到的印象是我必须执行以下操作之一:1.通过以下定义的类插入数据源:[link](http://wiki.apache.org/solr/DataImportHandler#datasource) 2.参数化,因为我在这里提到:[链接](http://*.com/questions/12745073/encryption-of-dataconfig-section-fields-in-solr/15123453#15123453)3.使用属性(见下文)但是如何解决我无法在系统的任何地方以明文方式输入密码的问题? – 2013-02-27 22:43:00
@AlexandreRafalovitch我对此很肯定,因为我一直在使用“jndiName”属性来指定项目中的数据库连接凭据。 – Mavellin 2013-02-28 03:59:31