Интегрируйте AWS secret Manager с серверами Jboss и Tomcat для получения учетных данных базы данных.

Я развернул файлы WAR проекта на серверах Tomcat и Jboss, а источник базы данных извлекается через JNDI.

Ниже приведен пример конфигурации БД, определенный в серверных контейнерах. У меня есть жестко закодированные учетные данные базы данных в этих файлах.

Конфигурация базы данных Jboss 7 определена в XML-файле конфигурации

<datasources>
                <datasource jndi-name="java:/test" pool-name="test" statistics-enabled="true">
                    <connection-url>jdbc:mysql://localhost/test?zeroDateTimeBehavior=convertToNull</connection-url>
                    <driver>mysql</driver>
                    <pool>
                        <min-pool-size>5</min-pool-size>
                        <max-pool-size>60</max-pool-size>
                    </pool>
                    <security>
                        <user-name>abc</user-name>
                        <password>abc123</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                        <validate-on-match>true</validate-on-match>
                        <background-validation>false</background-validation>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                    </validation>
                    <timeout>
                        <blocking-timeout-millis>5000</blocking-timeout-millis>
                        <idle-timeout-minutes>35</idle-timeout-minutes>
                        <query-timeout>300</query-timeout>
                    </timeout>
                </datasource>
 <datasources>

Конфигурации базы данных Tomcat 8 в conf/context.xml

 <Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

<Resource name="datasource/test" auth="Container"
                type="com.mchange.v2.c3p0.ComboPooledDataSource"
                    factory="org.apache.naming.factory.BeanFactory"
                        user="abc"
                        password="abc123"
                        jdbcUrl="jdbc:mysql://localhost:3306/jacplus"
                        driverClass="com.mysql.jdbc.Driver"
                        minPoolSize="2"
                        initialPoolSize="30"
                        maxPoolSize="50"
                        idleConnectionTestPeriod="600"
                        acquireRetryAttempts="30"/>
                        
 </Context>

Из соображений безопасности мне потребовалось переместить эти жестко запрограммированные учетные данные в диспетчер секретов AWS и получить их во время выполнения. Во всех сообщениях, которые я видел, упоминается использование API/SDK непосредственно из кода, ни один из найденных мною сообщений не говорит об интеграции с сервером.

Мой вопрос: есть ли способ интегрировать менеджер секретов AWS с серверами приложений tomcat и JBoss и использовать источник данных в качестве JNDI?


person Niranga Sandaruwan    schedule 02.07.2021    source источник