13.9. 数据源安全性
数据源安全指的是加密或模糊处理数据源连接的密码。这些密码可以以纯文本形式存储在配置文件中,但这代表了安全风险。
数据源安全性的首选解决方案是使用安全域或密码库。以下是每个示例。
使用安全域保护数据源
定义了数据源的安全域。
<security-domain name="DsRealm" cache-type="default"> <authentication> <login-module code="ConfiguredIdentity" flag="required"> <module-option name="userName" value="sa"/> <module-option name="principal" value="sa"/> <module-option name="password" value="sa"/> </login-module> </authentication> </security-domain>
注意
如果安全域将与多个数据源一起使用,则安全域中应禁用缓存。这可以通过将 cache-type
属性的值设置为 none
或删除属性 altoget 来实现。但是,如果需要缓存,则应为每个数据源使用单独的安全域。
然后,数据源配置引用 DsRealm
安全域。
<datasources> <datasource jndi-name="java:jboss/datasources/securityDs" pool-name="securityDs"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> <driver>h2</driver> <new-connection-sql>select current_user()</new-connection-sql> <security> <security-domain>DsRealm</security-domain> </security> </datasource> </datasources>
有关使用安全域的更多信息,请参阅 如何配置身份管理 指南。
使用密码 Vault 保护数据源
<security> <user-name>admin</user-name> <password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</password> </security>
有关使用密码 Vault 的更多信息,请参阅如何配置服务器安全指南。