如何在ANT属性文件中安全地存储数据库连接属性

时间:2018-06-19 10:46:43

标签: security ant database-connection

我正在尝试创建一个ANT脚本,以便为多个环境自动执行某些数据库部署。我已经让脚本工作了,它将事情部署到SQL实例。

但是,由于运行环境的性质以及由于多个安全要求,我需要确保安全地存储连接属性。

理想情况下,在运行ant任务时,密码将永久保持加密/模糊,并且仅在内存中进行解析/解码(以避免任何竞争条件漏洞)。话虽如此,我愿意接受满足类似要求的其他建议,即如果可能的话,不提供纯文本密码。

我对ANT很陌生,所以我缺乏经验来对行业认可的实现这些要求的方式做出正确判断。

我查看了ANT文档,但找不到任何可能表明某种形式的加密/解密任务的内容。

这是我到目前为止所做的。

settings.prop

<project name="MyProject">
    <property name="sql.address" value="127.0.0.1" />
    <property name="sql.username" value="dbUser" />
    <property name="sql.password" value="dbPassword" />
    <property name="sql.database" value="db" />
</project>

db_up.xml

<project name="MyProject" default="compile">
    <include buildfile="settings.prop">
    <property name="sql.connectionString" value="Provider=SQLOLEDB;Server=${sql.address}; User Name=${sql.username};Password=${sql.password};Initial Catalog=${sql.database};">
    <target name="deploy">
        <echo message="Connecting to SQL server and creating database.">
        <foreach item="File" property="sql.script">
            <in>
                <items>
                    <include name=".\create_database.sql">
                    <include name=".\create_first_table.sql">
                    <include name=".\create_second_table.sql">
                </items>
            </in>
            <do>
                <echo message="* Executing ${path::get-file-name(sql.script)}">
                <sql connstring="${sql.connectionString}" delimiter="GO" delimstyle="Line" batch="false" source="${sql.script}">
            </do>
        </foreach>
    </target>
</project>

0 个答案:

没有答案